fix: handle EINTR correctly in get_cpu_mask_from_sysfs
[urcu.git] / doc / examples / wfstack / cds_wfs_pop_all_blocking.c
index 52bf0c08106c7861989e2de92ef8c52ccc12c33e..a9cc4ca01cabe83c352b5ab00dc42d2cda35715a 100644 (file)
@@ -1,15 +1,8 @@
+// SPDX-FileCopyrightText: 2013 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
+//
+// SPDX-License-Identifier: MIT
+
 /*
- * Copyright (C) 2013  Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
- *
- * 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;
 }
This page took 0.024305 seconds and 4 git commands to generate.