X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=urcu%2Fstatic%2Fwfstack.h;h=018a1213b525d2266c6187da7b8fffd03dc94e43;hb=c97c6ce56f28f27216103386eef2f40aeb441645;hp=cd00de64e2880887ac27cef99b23ea0db1996584;hpb=07c2a4fd64d456aec094e60c41a9287aa6ce2a6b;p=urcu.git diff --git a/urcu/static/wfstack.h b/urcu/static/wfstack.h index cd00de6..018a121 100644 --- a/urcu/static/wfstack.h +++ b/urcu/static/wfstack.h @@ -9,7 +9,7 @@ * TO BE INCLUDED ONLY IN LGPL-COMPATIBLE CODE. See urcu/wfstack.h for * linking dynamically with the userspace rcu library. * - * Copyright 2010 - Mathieu Desnoyers + * Copyright 2010-2012 - Mathieu Desnoyers * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -47,9 +47,10 @@ extern "C" { * Stack implementing push, pop, pop_all operations, as well as iterator * on the stack head returned by pop_all. * - * Wait-free operations: cds_wfs_push, __cds_wfs_pop_all. - * Blocking operations: cds_wfs_pop, cds_wfs_pop_all, iteration on stack - * head returned by pop_all. + * Wait-free operations: cds_wfs_push, __cds_wfs_pop_all, cds_wfs_empty, + * cds_wfs_first. + * Blocking operations: cds_wfs_pop, cds_wfs_pop_all, cds_wfs_next, + * iteration on stack head returned by pop_all. * * Synchronization table: * @@ -283,7 +284,7 @@ _cds_wfs_pop_all_blocking(struct cds_wfs_stack *s) } /* - * cds_wfs_first_blocking: get first node of a popped stack. + * cds_wfs_first: get first node of a popped stack. * * Content written into the node before enqueue is guaranteed to be * consistent, but no other memory ordering is ensured. @@ -291,9 +292,11 @@ _cds_wfs_pop_all_blocking(struct cds_wfs_stack *s) * Used by for-like iteration macros in urcu/wfstack.h: * cds_wfs_for_each_blocking() * cds_wfs_for_each_blocking_safe() + * + * Returns NULL if popped stack is empty, top stack node otherwise. */ static inline struct cds_wfs_node * -_cds_wfs_first_blocking(struct cds_wfs_head *head) +_cds_wfs_first(struct cds_wfs_head *head) { if (___cds_wfs_end(head)) return NULL; @@ -309,6 +312,9 @@ _cds_wfs_first_blocking(struct cds_wfs_head *head) * Used by for-like iteration macros in urcu/wfstack.h: * cds_wfs_for_each_blocking() * cds_wfs_for_each_blocking_safe() + * + * Returns NULL if reached end of popped stack, non-NULL next stack + * node otherwise. */ static inline struct cds_wfs_node * _cds_wfs_next_blocking(struct cds_wfs_node *node)