projects
/
urcu.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix int->long and keep a reader count of 1 in the global GP variable
[urcu.git]
/
urcu.c
diff --git
a/urcu.c
b/urcu.c
index 9fde6238f695b06db846866a704f9ed595bd6d0c..d4a06844885cde3da2d03092e3e9c45a939e0438 100644
(file)
--- a/
urcu.c
+++ b/
urcu.c
@@
-19,17
+19,21
@@
pthread_mutex_t urcu_mutex = PTHREAD_MUTEX_INITIALIZER;
pthread_mutex_t urcu_mutex = PTHREAD_MUTEX_INITIALIZER;
-/* Global grace period counter */
-int urcu_gp_ctr;
+/*
+ * Global grace period counter.
+ * Contains the current RCU_GP_CTR_BIT.
+ * Also has a RCU_GP_CTR_BIT of 1, to accelerate the reader fast path.
+ */
+long urcu_gp_ctr = RCU_GP_COUNT;
-
int
__thread urcu_active_readers;
+
long
__thread urcu_active_readers;
/* Thread IDs of registered readers */
#define INIT_NUM_THREADS 4
struct reader_data {
pthread_t tid;
/* Thread IDs of registered readers */
#define INIT_NUM_THREADS 4
struct reader_data {
pthread_t tid;
-
int
*urcu_active_readers;
+
long
*urcu_active_readers;
};
#ifdef DEBUG_YIELD
};
#ifdef DEBUG_YIELD
@@
-147,7
+151,7
@@
void synchronize_rcu(void)
debug_yield_write();
switch_qparity();
debug_yield_write();
debug_yield_write();
switch_qparity();
debug_yield_write();
- internal_urcu_lock();
+ internal_urcu_
un
lock();
debug_yield_write();
}
debug_yield_write();
}
This page took
0.023621 seconds
and
4
git commands to generate.