projects
/
urcu.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
rename internal_rcu_lock() into mutex_lock/unlock(&rcu_gp_lock)
[urcu.git]
/
urcu-qsbr.c
diff --git
a/urcu-qsbr.c
b/urcu-qsbr.c
index 3d576b57441eac3c318f6af6fea2fab7d362ef7d..1ac553faefdf20ba1f775fe3af1fd49fd2e698f2 100644
(file)
--- a/
urcu-qsbr.c
+++ b/
urcu-qsbr.c
@@
-39,7
+39,7
@@
void __attribute__((destructor)) rcu_exit(void);
void __attribute__((destructor)) rcu_exit(void);
-static pthread_mutex_t rcu_
mutex
= PTHREAD_MUTEX_INITIALIZER;
+static pthread_mutex_t rcu_
gp_lock
= PTHREAD_MUTEX_INITIALIZER;
int gp_futex;
int gp_futex;
@@
-61,18
+61,18
@@
unsigned int __thread rand_yield;
static LIST_HEAD(registry);
static LIST_HEAD(registry);
-static void
internal_rcu_lock(void
)
+static void
mutex_lock(pthread_mutex_t *mutex
)
{
int ret;
#ifndef DISTRUST_SIGNALS_EXTREME
{
int ret;
#ifndef DISTRUST_SIGNALS_EXTREME
- ret = pthread_mutex_lock(
&rcu_
mutex);
+ ret = pthread_mutex_lock(mutex);
if (ret) {
perror("Error in pthread mutex lock");
exit(-1);
}
#else /* #ifndef DISTRUST_SIGNALS_EXTREME */
if (ret) {
perror("Error in pthread mutex lock");
exit(-1);
}
#else /* #ifndef DISTRUST_SIGNALS_EXTREME */
- while ((ret = pthread_mutex_trylock(
&rcu_
mutex)) != 0) {
+ while ((ret = pthread_mutex_trylock(mutex)) != 0) {
if (ret != EBUSY && ret != EINTR) {
printf("ret = %d, errno = %d\n", ret, errno);
perror("Error in pthread mutex lock");
if (ret != EBUSY && ret != EINTR) {
printf("ret = %d, errno = %d\n", ret, errno);
perror("Error in pthread mutex lock");
@@
-83,11
+83,11
@@
static void internal_rcu_lock(void)
#endif /* #else #ifndef DISTRUST_SIGNALS_EXTREME */
}
#endif /* #else #ifndef DISTRUST_SIGNALS_EXTREME */
}
-static void
internal_rcu_unlock(void
)
+static void
mutex_unlock(pthread_mutex_t *mutex
)
{
int ret;
{
int ret;
- ret = pthread_mutex_unlock(
&rcu_
mutex);
+ ret = pthread_mutex_unlock(mutex);
if (ret) {
perror("Error in pthread mutex unlock");
exit(-1);
if (ret) {
perror("Error in pthread mutex unlock");
exit(-1);
@@
-160,7
+160,7
@@
static void wait_for_quiescent_state(void)
#if (BITS_PER_LONG < 64)
/*
#if (BITS_PER_LONG < 64)
/*
- * called with rcu_
mutex
held.
+ * called with rcu_
gp_lock
held.
*/
static void switch_next_rcu_qparity(void)
{
*/
static void switch_next_rcu_qparity(void)
{
@@
-187,7
+187,7
@@
void synchronize_rcu(void)
if (was_online)
STORE_SHARED(rcu_reader.ctr, 0);
if (was_online)
STORE_SHARED(rcu_reader.ctr, 0);
-
internal_rcu_lock(
);
+
mutex_lock(&rcu_gp_lock
);
switch_next_rcu_qparity(); /* 0 -> 1 */
switch_next_rcu_qparity(); /* 0 -> 1 */
@@
-227,7
+227,7
@@
void synchronize_rcu(void)
*/
wait_for_quiescent_state(); /* Wait readers in parity 1 */
*/
wait_for_quiescent_state(); /* Wait readers in parity 1 */
-
internal_rcu_unlock(
);
+
mutex_unlock(&rcu_gp_lock
);
/*
* Finish waiting for reader threads before letting the old ptr being
/*
* Finish waiting for reader threads before letting the old ptr being
@@
-253,10
+253,10
@@
void synchronize_rcu(void)
if (was_online)
STORE_SHARED(rcu_reader.ctr, 0);
if (was_online)
STORE_SHARED(rcu_reader.ctr, 0);
-
internal_rcu_lock(
);
+
mutex_lock(&rcu_gp_lock
);
STORE_SHARED(rcu_gp_ctr, rcu_gp_ctr + RCU_GP_CTR);
wait_for_quiescent_state();
STORE_SHARED(rcu_gp_ctr, rcu_gp_ctr + RCU_GP_CTR);
wait_for_quiescent_state();
-
internal_rcu_unlock(
);
+
mutex_unlock(&rcu_gp_lock
);
if (was_online)
_STORE_SHARED(rcu_reader.ctr, LOAD_SHARED(rcu_gp_ctr));
if (was_online)
_STORE_SHARED(rcu_reader.ctr, LOAD_SHARED(rcu_gp_ctr));
@@
-298,9
+298,9
@@
void rcu_register_thread(void)
rcu_reader.tid = pthread_self();
assert(rcu_reader.ctr == 0);
rcu_reader.tid = pthread_self();
assert(rcu_reader.ctr == 0);
-
internal_rcu_lock(
);
+
mutex_lock(&rcu_gp_lock
);
list_add(&rcu_reader.head, ®istry);
list_add(&rcu_reader.head, ®istry);
-
internal_rcu_unlock(
);
+
mutex_unlock(&rcu_gp_lock
);
_rcu_thread_online();
}
_rcu_thread_online();
}
@@
-311,9
+311,9
@@
void rcu_unregister_thread(void)
* with a waiting writer.
*/
_rcu_thread_offline();
* with a waiting writer.
*/
_rcu_thread_offline();
-
internal_rcu_lock(
);
+
mutex_lock(&rcu_gp_lock
);
list_del(&rcu_reader.head);
list_del(&rcu_reader.head);
-
internal_rcu_unlock(
);
+
mutex_unlock(&rcu_gp_lock
);
}
void rcu_exit(void)
}
void rcu_exit(void)
This page took
0.023931 seconds
and
4
git commands to generate.