X-Git-Url: https://git.liburcu.org/?p=urcu.git;a=blobdiff_plain;f=urcu%2Fwfstack.h;h=9d693053117ceb93e69034e433f2196a22c3070d;hp=362caccfa568b8631542238e0172e88763faaa44;hb=200d100e05ed8e10c47f971939042f2406df92ef;hpb=711ff0f91fa2270148ec6b36dadad7fb135ee70b diff --git a/urcu/wfstack.h b/urcu/wfstack.h index 362cacc..9d69305 100644 --- a/urcu/wfstack.h +++ b/urcu/wfstack.h @@ -97,10 +97,10 @@ struct cds_wfs_stack { * struct cds_wfs_stack and struct __cds_wfs_stack on any of those two * types. */ -typedef union __attribute__((__transparent_union__)) { +typedef union { struct __cds_wfs_stack *_s; struct cds_wfs_stack *s; -} cds_wfs_stack_ptr_t; +} __attribute__((__transparent_union__)) cds_wfs_stack_ptr_t; #ifdef _LGPL_SOURCE @@ -108,6 +108,7 @@ typedef union __attribute__((__transparent_union__)) { #define cds_wfs_node_init _cds_wfs_node_init #define cds_wfs_init _cds_wfs_init +#define cds_wfs_destroy _cds_wfs_destroy #define __cds_wfs_init ___cds_wfs_init #define cds_wfs_empty _cds_wfs_empty #define cds_wfs_push _cds_wfs_push @@ -146,12 +147,20 @@ typedef union __attribute__((__transparent_union__)) { extern void cds_wfs_node_init(struct cds_wfs_node *node); /* - * cds_wfs_init: initialize wait-free stack. + * cds_wfs_init: initialize wait-free stack (with lock). Pair with + * cds_wfs_destroy(). */ extern void cds_wfs_init(struct cds_wfs_stack *s); /* - * __cds_wfs_init: initialize wait-free stack. + * cds_wfs_destroy: destroy wait-free stack (with lock). Pair with + * cds_wfs_init(). + */ +extern void cds_wfs_destroy(struct cds_wfs_stack *s); + +/* + * __cds_wfs_init: initialize wait-free stack (no lock). Don't pair with + * any destroy function. */ extern void __cds_wfs_init(struct __cds_wfs_stack *s);