projects
/
urcu.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
urcu,call_rcu: Cleanup call_rcu_data pointers before use in child
[urcu.git]
/
urcu-bp.c
diff --git
a/urcu-bp.c
b/urcu-bp.c
index 273acb88cf2d1749e57bb840bc6e78ab414ebf1d..2ae3408c25fd42cc6788c6ec8664c91cf9868d87 100644
(file)
--- a/
urcu-bp.c
+++ b/
urcu-bp.c
@@
-24,6
+24,7
@@
*/
#define _GNU_SOURCE
*/
#define _GNU_SOURCE
+#define _LGPL_SOURCE
#include <stdio.h>
#include <pthread.h>
#include <signal.h>
#include <stdio.h>
#include <pthread.h>
#include <signal.h>
@@
-35,11
+36,14
@@
#include <unistd.h>
#include <sys/mman.h>
#include <unistd.h>
#include <sys/mman.h>
+#include "urcu/wfqueue.h"
#include "urcu/map/urcu-bp.h"
#include "urcu/map/urcu-bp.h"
-
#include "urcu/static/urcu-bp.h"
#include "urcu/static/urcu-bp.h"
+
/* Do not #define _LGPL_SOURCE to ensure we can emit the wrapper symbols */
/* Do not #define _LGPL_SOURCE to ensure we can emit the wrapper symbols */
+#undef _LGPL_SOURCE
#include "urcu-bp.h"
#include "urcu-bp.h"
+#define _LGPL_SOURCE
#ifndef MAP_ANONYMOUS
#define MAP_ANONYMOUS MAP_ANON
#ifndef MAP_ANONYMOUS
#define MAP_ANONYMOUS MAP_ANON
@@
-78,6
+82,11
@@
void *mremap(void *old_address, size_t old_size, size_t new_size, int flags)
#define RCU_SLEEP_DELAY 1000
#define ARENA_INIT_ALLOC 16
#define RCU_SLEEP_DELAY 1000
#define ARENA_INIT_ALLOC 16
+/*
+ * Active attempts to check for reader Q.S. before calling sleep().
+ */
+#define RCU_QS_ACTIVE_ATTEMPTS 100
+
void __attribute__((destructor)) rcu_bp_exit(void);
static pthread_mutex_t rcu_gp_lock = PTHREAD_MUTEX_INITIALIZER;
void __attribute__((destructor)) rcu_bp_exit(void);
static pthread_mutex_t rcu_gp_lock = PTHREAD_MUTEX_INITIALIZER;
@@
-364,9
+373,10
@@
end:
assert(!ret);
}
assert(!ret);
}
-void rcu_bp_exit()
+void rcu_bp_exit(
void
)
{
{
- munmap(registry_arena.p, registry_arena.len);
+ if (registry_arena.p)
+ munmap(registry_arena.p, registry_arena.len);
}
/*
}
/*
This page took
0.024212 seconds
and
4
git commands to generate.