Complete removal of urcu-signal flavor
authorMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mon, 21 Aug 2023 15:52:48 +0000 (11:52 -0400)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mon, 21 Aug 2023 19:22:27 +0000 (15:22 -0400)
This commit completes removal of the urcu-signal flavor.

Users can migrate to liburcu-memb with a kernel implementing the
membarrier(2) system call to have similar read-side performance without
requiring use of a reserved signal, and with improved grace period
performance.

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

14 files changed:
README.md
configure.ac
include/Makefile.am
include/urcu/map/urcu-signal.h [deleted file]
include/urcu/map/urcu.h
include/urcu/static/urcu-signal-nr.h [deleted file]
include/urcu/static/urcu-signal.h [deleted file]
include/urcu/static/urcu.h
include/urcu/urcu-signal.h [deleted file]
include/urcu/urcu.h
src/Makefile.am
src/liburcu-signal.pc.in [deleted file]
src/rculfhash.c
src/urcu.c

index 58db299018deb07f36fbdd1bad863ed35f82b3e0..1f7aaaf258db7118e3900a2e7a740048bb6f63c3 100644 (file)
--- a/README.md
+++ b/README.md
@@ -170,7 +170,6 @@ There are multiple flavors of liburcu available:
   - `memb`,
   - `qsbr`,
   - `mb`,
-  - `signal`,
   - `bp`.
 
 The API members start with the prefix `urcu_<flavor>_`, where
@@ -215,16 +214,6 @@ and reader sides. This results in faster grace-period detection, but
 results in slower reads.
 
 
-### Usage of `liburcu-signal`
-
-  1. `#include <urcu/urcu-signal.h>`
-  2. Link the application with `-lurcu-signal`
-
-NOTE: The `liburcu-signal` flavor is *deprecated* and will be removed in the
-future. It is now identical to `liburcu-mb` at the exception of the symbols and
-public header files. It is therefore slower than previous versions. Users are
-encouraged to migrate to the `liburcu-memb` flavor.
-
 ### Usage of `liburcu-bp`
 
   1. `#include <urcu/urcu-bp.h>`
@@ -274,7 +263,7 @@ the grace period has completed, false otherwise.
 ### Usage of `liburcu-defer`
 
   - Follow instructions for either `liburcu-memb`, `liburcu-qsbr`,
-    `liburcu-mb`, `liburcu-signal`, or `liburcu-bp` above.
+    `liburcu-mb`, or `liburcu-bp` above.
     The `liburcu-defer` functionality is pulled into each of
     those library modules.
   - Provides `urcu_<flavor>_defer_rcu()` primitive to enqueue delayed
@@ -293,7 +282,7 @@ Its API is currently experimental. It may change in future library releases.
 ### Usage of `urcu-call-rcu`
 
   - Follow instructions for either `liburcu-memb`, `liburcu-qsbr`,
-    `liburcu-mb`, `liburcu-signal`, or `liburcu-bp` above.
+    `liburcu-mb`, or `liburcu-bp` above.
     The `urcu-call-rcu` functionality is pulled into each of
     those library modules.
   - Provides the `urcu_<flavor>_call_rcu()` primitive to enqueue delayed
@@ -311,13 +300,6 @@ Its API is currently experimental. It may change in future library releases.
 
 ### Being careful with signals
 
-The `liburcu-signal` library uses signals internally. The signal handler is
-registered with the `SA_RESTART` flag. However, these signals may cause
-some non-restartable system calls to fail with `errno = EINTR`. Care
-should be taken to restart system calls manually if they fail with this
-error. A list of non-restartable system calls may be found in
-`signal(7)`.
-
 Read-side critical sections are allowed in a signal handler,
 except those setup with `sigaltstack(2)`, with `liburcu-memb` and
 `liburcu-mb`. Be careful, however, to disable these signals
index 15055d6ca2f1d639bcc22157310dfc0fa9a8f35b..2807932258549ab93b012862a8063785748a16fa 100644 (file)
@@ -345,7 +345,6 @@ AC_CONFIG_FILES([
        src/liburcu-qsbr.pc
        src/liburcu-mb.pc
        src/liburcu-memb.pc
-       src/liburcu-signal.pc
 ])
 
 AC_CONFIG_FILES([tests/utils/env.sh],[chmod +x tests/utils/env.sh])
index b715bad55cc1ab03f0a6fb3a65561092cba8b64a..c1adfd129af8e349ded1dcedd3092984d3b59e2b 100644 (file)
@@ -38,7 +38,6 @@ nobase_include_HEADERS = \
        urcu/map/urcu-mb.h \
        urcu/map/urcu-memb.h \
        urcu/map/urcu-qsbr.h \
-       urcu/map/urcu-signal.h \
        urcu/pointer.h \
        urcu/rcuhlist.h \
        urcu/rculfhash.h \
@@ -56,8 +55,6 @@ nobase_include_HEADERS = \
        urcu/static/urcu-mb.h \
        urcu/static/urcu-memb.h \
        urcu/static/urcu-qsbr.h \
-       urcu/static/urcu-signal.h \
-       urcu/static/urcu-signal-nr.h \
        urcu/static/wfcqueue.h \
        urcu/static/wfqueue.h \
        urcu/static/wfstack.h \
@@ -91,7 +88,6 @@ nobase_include_HEADERS = \
        urcu/urcu-memb.h \
        urcu/urcu-qsbr.h \
        urcu/urcu_ref.h \
-       urcu/urcu-signal.h \
        urcu/wfcqueue.h \
        urcu/wfqueue.h \
        urcu/wfstack.h \
diff --git a/include/urcu/map/urcu-signal.h b/include/urcu/map/urcu-signal.h
deleted file mode 100644 (file)
index ac6e0cc..0000000
+++ /dev/null
@@ -1,130 +0,0 @@
-// SPDX-FileCopyrightText: 2009 Paul E. McKenney, IBM Corporation.
-// SPDX-FileCopyrightText: 2009 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
-//
-// SPDX-License-Identifier: LGPL-2.1-or-later
-
-/*
- * Userspace RCU header -- name mapping to allow multiple flavors to be
- * used in the same executable.
- *
- * LGPL-compatible code should include this header with :
- *
- * #define _LGPL_SOURCE
- * #include <urcu.h>
- *
- * IBM's contributions to this file may be relicensed under LGPLv2 or later.
- */
-
-#define rcu_read_lock                  urcu_signal_read_lock
-#define _rcu_read_lock                 _urcu_signal_read_lock
-#define rcu_read_unlock                        urcu_signal_read_unlock
-#define _rcu_read_unlock               _urcu_signal_read_unlock
-#define rcu_read_ongoing               urcu_signal_read_ongoing
-#define _rcu_read_ongoing              _urcu_signal_read_ongoing
-#define rcu_quiescent_state            urcu_signal_quiescent_state
-#define _rcu_quiescent_state           _urcu_signal_quiescent_state
-#define rcu_thread_offline             urcu_signal_thread_offline
-#define rcu_thread_online              urcu_signal_thread_online
-#define rcu_register_thread            urcu_signal_register_thread
-#define rcu_unregister_thread          urcu_signal_unregister_thread
-#define rcu_init                       urcu_signal_init
-#define rcu_exit                       urcu_signal_exit
-#define synchronize_rcu                        urcu_signal_synchronize_rcu
-#define rcu_reader                     urcu_signal_reader
-#define rcu_gp                         urcu_signal_gp
-
-#define get_cpu_call_rcu_data          urcu_signal_get_cpu_call_rcu_data
-#define get_call_rcu_thread            urcu_signal_get_call_rcu_thread
-#define create_call_rcu_data           urcu_signal_create_call_rcu_data
-#define set_cpu_call_rcu_data          urcu_signal_set_cpu_call_rcu_data
-#define get_default_call_rcu_data      urcu_signal_get_default_call_rcu_data
-#define get_call_rcu_data              urcu_signal_get_call_rcu_data
-#define get_thread_call_rcu_data       urcu_signal_get_thread_call_rcu_data
-#define set_thread_call_rcu_data       urcu_signal_set_thread_call_rcu_data
-#define create_all_cpu_call_rcu_data   urcu_signal_create_all_cpu_call_rcu_data
-#define free_all_cpu_call_rcu_data     urcu_signal_free_all_cpu_call_rcu_data
-#define call_rcu                       urcu_signal_call_rcu
-#define call_rcu_data_free             urcu_signal_call_rcu_data_free
-#define call_rcu_before_fork           urcu_signal_call_rcu_before_fork
-#define call_rcu_after_fork_parent     urcu_signal_call_rcu_after_fork_parent
-#define call_rcu_after_fork_child      urcu_signal_call_rcu_after_fork_child
-#define rcu_barrier                    urcu_signal_barrier
-
-#define defer_rcu                      urcu_signal_defer_rcu
-#define rcu_defer_register_thread      urcu_signal_defer_register_thread
-#define rcu_defer_unregister_thread    urcu_signal_defer_unregister_thread
-#define rcu_defer_barrier              urcu_signal_defer_barrier
-#define rcu_defer_barrier_thread       urcu_signal_defer_barrier_thread
-#define rcu_defer_exit                 urcu_signal_defer_exit
-
-#define rcu_flavor                     urcu_signal_flavor
-
-#define urcu_register_rculfhash_atfork         \
-               urcu_signal_register_rculfhash_atfork
-#define urcu_unregister_rculfhash_atfork       \
-               urcu_signal_unregister_rculfhash_atfork
-
-#define start_poll_synchronize_rcu     urcu_signal_start_poll_synchronize_rcu
-#define poll_state_synchronize_rcu     urcu_signal_poll_state_synchronize_rcu
-
-
-/* Compat identifiers for prior undocumented multiflavor usage */
-#ifndef URCU_NO_COMPAT_IDENTIFIERS
-
-#define rcu_dereference_sig            urcu_signal_dereference
-#define rcu_cmpxchg_pointer_sig                urcu_signal_cmpxchg_pointer
-#define rcu_xchg_pointer_sig           urcu_signal_xchg_pointer
-#define rcu_set_pointer_sig            urcu_signal_set_pointer
-
-#define rcu_sig_before_fork            urcu_signal_before_fork
-#define rcu_sig_after_fork_parent      urcu_signal_after_fork_parent
-#define rcu_sig_after_fork_child       urcu_signal_after_fork_child
-
-#define rcu_read_lock_sig              urcu_signal_read_lock
-#define _rcu_read_lock_sig             _urcu_signal_read_lock
-#define rcu_read_unlock_sig            urcu_signal_read_unlock
-#define _rcu_read_unlock_sig           _urcu_signal_read_unlock
-#define rcu_read_ongoing_sig           urcu_signal_read_ongoing
-#define _rcu_read_ongoing_sig          _urcu_signal_read_ongoing
-#define rcu_register_thread_sig                urcu_signal_register_thread
-#define rcu_unregister_thread_sig      urcu_signal_unregister_thread
-#define rcu_init_sig                   urcu_signal_init
-#define rcu_exit_sig                   urcu_signal_exit
-#define synchronize_rcu_sig            urcu_signal_synchronize_rcu
-#define rcu_reader_sig                 urcu_signal_reader
-#define rcu_gp_sig                     urcu_signal_gp
-
-#define get_cpu_call_rcu_data_sig      urcu_signal_get_cpu_call_rcu_data
-#define get_call_rcu_thread_sig                urcu_signal_get_call_rcu_thread
-#define create_call_rcu_data_sig       urcu_signal_create_call_rcu_data
-#define set_cpu_call_rcu_data_sig      urcu_signal_set_cpu_call_rcu_data
-#define get_default_call_rcu_data_sig  urcu_signal_get_default_call_rcu_data
-#define get_call_rcu_data_sig          urcu_signal_get_call_rcu_data
-#define get_thread_call_rcu_data_sig   urcu_signal_get_thread_call_rcu_data
-#define set_thread_call_rcu_data_sig   urcu_signal_set_thread_call_rcu_data
-#define create_all_cpu_call_rcu_data_sig       \
-               urcu_signal_create_all_cpu_call_rcu_data
-#define free_all_cpu_call_rcu_data_sig urcu_signal_free_all_cpu_call_rcu_data
-#define call_rcu_sig                   urcu_signal_call_rcu
-#define call_rcu_data_free_sig         urcu_signal_call_rcu_data_free
-#define call_rcu_before_fork_sig               \
-               urcu_signal_call_rcu_before_fork
-#define call_rcu_after_fork_parent_sig urcu_signal_call_rcu_after_fork_parent
-#define call_rcu_after_fork_child_sig  urcu_signal_call_rcu_after_fork_child
-#define rcu_barrier_sig                        urcu_signal_barrier
-
-#define defer_rcu_sig                  urcu_signal_defer_rcu
-#define rcu_defer_register_thread_sig  urcu_signal_defer_register_thread
-#define rcu_defer_unregister_thread_sig        urcu_signal_defer_unregister_thread
-#define rcu_defer_barrier_sig          urcu_signal_defer_barrier
-#define rcu_defer_barrier_thread_sig   urcu_signal_defer_barrier_thread
-#define rcu_defer_exit_sig             urcu_signal_defer_exit
-
-#define rcu_flavor_sig                 urcu_signal_flavor
-
-#define urcu_register_rculfhash_atfork_sig     \
-               urcu_signal_register_rculfhash_atfork
-#define urcu_unregister_rculfhash_atfork_sig   \
-               urcu_signal_unregister_rculfhash_atfork
-
-#endif /* URCU_NO_COMPAT_IDENTIFIERS */
index 62fd5f68fc028384c063f41017ff32d4ca62b614..96c53472f5e60d3c9051b943493dd2590e90c2ad 100644 (file)
@@ -17,8 +17,6 @@
 
 #ifdef RCU_MEMBARRIER
 #include <urcu/map/urcu-memb.h>
-#elif defined(RCU_SIGNAL)
-#include <urcu/map/urcu-signal.h>
 #elif defined(RCU_MB)
 #include <urcu/map/urcu-mb.h>
 #else
diff --git a/include/urcu/static/urcu-signal-nr.h b/include/urcu/static/urcu-signal-nr.h
deleted file mode 100644 (file)
index de3128e..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-// SPDX-FileCopyrightText: 2009 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
-// SPDX-FileCopyrightText: 2009 Paul E. McKenney, IBM Corporation.
-//
-// SPDX-License-Identifier: LGPL-2.1-or-later
-
-#ifndef _STATIC_URCU_SIGNAL_NR_H
-#define _STATIC_URCU_SIGNAL_NR_H
-
-/*
- * Userspace RCU header.
- *
- * IBM's contributions to this file may be relicensed under LGPLv2 or later.
- */
-
-/*
- * The signal number used by the RCU library can be overridden with
- * -DSIGRCU= when compiling the library.
- * Provide backward compatibility for liburcu 0.3.x SIGURCU.
- */
-#ifdef SIGURCU
-#define SIGRCU SIGURCU
-#endif
-
-#ifndef SIGRCU
-#define SIGRCU SIGUSR1
-#endif
-
-#endif /* _STATIC_URCU_SIGNAL_NR_H */
diff --git a/include/urcu/static/urcu-signal.h b/include/urcu/static/urcu-signal.h
deleted file mode 100644 (file)
index 07768b3..0000000
+++ /dev/null
@@ -1,140 +0,0 @@
-// SPDX-FileCopyrightText: 2009 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
-// SPDX-FileCopyrightText: 2009 Paul E. McKenney, IBM Corporation.
-//
-// SPDX-License-Identifier: LGPL-2.1-or-later
-
-#ifndef _URCU_SIGNAL_STATIC_H
-#define _URCU_SIGNAL_STATIC_H
-
-/*
- * Userspace RCU header.
- *
- * TO BE INCLUDED ONLY IN CODE THAT IS TO BE RECOMPILED ON EACH LIBURCU
- * RELEASE. See urcu.h for linking dynamically with the userspace rcu library.
- *
- * IBM's contributions to this file may be relicensed under LGPLv2 or later.
- */
-
-#include <stdlib.h>
-#include <pthread.h>
-#include <unistd.h>
-#include <stdint.h>
-
-#include <urcu/debug.h>
-#include <urcu/config.h>
-#include <urcu/compiler.h>
-#include <urcu/arch.h>
-#include <urcu/system.h>
-#include <urcu/uatomic.h>
-#include <urcu/list.h>
-#include <urcu/futex.h>
-#include <urcu/tls-compat.h>
-#include <urcu/static/urcu-common.h>
-#include <urcu/static/urcu-signal-nr.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * This code section can only be included in LGPL 2.1 compatible source code.
- * See below for the function call wrappers which can be used in code meant to
- * be only linked with the Userspace RCU library. This comes with a small
- * performance degradation on the read-side due to the added function calls.
- * This is required to permit relinking with newer versions of the library.
- */
-
-extern struct urcu_gp urcu_signal_gp;
-
-extern DECLARE_URCU_TLS(struct urcu_reader, urcu_signal_reader);
-
-/*
- * Helper for _rcu_read_lock().  The format of urcu_signal_gp.ctr (as well as
- * the per-thread rcu_reader.ctr) has the lower-order bits containing a count of
- * _rcu_read_lock() nesting, and a single high-order URCU_BP_GP_CTR_PHASE bit
- * that contains either zero or one.  The cmm_barrier() ensures that the accesses in
- * _rcu_read_lock() happen before the subsequent read-side critical section.
- */
-static inline void _urcu_signal_read_lock_update(unsigned long tmp)
-{
-       if (caa_likely(!(tmp & URCU_GP_CTR_NEST_MASK))) {
-               _CMM_STORE_SHARED(URCU_TLS(urcu_signal_reader).ctr, _CMM_LOAD_SHARED(urcu_signal_gp.ctr));
-               cmm_smp_mb();
-       } else
-               _CMM_STORE_SHARED(URCU_TLS(urcu_signal_reader).ctr, tmp + URCU_GP_COUNT);
-}
-
-/*
- * Enter an RCU read-side critical section.
- *
- * The first cmm_barrier() call ensures that the compiler does not reorder
- * the body of _rcu_read_lock() with a mutex.
- *
- * This function and its helper are both less than 10 lines long.  The
- * intent is that this function meets the 10-line criterion in LGPL,
- * allowing this function to be invoked directly from non-LGPL code.
- */
-static inline void _urcu_signal_read_lock(void)
-{
-       unsigned long tmp;
-
-       urcu_assert_debug(URCU_TLS(urcu_signal_reader).registered);
-       cmm_barrier();
-       tmp = URCU_TLS(urcu_signal_reader).ctr;
-       urcu_assert_debug((tmp & URCU_GP_CTR_NEST_MASK) != URCU_GP_CTR_NEST_MASK);
-       _urcu_signal_read_lock_update(tmp);
-}
-
-/*
- * This is a helper function for _rcu_read_unlock().
- *
- * The first cmm_barrier() call ensures that the critical section is
- * seen to precede the store to rcu_reader.ctr.
- * The second cmm_barrier() call ensures that we write to rcu_reader.ctr
- * before reading the update-side futex.
- */
-static inline void _urcu_signal_read_unlock_update_and_wakeup(unsigned long tmp)
-{
-       unsigned long *ctr = &URCU_TLS(urcu_signal_reader).ctr;
-
-       if (caa_likely((tmp & URCU_GP_CTR_NEST_MASK) == URCU_GP_COUNT)) {
-               uatomic_store(ctr, tmp - URCU_GP_COUNT, CMM_SEQ_CST);
-               urcu_common_wake_up_gp(&urcu_signal_gp);
-       } else {
-               uatomic_store(ctr, tmp - URCU_GP_COUNT, CMM_RELAXED);
-       }
-}
-
-/*
- * Exit an RCU read-side critical section.  Both this function and its
- * helper are smaller than 10 lines of code, and are intended to be
- * usable by non-LGPL code, as called out in LGPL.
- */
-static inline void _urcu_signal_read_unlock(void)
-{
-       unsigned long tmp;
-
-       urcu_assert_debug(URCU_TLS(urcu_signal_reader).registered);
-       tmp = URCU_TLS(urcu_signal_reader).ctr;
-       urcu_assert_debug(tmp & URCU_GP_CTR_NEST_MASK);
-       _urcu_signal_read_unlock_update_and_wakeup(tmp);
-       cmm_barrier();  /* Ensure the compiler does not reorder us with mutex */
-}
-
-/*
- * Returns whether within a RCU read-side critical section.
- *
- * This function is less than 10 lines long.  The intent is that this
- * function meets the 10-line criterion for LGPL, allowing this function
- * to be invoked directly from non-LGPL code.
- */
-static inline int _urcu_signal_read_ongoing(void)
-{
-       return URCU_TLS(urcu_signal_reader).ctr & URCU_GP_CTR_NEST_MASK;
-}
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _URCU_SIGNAL_STATIC_H */
index 3351b5eec9ec2547012d27dd7367d80329733f61..c164ae31bca00947e2259594a46d48f48ae1d341 100644 (file)
@@ -16,7 +16,7 @@
  */
 
 /* Default is RCU_MEMBARRIER */
-#if !defined(RCU_MEMBARRIER) && !defined(RCU_MB) && !defined(RCU_SIGNAL)
+#if !defined(RCU_MEMBARRIER) && !defined(RCU_MB)
 #define RCU_MEMBARRIER
 #endif
 
@@ -28,8 +28,4 @@
 #include <urcu/static/urcu-mb.h>
 #endif
 
-#ifdef RCU_SIGNAL
-#include <urcu/static/urcu-signal.h>
-#endif
-
 #endif /* _URCU_STATIC_H */
diff --git a/include/urcu/urcu-signal.h b/include/urcu/urcu-signal.h
deleted file mode 100644 (file)
index fb30e00..0000000
+++ /dev/null
@@ -1,125 +0,0 @@
-// SPDX-FileCopyrightText: 2009 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
-// SPDX-FileCopyrightText: 2009 Paul E. McKenney, IBM Corporation.
-//
-// SPDX-License-Identifier: LGPL-2.1-or-later
-
-#ifndef _URCU_SIGNAL_H
-#define _URCU_SIGNAL_H
-
-/*
- * Userspace RCU header
- *
- * LGPL-compatible code should include this header with :
- *
- * #define _LGPL_SOURCE
- * #include <urcu.h>
- *
- * IBM's contributions to this file may be relicensed under LGPLv2 or later.
- */
-
-#include <stdlib.h>
-#include <pthread.h>
-#include <stdbool.h>
-
-/*
- * See urcu/pointer.h and urcu/static/pointer.h for pointer
- * publication headers.
- */
-#include <urcu/pointer.h>
-#include <urcu/urcu-poll.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <urcu/map/urcu-signal.h>
-
-/*
- * Important !
- *
- * Each thread containing read-side critical sections must be registered
- * with rcu_register_thread_mb() before calling rcu_read_lock_mb().
- * rcu_unregister_thread_mb() should be called before the thread exits.
- */
-
-#ifdef _LGPL_SOURCE
-
-#include <urcu/static/urcu-signal.h>
-
-/*
- * Mappings for static use of the userspace RCU library.
- * Should only be used in LGPL-compatible code.
- */
-
-/*
- * rcu_read_lock()
- * rcu_read_unlock()
- *
- * Mark the beginning and end of a read-side critical section.
- * DON'T FORGET TO USE RCU_REGISTER/UNREGISTER_THREAD() FOR EACH THREAD WITH
- * READ-SIDE CRITICAL SECTION.
- */
-#define urcu_signal_read_lock          _urcu_signal_read_lock
-#define urcu_signal_read_unlock                _urcu_signal_read_unlock
-#define urcu_signal_read_ongoing       _urcu_signal_read_ongoing
-
-#else /* !_LGPL_SOURCE */
-
-/*
- * library wrappers to be used by non-LGPL compatible source code.
- * See LGPL-only urcu/static/pointer.h for documentation.
- */
-
-extern void urcu_signal_read_lock(void);
-extern void urcu_signal_read_unlock(void);
-extern int urcu_signal_read_ongoing(void);
-
-#endif /* !_LGPL_SOURCE */
-
-extern void urcu_signal_synchronize_rcu(void);
-
-/*
- * RCU grace period polling API.
- */
-extern struct urcu_gp_poll_state urcu_signal_start_poll_synchronize_rcu(void);
-extern bool urcu_signal_poll_state_synchronize_rcu(struct urcu_gp_poll_state state);
-
-/*
- * Reader thread registration.
- */
-extern void urcu_signal_register_thread(void);
-extern void urcu_signal_unregister_thread(void);
-
-/*
- * Explicit rcu initialization, for "early" use within library constructors.
- */
-extern void urcu_signal_init(void);
-
-/*
- * Q.S. reporting are no-ops for these URCU flavors.
- */
-static inline void urcu_signal_quiescent_state(void)
-{
-}
-
-static inline void urcu_signal_thread_offline(void)
-{
-}
-
-static inline void urcu_signal_thread_online(void)
-{
-}
-
-#ifdef __cplusplus
-}
-#endif
-
-#include <urcu/call-rcu.h>
-#include <urcu/defer.h>
-#include <urcu/flavor.h>
-
-#ifndef URCU_API_MAP
-#include <urcu/map/clear.h>
-#endif
-
-#endif /* _URCU_SIGNAL_H */
index 8f876782427384391c06c512fee564b3ef8e77bb..4df48e4ba3cd13f443e1d7d19bcd0b7db55b6ab6 100644 (file)
  * IBM's contributions to this file may be relicensed under LGPLv2 or later.
  */
 
-#if !defined(RCU_MEMBARRIER) && !defined(RCU_SIGNAL) && !defined(RCU_MB)
+#if !defined(RCU_MEMBARRIER) && !defined(RCU_MB)
 #define RCU_MEMBARRIER
 #endif
 
 #ifdef RCU_MEMBARRIER
 #include <urcu/urcu-memb.h>
-#elif defined(RCU_SIGNAL)
-#include <urcu/urcu-signal.h>
 #elif defined(RCU_MB)
 #include <urcu/urcu-mb.h>
 #else
index 6bdd4a52d29176722a9f41900d02f3b280e81806..ede2669606d451c298282fcc3c3d67728035db56 100644 (file)
@@ -18,7 +18,7 @@ RCULFHASH = rculfhash.c rculfhash-mm-order.c rculfhash-mm-chunk.c \
 
 lib_LTLIBRARIES = liburcu-common.la \
                liburcu.la liburcu-qsbr.la \
-               liburcu-mb.la liburcu-signal.la liburcu-bp.la \
+               liburcu-mb.la liburcu-bp.la \
                liburcu-memb.la liburcu-cds.la
 
 #
@@ -43,10 +43,6 @@ liburcu_mb_la_SOURCES = urcu.c urcu-pointer.c $(COMPAT)
 liburcu_mb_la_CFLAGS = -DRCU_MB $(AM_CFLAGS)
 liburcu_mb_la_LIBADD = liburcu-common.la
 
-liburcu_signal_la_SOURCES = urcu.c urcu-pointer.c $(COMPAT)
-liburcu_signal_la_CFLAGS = -DRCU_SIGNAL $(AM_CFLAGS)
-liburcu_signal_la_LIBADD = liburcu-common.la
-
 liburcu_bp_la_SOURCES = urcu-bp.c urcu-pointer.c $(COMPAT)
 liburcu_bp_la_LIBADD = liburcu-common.la
 
@@ -56,7 +52,7 @@ liburcu_cds_la_LIBADD = liburcu-common.la
 
 pkgconfigdir = $(libdir)/pkgconfig
 pkgconfig_DATA = liburcu-cds.pc liburcu.pc liburcu-bp.pc liburcu-qsbr.pc \
-       liburcu-signal.pc liburcu-mb.pc liburcu-memb.pc
+       liburcu-mb.pc liburcu-memb.pc
 
 EXTRA_DIST = \
        urcu-call-rcu-impl.h \
diff --git a/src/liburcu-signal.pc.in b/src/liburcu-signal.pc.in
deleted file mode 100644 (file)
index fc797b7..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-# SPDX-FileCopyrightText: 2023 EfficiOS Inc.
-#
-# SPDX-License-Identifier: MIT
-
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: Userspace RCU signal
-Description: A userspace RCU (read-copy-update) library, signal version
-Version: @PACKAGE_VERSION@
-Requires:
-Libs: -L${libdir} -lurcu-common -lurcu-signal
-Cflags: -I${includedir} 
index 307ba7d1d847175da6d7fa5aef592ab54919f5bf..09cd2b79cd33aa91c75e6d3982aab7faf7a03137 100644 (file)
 #include <urcu/uatomic.h>
 #include <urcu/compiler.h>
 #include <urcu/rculfhash.h>
-#include <urcu/static/urcu-signal-nr.h>
 #include <stdio.h>
 #include <pthread.h>
 #include <signal.h>
index 984e929f78c54d9908660fb87adf62b4017a446e..5f4a7d71c2fad83e414e5c32f09ff884aac13488 100644 (file)
@@ -86,7 +86,7 @@ int urcu_memb_has_sys_membarrier = 0;
 void __attribute__((constructor)) rcu_init(void);
 #endif
 
-#if defined(RCU_MB) || defined(RCU_SIGNAL)
+#if defined(RCU_MB)
 void rcu_init(void)
 {
 }
@@ -171,7 +171,7 @@ static void smp_mb_master(void)
 }
 #endif
 
-#if defined(RCU_MB) || defined(RCU_SIGNAL)
+#if defined(RCU_MB)
 static void smp_mb_master(void)
 {
        cmm_smp_mb();
This page took 0.034975 seconds and 4 git commands to generate.