#include <assert.h>
#include <sys/syscall.h>
#include <sched.h>
+#include <errno.h>
-#include "../arch.h"
-
-/* Make this big enough to include the POWER5+ L3 cacheline size of 256B */
-#define CACHE_LINE_SIZE 4096
+#include <urcu/arch.h>
/* hardcoded number of CPUs */
#define NR_CPUS 16384
}
#endif
+#ifndef DYNAMIC_LINK_TEST
#define _LGPL_SOURCE
-#include "../urcu-qsbr.h"
+#else
+#define debug_yield_read()
+#endif
+#include "urcu-qsbr.h"
struct test_array {
int a;
smp_mb();
for (;;) {
- _rcu_read_lock();
- local_ptr = _rcu_dereference(test_rcu_pointer);
+ rcu_read_lock();
+ local_ptr = rcu_dereference(test_rcu_pointer);
debug_yield_read();
if (local_ptr)
assert(local_ptr->a == 8);
if (unlikely(rduration))
loop_sleep(rduration);
- _rcu_read_unlock();
+ rcu_read_unlock();
nr_reads++;
/* QS each 1024 reads */
if (unlikely((nr_reads & ((1 << 10) - 1)) == 0))
- _rcu_quiescent_state();
+ rcu_quiescent_state();
if (unlikely(!test_duration_read()))
break;
}
for (;;) {
new = test_array_alloc();
new->a = 8;
- old = _rcu_publish_content(&test_rcu_pointer, new);
+ old = rcu_xchg_pointer(&test_rcu_pointer, new);
+ synchronize_rcu();
/* can be done after unlock */
if (old)
old->a = 0;