projects
/
userspace-rcu.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix TLS detection: test with linker, add --disable-compiler-tls
[userspace-rcu.git]
/
urcu-qsbr.c
diff --git
a/urcu-qsbr.c
b/urcu-qsbr.c
index b20d564c5f6799f3ac42d5e53fe4fc331a322cf7..c6a1b18a10a4f84a4d4e76d7b5b6bcdef4bcce6e 100644
(file)
--- a/
urcu-qsbr.c
+++ b/
urcu-qsbr.c
@@
-35,13
+35,15
@@
#include <errno.h>
#include <poll.h>
#include <errno.h>
#include <poll.h>
-#include "urcu/wfqueue.h"
+#include "urcu/wf
c
queue.h"
#include "urcu/map/urcu-qsbr.h"
#define BUILD_QSBR_LIB
#include "urcu/static/urcu-qsbr.h"
#include "urcu-pointer.h"
#include "urcu/tls-compat.h"
#include "urcu/map/urcu-qsbr.h"
#define BUILD_QSBR_LIB
#include "urcu/static/urcu-qsbr.h"
#include "urcu-pointer.h"
#include "urcu/tls-compat.h"
+#include "urcu-die.h"
+
/* Do not #define _LGPL_SOURCE to ensure we can emit the wrapper symbols */
#undef _LGPL_SOURCE
#include "urcu-qsbr.h"
/* Do not #define _LGPL_SOURCE to ensure we can emit the wrapper symbols */
#undef _LGPL_SOURCE
#include "urcu-qsbr.h"
@@
-51,7
+53,7
@@
void __attribute__((destructor)) rcu_exit(void);
static pthread_mutex_t rcu_gp_lock = PTHREAD_MUTEX_INITIALIZER;
static pthread_mutex_t rcu_gp_lock = PTHREAD_MUTEX_INITIALIZER;
-int32_t gp_futex;
+int32_t
rcu_
gp_futex;
/*
* Global grace period counter.
/*
* Global grace period counter.
@@
-70,8
+72,8
@@
unsigned long rcu_gp_ctr = RCU_GP_ONLINE;
DEFINE_URCU_TLS(struct rcu_reader, rcu_reader);
#ifdef DEBUG_YIELD
DEFINE_URCU_TLS(struct rcu_reader, rcu_reader);
#ifdef DEBUG_YIELD
-unsigned int yield_active;
-DEFINE_URCU_TLS(unsigned int, rand_yield);
+unsigned int
rcu_
yield_active;
+DEFINE_URCU_TLS(unsigned int, r
cu_r
and_yield);
#endif
static CDS_LIST_HEAD(registry);
#endif
static CDS_LIST_HEAD(registry);
@@
-82,17
+84,12
@@
static void mutex_lock(pthread_mutex_t *mutex)
#ifndef DISTRUST_SIGNALS_EXTREME
ret = pthread_mutex_lock(mutex);
#ifndef DISTRUST_SIGNALS_EXTREME
ret = pthread_mutex_lock(mutex);
- if (ret) {
- perror("Error in pthread mutex lock");
- exit(-1);
- }
+ if (ret)
+ urcu_die(ret);
#else /* #ifndef DISTRUST_SIGNALS_EXTREME */
while ((ret = pthread_mutex_trylock(mutex)) != 0) {
#else /* #ifndef DISTRUST_SIGNALS_EXTREME */
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");
- exit(-1);
- }
+ if (ret != EBUSY && ret != EINTR)
+ urcu_die(ret);
poll(NULL,0,10);
}
#endif /* #else #ifndef DISTRUST_SIGNALS_EXTREME */
poll(NULL,0,10);
}
#endif /* #else #ifndef DISTRUST_SIGNALS_EXTREME */
@@
-103,10
+100,8
@@
static void mutex_unlock(pthread_mutex_t *mutex)
int ret;
ret = pthread_mutex_unlock(mutex);
int ret;
ret = pthread_mutex_unlock(mutex);
- if (ret) {
- perror("Error in pthread mutex unlock");
- exit(-1);
- }
+ if (ret)
+ urcu_die(ret);
}
/*
}
/*
@@
-116,8
+111,8
@@
static void wait_gp(void)
{
/* Read reader_gp before read futex */
cmm_smp_rmb();
{
/* Read reader_gp before read futex */
cmm_smp_rmb();
- if (uatomic_read(&gp_futex) == -1)
- futex_noasync(&gp_futex, FUTEX_WAIT, -1,
+ if (uatomic_read(&
rcu_
gp_futex) == -1)
+ futex_noasync(&
rcu_
gp_futex, FUTEX_WAIT, -1,
NULL, NULL, 0);
}
NULL, NULL, 0);
}
@@
-157,7
+152,7
@@
static void update_counter_and_wait(void)
for (;;) {
wait_loops++;
if (wait_loops >= RCU_QS_ACTIVE_ATTEMPTS) {
for (;;) {
wait_loops++;
if (wait_loops >= RCU_QS_ACTIVE_ATTEMPTS) {
- uatomic_set(&gp_futex, -1);
+ uatomic_set(&
rcu_
gp_futex, -1);
/*
* Write futex before write waiting (the other side
* reads them in the opposite order).
/*
* Write futex before write waiting (the other side
* reads them in the opposite order).
@@
-178,7
+173,7
@@
static void update_counter_and_wait(void)
if (wait_loops >= RCU_QS_ACTIVE_ATTEMPTS) {
/* Read reader_gp before write futex */
cmm_smp_mb();
if (wait_loops >= RCU_QS_ACTIVE_ATTEMPTS) {
/* Read reader_gp before write futex */
cmm_smp_mb();
- uatomic_set(&gp_futex, 0);
+ uatomic_set(&
rcu_
gp_futex, 0);
}
break;
} else {
}
break;
} else {
This page took
0.025556 seconds
and
4
git commands to generate.