doc/examples: Remove urcu-signal example
authorMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mon, 21 Aug 2023 15:57:07 +0000 (11:57 -0400)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mon, 21 Aug 2023 18:14:30 +0000 (14:14 -0400)
Remove the urcu-signal example from documentation.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I6497855e63f39420cb1ffa44e07c2cbf5d39c791

doc/examples/Makefile.am
doc/examples/urcu-flavors/Makefile
doc/examples/urcu-flavors/Makefile.signal [deleted file]
doc/examples/urcu-flavors/signal.c [deleted file]

index 4fcfa2ca8c1da3f6092e18e991661013ece3836d..81691692ed5a77aac6132058bd72f7347642ad55 100644 (file)
@@ -11,12 +11,10 @@ dist_doc_examples_urcu_flavors_DATA = \
        urcu-flavors/Makefile.qsbr \
        urcu-flavors/Makefile.mb \
        urcu-flavors/Makefile.membarrier \
-       urcu-flavors/Makefile.signal \
        urcu-flavors/Makefile.bp \
        urcu-flavors/qsbr.c \
        urcu-flavors/mb.c \
        urcu-flavors/membarrier.c \
-       urcu-flavors/signal.c \
        urcu-flavors/bp.c
 
 dist_doc_examples_DATA = \
index 221d51cde133bab94407dfbc99105053b7f56e00..6738eafb11cf761557fd1a1338f407029d574884 100644 (file)
@@ -8,7 +8,6 @@ all:
        $(AM_V_at)$(MAKE) -f Makefile.qsbr
        $(AM_V_at)$(MAKE) -f Makefile.mb
        $(AM_V_at)$(MAKE) -f Makefile.membarrier
-       $(AM_V_at)$(MAKE) -f Makefile.signal
        $(AM_V_at)$(MAKE) -f Makefile.bp
 
 .PHONY: clean
@@ -16,5 +15,4 @@ clean:
        $(AM_V_at)$(MAKE) -f Makefile.qsbr clean
        $(AM_V_at)$(MAKE) -f Makefile.mb clean
        $(AM_V_at)$(MAKE) -f Makefile.membarrier clean
-       $(AM_V_at)$(MAKE) -f Makefile.signal clean
        $(AM_V_at)$(MAKE) -f Makefile.bp clean
diff --git a/doc/examples/urcu-flavors/Makefile.signal b/doc/examples/urcu-flavors/Makefile.signal
deleted file mode 100644 (file)
index eeebd8c..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-# SPDX-FileCopyrightText: 2013 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
-#
-# SPDX-License-Identifier: MIT
-
-# This makefile is purposefully kept simple to support GNU and BSD make.
-
-EXAMPLE_NAME = signal
-
-SOURCES = $(EXAMPLE_NAME).c
-OBJECTS = $(EXAMPLE_NAME).o
-BINARY = $(EXAMPLE_NAME)
-LIBS = -lurcu-signal
-
-include ../Makefile.examples.template
diff --git a/doc/examples/urcu-flavors/signal.c b/doc/examples/urcu-flavors/signal.c
deleted file mode 100644 (file)
index 62c6cf2..0000000
+++ /dev/null
@@ -1,125 +0,0 @@
-// SPDX-FileCopyrightText: 2013 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
-//
-// SPDX-License-Identifier: LGPL-2.1-or-later
-
-#include <unistd.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <stdint.h>
-#include <inttypes.h>
-
-#include <urcu/urcu-signal.h>  /* Signal-based RCU flavor */
-#include <urcu/rculist.h>      /* List example */
-#include <urcu/compiler.h>     /* For CAA_ARRAY_SIZE */
-
-/*
- * Example showing how to use the signal-based Userspace RCU flavor.
- *
- * This is a mock-up example where updates and RCU traversals are
- * performed by the same thread to keep things simple on purpose.
- */
-
-static CDS_LIST_HEAD(mylist);
-
-struct mynode {
-       uint64_t value;
-       struct cds_list_head node;      /* linked-list chaining */
-       struct rcu_head rcu_head;       /* for call_rcu() */
-};
-
-static
-int add_node(uint64_t v)
-{
-       struct mynode *node;
-
-       node = calloc(sizeof(*node), 1);
-       if (!node)
-               return -1;
-       node->value = v;
-       cds_list_add_rcu(&node->node, &mylist);
-       return 0;
-}
-
-static
-void rcu_free_node(struct rcu_head *rh)
-{
-       struct mynode *node = caa_container_of(rh, struct mynode, rcu_head);
-
-       free(node);
-}
-
-int main(void)
-{
-       uint64_t values[] = { 42, 36, 24, };
-       unsigned int i;
-       int ret;
-       struct mynode *node, *n;
-
-       /*
-        * Each thread need using RCU read-side need to be explicitly
-        * registered.
-        */
-       urcu_signal_register_thread();
-
-       /*
-        * Adding nodes to the linked-list. Safe against concurrent
-        * RCU traversals, require mutual exclusion with list updates.
-        */
-       for (i = 0; i < CAA_ARRAY_SIZE(values); i++) {
-               ret = add_node(values[i]);
-               if (ret)
-                       goto end;
-       }
-
-       /*
-        * We need to explicitly mark RCU read-side critical sections
-        * with rcu_read_lock() and rcu_read_unlock(). They can be
-        * nested. Those are no-ops for the QSBR flavor.
-        */
-       urcu_signal_read_lock();
-
-       /*
-        * RCU traversal of the linked list.
-        */
-       cds_list_for_each_entry_rcu(node, &mylist, node) {
-               printf("Value: %" PRIu64 "\n", node->value);
-       }
-       urcu_signal_read_unlock();
-
-       /*
-        * Removing nodes from linked list. Safe against concurrent RCU
-        * traversals, require mutual exclusion with list updates.
-        */
-       cds_list_for_each_entry_safe(node, n, &mylist, node) {
-               cds_list_del_rcu(&node->node);
-               /*
-                * call_rcu() will ensure that the handler
-                * "rcu_free_node" is executed after a grace period.
-                * call_rcu() can be called from RCU read-side critical
-                * sections.
-                */
-               urcu_signal_call_rcu(&node->rcu_head, rcu_free_node);
-       }
-
-       /*
-        * We can also wait for a quiescent state by calling
-        * synchronize_rcu() rather than using call_rcu(). It is usually
-        * a slower approach than call_rcu(), because the latter can
-        * batch work. Moreover, call_rcu() can be called from a RCU
-        * read-side critical section, but synchronize_rcu() should not.
-        */
-       urcu_signal_synchronize_rcu();
-
-       sleep(1);
-
-       /*
-        * Waiting for previously called call_rcu handlers to complete
-        * before program exits, or in library destructors, is a good
-        * practice.
-        */
-       urcu_signal_barrier();
-
-end:
-       urcu_signal_unregister_thread();
-       return ret;
-}
This page took 0.028791 seconds and 4 git commands to generate.