X-Git-Url: https://git.liburcu.org/?a=blobdiff_plain;f=include%2Furcu%2Furcu-bp.h;h=7eefa0ea70e2eb832e712338890db1e7d4710798;hb=111bda8f5fa6ff4d5d50605ccbe56d9622498ef4;hp=d3d122d0f71df610a0276af0e3e5043a6adf4ee7;hpb=6cd23d474d3b7d3d090652d0d0b9508ab7d1f9f8;p=urcu.git diff --git a/include/urcu/urcu-bp.h b/include/urcu/urcu-bp.h index d3d122d..7eefa0e 100644 --- a/include/urcu/urcu-bp.h +++ b/include/urcu/urcu-bp.h @@ -36,10 +36,7 @@ #include #include - -#ifdef __cplusplus -extern "C" { -#endif +#include #include @@ -56,6 +53,11 @@ extern "C" { * publication headers. */ #include +#include + +#ifdef __cplusplus +extern "C" { +#endif #ifdef _LGPL_SOURCE @@ -140,6 +142,12 @@ extern void *urcu_bp_set_pointer_sym(void **p, void *v); extern void urcu_bp_synchronize_rcu(void); +/* + * RCU grace period polling API. + */ +extern struct urcu_gp_poll_state urcu_bp_start_poll_synchronize_rcu(void); +extern bool urcu_bp_poll_state_synchronize_rcu(struct urcu_gp_poll_state state); + /* * urcu_bp_before_fork, urcu_bp_after_fork_parent and urcu_bp_after_fork_child * should be called around fork() system calls when the child process is not @@ -151,12 +159,14 @@ extern void urcu_bp_after_fork_parent(void); extern void urcu_bp_after_fork_child(void); /* - * In the bulletproof version, the following functions are no-ops. + * In the bulletproof version, thread registration is performed lazily, + * but it can be forced by issuing an explicit urcu_bp_register_thread(). */ -static inline void urcu_bp_register_thread(void) -{ -} +extern void urcu_bp_register_thread(void); +/* + * In the bulletproof version, the following functions are no-ops. + */ static inline void urcu_bp_unregister_thread(void) { }