X-Git-Url: https://git.liburcu.org/?p=urcu.git;a=blobdiff_plain;f=urcu-call-rcu.h;h=b109f4e4d16f250b1f5fdcb2e01e196f3539f238;hp=e76a844018f2e24a129ab1e3db957ec90f6cdf40;hb=aee1715b914e5f4ba5003079d5d954ef2209f04e;hpb=9d2614f07691a813a3c560a6c0bcd0a7be854ed5 diff --git a/urcu-call-rcu.h b/urcu-call-rcu.h index e76a844..b109f4e 100644 --- a/urcu-call-rcu.h +++ b/urcu-call-rcu.h @@ -61,21 +61,33 @@ struct rcu_head { /* * Exported functions + * + * Important: see userspace RCU API.txt for call_rcu family of functions + * usage detail, including the surrounding RCU usage required when using + * these primitives. */ -struct call_rcu_data *get_cpu_call_rcu_data(int cpu); -pthread_t get_call_rcu_thread(struct call_rcu_data *crdp); + +void call_rcu(struct rcu_head *head, + void (*func)(struct rcu_head *head)); + struct call_rcu_data *create_call_rcu_data(unsigned long flags, int cpu_affinity); -int set_cpu_call_rcu_data(int cpu, struct call_rcu_data *crdp); +void call_rcu_data_free(struct call_rcu_data *crdp); + struct call_rcu_data *get_default_call_rcu_data(void); -struct call_rcu_data *get_call_rcu_data(void); +struct call_rcu_data *get_cpu_call_rcu_data(int cpu); struct call_rcu_data *get_thread_call_rcu_data(void); +struct call_rcu_data *get_call_rcu_data(void); +pthread_t get_call_rcu_thread(struct call_rcu_data *crdp); + void set_thread_call_rcu_data(struct call_rcu_data *crdp); +int set_cpu_call_rcu_data(int cpu, struct call_rcu_data *crdp); + int create_all_cpu_call_rcu_data(unsigned long flags); -void call_rcu(struct rcu_head *head, - void (*func)(struct rcu_head *head)); -void call_rcu_data_free(struct call_rcu_data *crdp); void free_all_cpu_call_rcu_data(void); + +void call_rcu_before_fork(void); +void call_rcu_after_fork_parent(void); void call_rcu_after_fork_child(void); #ifdef __cplusplus