X-Git-Url: https://git.liburcu.org/?p=urcu.git;a=blobdiff_plain;f=urcu-call-rcu.h;h=e76a844018f2e24a129ab1e3db957ec90f6cdf40;hp=2c133889fef9b413fefa5fc0e26b003a88adbca0;hb=c1d2c60b1c754815d27f29705d5f2077c0900148;hpb=b57aee663af988b7f686c076ce6aef2a0d2487c8 diff --git a/urcu-call-rcu.h b/urcu-call-rcu.h index 2c13388..e76a844 100644 --- a/urcu-call-rcu.h +++ b/urcu-call-rcu.h @@ -46,6 +46,8 @@ struct call_rcu_data; #define URCU_CALL_RCU_RT 0x1 #define URCU_CALL_RCU_RUNNING 0x2 +#define URCU_CALL_RCU_STOP 0x4 +#define URCU_CALL_RCU_STOPPED 0x8 /* * The rcu_head data structure is placed in the structure to be freed @@ -60,10 +62,10 @@ struct rcu_head { /* * Exported functions */ -void call_rcu_data_init(struct call_rcu_data **crdpp, unsigned long flags); struct call_rcu_data *get_cpu_call_rcu_data(int cpu); pthread_t get_call_rcu_thread(struct call_rcu_data *crdp); -struct call_rcu_data *create_call_rcu_data(unsigned long flags); +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); struct call_rcu_data *get_default_call_rcu_data(void); struct call_rcu_data *get_call_rcu_data(void); @@ -72,6 +74,9 @@ void set_thread_call_rcu_data(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_after_fork_child(void); #ifdef __cplusplus }