X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;ds=sidebyside;f=doc%2Fexamples%2Fwfstack%2Fcds_wfs_pop_all_blocking.c;h=a9cc4ca01cabe83c352b5ab00dc42d2cda35715a;hb=HEAD;hp=52bf0c08106c7861989e2de92ef8c52ccc12c33e;hpb=53a7719131ff381866fd414cdeff4ac3dd354927;p=urcu.git diff --git a/doc/examples/wfstack/cds_wfs_pop_all_blocking.c b/doc/examples/wfstack/cds_wfs_pop_all_blocking.c index 52bf0c0..a9cc4ca 100644 --- a/doc/examples/wfstack/cds_wfs_pop_all_blocking.c +++ b/doc/examples/wfstack/cds_wfs_pop_all_blocking.c @@ -1,15 +1,8 @@ +// SPDX-FileCopyrightText: 2013 Mathieu Desnoyers +// +// SPDX-License-Identifier: MIT + /* - * Copyright (C) 2013 Mathieu Desnoyers - * - * THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED - * OR IMPLIED. ANY USE IS AT YOUR OWN RISK. - * - * Permission is hereby granted to use or copy this program for any - * purpose, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is - * granted, provided the above notices are retained, and a notice that - * the code was modified is included with the above copyright notice. - * * This example shows how to pop all nodes from a wfstack. */ @@ -27,13 +20,13 @@ struct mynode { struct cds_wfs_node node; /* Chaining in stack */ }; -int main(int argc, char **argv) +int main(void) { int values[] = { -5, 42, 36, 24, }; struct cds_wfs_stack mystack; /* Stack */ unsigned int i; int ret = 0; - struct cds_wfs_node *snode; + struct cds_wfs_node *snode, *sn; struct cds_wfs_head *shead; cds_wfs_init(&mystack); @@ -63,15 +56,18 @@ int main(int argc, char **argv) /* * Show the stack content, iterate in reverse order of push, - * from newest to oldest. + * from newest to oldest. Use cds_wfs_for_each_blocking_safe() + * so we can free the nodes as we iterate. */ printf("mystack content:"); - cds_wfs_for_each_blocking(shead, snode) { + cds_wfs_for_each_blocking_safe(shead, snode, sn) { struct mynode *node = caa_container_of(snode, struct mynode, node); printf(" %d", node->value); + free(node); } printf("\n"); end: + cds_wfs_destroy(&mystack); return ret; }