1#![doc = include_str!("../README.md")]
2
3use urcu_sys::RcuFlavorApi;
4
5mod bindings {
6 #![allow(warnings)]
7
8 use urcu_sys::{
9 RcuAtFork as urcu_atfork,
10 RcuFlavorApi as rcu_flavor_struct,
11 RcuHead as rcu_head,
12 RcuPollState as urcu_gp_poll_state,
13 };
14
15 include!(concat!(env!("OUT_DIR"), "/bindings.rs"));
16}
17
18pub use bindings::{
19 urcu_qsbr_barrier,
20 urcu_qsbr_call_rcu,
21 urcu_qsbr_defer_barrier,
22 urcu_qsbr_defer_rcu,
23 urcu_qsbr_defer_register_thread,
24 urcu_qsbr_defer_unregister_thread,
25 urcu_qsbr_poll_state_synchronize_rcu,
26 urcu_qsbr_quiescent_state,
27 urcu_qsbr_read_ongoing,
28 urcu_qsbr_register_rculfhash_atfork,
29 urcu_qsbr_register_thread,
30 urcu_qsbr_start_poll_synchronize_rcu,
31 urcu_qsbr_synchronize_rcu,
32 urcu_qsbr_thread_offline,
33 urcu_qsbr_thread_online,
34 urcu_qsbr_unregister_rculfhash_atfork,
35 urcu_qsbr_unregister_thread,
36};
37
38#[allow(clippy::missing_safety_doc)]
39pub unsafe extern "C" fn urcu_qsbr_init() {}
40
41#[allow(clippy::missing_safety_doc)]
42pub unsafe extern "C" fn urcu_qsbr_read_lock() {
43 #[cfg(feature = "debug")]
44 bindings::urcu_qsbr_read_lock();
45}
46
47#[allow(clippy::missing_safety_doc)]
48pub unsafe extern "C" fn urcu_qsbr_read_unlock() {
49 #[cfg(feature = "debug")]
50 bindings::urcu_qsbr_read_unlock();
51}
52
53pub static RCU_API: RcuFlavorApi = RcuFlavorApi {
54 read_lock: Some(urcu_qsbr_read_lock),
55 read_unlock: Some(urcu_qsbr_read_unlock),
56 read_ongoing: Some(urcu_qsbr_read_ongoing),
57 read_quiescent_state: Some(urcu_qsbr_quiescent_state),
58 update_call_rcu: Some(urcu_qsbr_call_rcu),
59 update_synchronize_rcu: Some(urcu_qsbr_synchronize_rcu),
60 update_defer_rcu: Some(urcu_qsbr_defer_rcu),
61 thread_offline: Some(urcu_qsbr_thread_offline),
62 thread_online: Some(urcu_qsbr_thread_online),
63 register_thread: Some(urcu_qsbr_register_thread),
64 unregister_thread: Some(urcu_qsbr_unregister_thread),
65 barrier: Some(urcu_qsbr_barrier),
66 register_rculfhash_atfork: Some(urcu_qsbr_register_rculfhash_atfork),
67 unregister_rculfhash_atfork: Some(urcu_qsbr_unregister_rculfhash_atfork),
68 update_start_poll_synchronize_rcu: Some(urcu_qsbr_start_poll_synchronize_rcu),
69 update_poll_state_synchronize_rcu: Some(urcu_qsbr_poll_state_synchronize_rcu),
70};