X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=urcu%2Frculfqueue.h;h=1582694e92abbcfc5bfc8104f2016fb480f41aff;hb=7618919ae496bda84a2efa4f2ad0abe569892a9e;hp=757d133028357265ac980f30cecee5124cbff2e4;hpb=e17d9985aeb7eab28f3ab1ba5a3076b49d504958;p=userspace-rcu.git diff --git a/urcu/rculfqueue.h b/urcu/rculfqueue.h index 757d133..1582694 100644 --- a/urcu/rculfqueue.h +++ b/urcu/rculfqueue.h @@ -34,31 +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; - struct cds_lfq_node_rcu *tail; - 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. * @@ -67,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.