X-Git-Url: http://git.liburcu.org/?p=urcu.git;a=blobdiff_plain;f=urcu%2Frculfqueue.h;h=1582694e92abbcfc5bfc8104f2016fb480f41aff;hp=b9ed63b5029c0b072aabcb90f93dff1ca3a12db5;hb=7618919ae496bda84a2efa4f2ad0abe569892a9e;hpb=909292c2c03dd468a7d0d4679e227a08170f51a7 diff --git a/urcu/rculfqueue.h b/urcu/rculfqueue.h index b9ed63b..1582694 100644 --- a/urcu/rculfqueue.h +++ b/urcu/rculfqueue.h @@ -34,30 +34,51 @@ struct cds_lfq_queue_rcu; struct cds_lfq_node_rcu { struct cds_lfq_node_rcu *next; + int dummy; }; struct cds_lfq_queue_rcu { - struct cds_lfq_node_rcu *head, *tail, *dummy; - void (*queue_call_rcu)(struct rcu_head *head, - void (*func)(struct rcu_head *head)); + struct cds_lfq_node_rcu *head, *tail; }; #ifdef _LGPL_SOURCE #include -#define cds_lfq_node_init_rcu _cds_lfq_node_init_rcu -#define cds_lfq_init_rcu _cds_lfq_init_rcu -#define cds_lfq_destroy_rcu _cds_lfq_destroy_rcu -#define cds_lfq_enqueue_rcu _cds_lfq_enqueue_rcu -#define cds_lfq_dequeue_rcu _cds_lfq_dequeue_rcu +#define cds_lfq_node_init_rcu_qsbr _cds_lfq_node_init_rcu +#define cds_lfq_init_rcu_qsbr _cds_lfq_init_rcu +#define cds_lfq_destroy_rcu_qsbr _cds_lfq_destroy_rcu +#define cds_lfq_enqueue_rcu_qsbr _cds_lfq_enqueue_rcu +#define cds_lfq_dequeue_rcu_qsbr _cds_lfq_dequeue_rcu + +#define cds_lfq_node_init_rcu_bp _cds_lfq_node_init_rcu +#define cds_lfq_init_rcu_bp _cds_lfq_init_rcu +#define cds_lfq_destroy_rcu_bp _cds_lfq_destroy_rcu +#define cds_lfq_enqueue_rcu_bp _cds_lfq_enqueue_rcu +#define cds_lfq_dequeue_rcu_bp _cds_lfq_dequeue_rcu + +#define cds_lfq_node_init_rcu_memb _cds_lfq_node_init_rcu +#define cds_lfq_init_rcu_memb _cds_lfq_init_rcu +#define cds_lfq_destroy_rcu_memb _cds_lfq_destroy_rcu +#define cds_lfq_enqueue_rcu_memb _cds_lfq_enqueue_rcu +#define cds_lfq_dequeue_rcu_memb _cds_lfq_dequeue_rcu + +#define cds_lfq_node_init_rcu_mb _cds_lfq_node_init_rcu +#define cds_lfq_init_rcu_mb _cds_lfq_init_rcu +#define cds_lfq_destroy_rcu_mb _cds_lfq_destroy_rcu +#define cds_lfq_enqueue_rcu_mb _cds_lfq_enqueue_rcu +#define cds_lfq_dequeue_rcu_mb _cds_lfq_dequeue_rcu + +#define cds_lfq_node_init_rcu_sig _cds_lfq_node_init_rcu +#define cds_lfq_init_rcu_sig _cds_lfq_init_rcu +#define cds_lfq_destroy_rcu_sig _cds_lfq_destroy_rcu +#define cds_lfq_enqueue_rcu_sig _cds_lfq_enqueue_rcu +#define cds_lfq_dequeue_rcu_sig _cds_lfq_dequeue_rcu #else /* !_LGPL_SOURCE */ extern void cds_lfq_node_init_rcu(struct cds_lfq_node_rcu *node); -extern void cds_lfq_init_rcu(struct cds_lfq_queue_rcu *q, - void queue_call_rcu(struct rcu_head *head, - void (*func)(struct rcu_head *head))); +extern void cds_lfq_init_rcu(struct cds_lfq_queue_rcu *q); /* * The queue should be emptied before calling destroy. * @@ -66,13 +87,13 @@ extern void cds_lfq_init_rcu(struct cds_lfq_queue_rcu *q, extern int cds_lfq_destroy_rcu(struct cds_lfq_queue_rcu *q); /* - * Should be called under rcu read lock critical section. + * Acts as a RCU reader. */ extern void cds_lfq_enqueue_rcu(struct cds_lfq_queue_rcu *q, struct cds_lfq_node_rcu *node); /* - * Should be called under rcu read lock critical section. + * Acts as a RCU reader. * * The caller must wait for a grace period to pass before freeing the returned * node or modifying the cds_lfq_node_rcu structure.