X-Git-Url: https://git.liburcu.org/?a=blobdiff_plain;f=urcu%2Fstatic%2Frculfstack.h;fp=urcu%2Fstatic%2Frculfstack.h;h=1df121b461389fbb0b621e6eeefb37c4b4e131eb;hb=e1a3b81e201ccfd019dae3778bd6ba0bd1e545e4;hp=9d69fa736996c4dfc704bbffc88d9f14395344c8;hpb=b194c06ef206b0fcf7f1e646fe7c1e8afa8766ce;p=urcu.git diff --git a/urcu/static/rculfstack.h b/urcu/static/rculfstack.h index 9d69fa7..1df121b 100644 --- a/urcu/static/rculfstack.h +++ b/urcu/static/rculfstack.h @@ -64,9 +64,13 @@ void _cds_lfs_init_rcu(struct cds_lfs_stack_rcu *s) * required if we first read the old head value). This design decision * might be revisited after more throrough benchmarking on various * platforms. + * + * Returns 0 if the stack was empty prior to adding the node. + * Returns non-zero otherwise. */ static inline -void _cds_lfs_push_rcu(struct cds_lfs_stack_rcu *s, struct cds_lfs_node_rcu *node) +int _cds_lfs_push_rcu(struct cds_lfs_stack_rcu *s, + struct cds_lfs_node_rcu *node) { struct cds_lfs_node_rcu *head = NULL; @@ -82,6 +86,7 @@ void _cds_lfs_push_rcu(struct cds_lfs_stack_rcu *s, struct cds_lfs_node_rcu *nod if (old_head == head) break; } + return (int) !!((unsigned long) head); } /*