#include <stdint.h>
#include <inttypes.h>
-#define RCU_SIGNAL /* Signal-based RCU flavor */
-#include <urcu.h>
+#include <urcu/urcu-signal.h> /* Signal-based RCU flavor */
#include <urcu/rculist.h> /* List example */
#include <urcu/compiler.h> /* For CAA_ARRAY_SIZE */
* Each thread need using RCU read-side need to be explicitly
* registered.
*/
- rcu_register_thread();
+ urcu_signal_register_thread();
/*
* Adding nodes to the linked-list. Safe against concurrent
* with rcu_read_lock() and rcu_read_unlock(). They can be
* nested. Those are no-ops for the QSBR flavor.
*/
- rcu_read_lock();
+ urcu_signal_read_lock();
/*
* RCU traversal of the linked list.
cds_list_for_each_entry_rcu(node, &mylist, node) {
printf("Value: %" PRIu64 "\n", node->value);
}
- rcu_read_unlock();
+ urcu_signal_read_unlock();
/*
* Removing nodes from linked list. Safe against concurrent RCU
* call_rcu() can be called from RCU read-side critical
* sections.
*/
- call_rcu(&node->rcu_head, rcu_free_node);
+ urcu_signal_call_rcu(&node->rcu_head, rcu_free_node);
}
/*
* batch work. Moreover, call_rcu() can be called from a RCU
* read-side critical section, but synchronize_rcu() should not.
*/
- synchronize_rcu();
+ urcu_signal_synchronize_rcu();
sleep(1);
* before program exits, or in library destructors, is a good
* practice.
*/
- rcu_barrier();
+ urcu_signal_barrier();
end:
- rcu_unregister_thread();
+ urcu_signal_unregister_thread();
return ret;
}