X-Git-Url: https://git.liburcu.org/?a=blobdiff_plain;f=doc%2Frcu-api.md;h=b305fcfa5bf4cf176a2e1cde1a55b5d75b7b941b;hb=HEAD;hp=ea316d1119028a24d5945ac331f553e87093955a;hpb=dcb9c05a081e2c8d4fe0250f3700e3efb1200cac;p=urcu.git diff --git a/doc/rcu-api.md b/doc/rcu-api.md index ea316d1..b305fcf 100644 --- a/doc/rcu-api.md +++ b/doc/rcu-api.md @@ -1,3 +1,9 @@ + + Userspace RCU API ================= @@ -60,6 +66,31 @@ started: this is not a reader-writer lock. The duration actually waited is called an RCU grace period. +```c +struct urcu_gp_poll_state start_poll_synchronize_rcu(void); +``` + +Provides a handle for checking if a new grace period has started +and completed since the handle was obtained. It returns a +`struct urcu_gp_poll_state` handle that can be used with +`poll_state_synchronize_rcu` to check, by polling, if the +associated grace period has completed. + +`start_poll_synchronize_rcu` must only be called from +registered RCU read-side threads. For the QSBR flavor, the +caller must be online. + + +```c +bool poll_state_synchronize_rcu(struct urcu_gp_poll_state state); +``` + +Checks if the grace period associated with the +`struct urcu_gp_poll_state` handle has completed. If the grace +period has completed, the function returns true. Otherwise, +it returns false. + + ```c void call_rcu(struct rcu_head *head, void (*func)(struct rcu_head *head)); @@ -232,6 +263,8 @@ critical section, or in a section where QSBR threads are online. ```c +void call_rcu_before_fork_parent(void); +void call_rcu_after_fork_parent(void); void call_rcu_after_fork_child(void); ```