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-bp.c
diff --git
a/urcu-bp.c
b/urcu-bp.c
index d841be6351bf8a30368bbe4a57e794f7dc6112af..eda000539b19b01ce582fe098be1d1cc0f1a3b3f 100644
(file)
--- a/
urcu-bp.c
+++ b/
urcu-bp.c
@@
-45,7
+45,7
@@
void __attribute__((destructor)) rcu_bp_exit(void);
void __attribute__((destructor)) rcu_bp_exit(void);
-static pthread_mutex_t rcu_
mutex
= PTHREAD_MUTEX_INITIALIZER;
+static pthread_mutex_t rcu_
gp_lock
= PTHREAD_MUTEX_INITIALIZER;
#ifdef DEBUG_YIELD
unsigned int yield_active;
#ifdef DEBUG_YIELD
unsigned int yield_active;
@@
-78,18
+78,18
@@
static struct registry_arena registry_arena;
static void rcu_gc_registry(void);
static void rcu_gc_registry(void);
-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");
@@
-105,11
+105,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);
@@
-117,7
+117,7
@@
static void internal_rcu_unlock(void)
}
/*
}
/*
- * 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)
{
@@
-165,14
+165,14
@@
void synchronize_rcu(void)
ret = pthread_sigmask(SIG_SETMASK, &newmask, &oldmask);
assert(!ret);
ret = pthread_sigmask(SIG_SETMASK, &newmask, &oldmask);
assert(!ret);
-
internal_rcu_lock(
);
+
mutex_lock(&rcu_gp_lock
);
/* Remove old registry elements */
rcu_gc_registry();
/* All threads should read qparity before accessing data structure
/* Remove old registry elements */
rcu_gc_registry();
/* All threads should read qparity before accessing data structure
- * where new ptr points to. Must be done within
internal_rcu_lock
- *
because it
iterates on reader threads.*/
+ * where new ptr points to. Must be done within
rcu_gp_lock because it
+ * iterates on reader threads.*/
/* Write new ptr before changing the qparity */
smp_mb();
/* Write new ptr before changing the qparity */
smp_mb();
@@
-236,11
+236,11
@@
void synchronize_rcu(void)
wait_for_quiescent_state(); /* Wait readers in parity 1 */
/* Finish waiting for reader threads before letting the old ptr being
wait_for_quiescent_state(); /* Wait readers in parity 1 */
/* Finish waiting for reader threads before letting the old ptr being
- * freed. Must be done within
internal_rcu_lock because it iterates on
- *
reader
threads. */
+ * freed. Must be done within
rcu_gp_lock because it iterates on reader
+ * threads. */
smp_mb();
smp_mb();
-
internal_rcu_unlock(
);
+
mutex_unlock(&rcu_gp_lock
);
ret = pthread_sigmask(SIG_SETMASK, &oldmask, NULL);
assert(!ret);
}
ret = pthread_sigmask(SIG_SETMASK, &oldmask, NULL);
assert(!ret);
}
@@
-355,9
+355,9
@@
void rcu_bp_register(void)
if (rcu_reader)
goto end;
if (rcu_reader)
goto end;
-
internal_rcu_lock(
);
+
mutex_lock(&rcu_gp_lock
);
add_thread();
add_thread();
-
internal_rcu_unlock(
);
+
mutex_unlock(&rcu_gp_lock
);
end:
ret = pthread_sigmask(SIG_SETMASK, &oldmask, NULL);
assert(!ret);
end:
ret = pthread_sigmask(SIG_SETMASK, &oldmask, NULL);
assert(!ret);
This page took
0.0248 seconds
and
4
git commands to generate.