From: Mathieu Desnoyers Date: Sat, 3 Sep 2011 13:49:07 +0000 (-0400) Subject: Revert "Create per RCU flavor CDS libraries" X-Git-Tag: v0.6.5~36 X-Git-Url: https://git.liburcu.org/?p=urcu.git;a=commitdiff_plain;h=4157e1ac43033c8b3ef5405b9c01e8311b2454ca Revert "Create per RCU flavor CDS libraries" This reverts commit d4b99c015229978810319cfd42e1c9763772fad8. Minor change (not visible to end-users): this commit introduces a liburcu-common.so to hold wfqueue, wfstack and futex fall-back code. This .so is used by all URCU flavors, as well as liburcu-cds.so. Signed-off-by: Mathieu Desnoyers --- diff --git a/Makefile.am b/Makefile.am index 6378af4..0cde84a 100644 --- a/Makefile.am +++ b/Makefile.am @@ -33,34 +33,36 @@ if COMPAT_FUTEX COMPAT+=compat_futex.c endif -lib_LTLIBRARIES = liburcu-cds-common.la \ +lib_LTLIBRARIES = liburcu-common.la \ liburcu.la liburcu-qsbr.la \ liburcu-mb.la liburcu-signal.la liburcu-bp.la \ - liburcu-cds.la liburcu-cds-qsbr.la \ - liburcu-cds-mb.la liburcu-cds-signal.la liburcu-cds-bp.la + liburcu-cds.la -liburcu_cds_common_la_SOURCES = wfqueue.c wfstack.c $(COMPAT) +# +# liburcu-common contains wait-free queues (needed by call_rcu) as well +# as futex fallbacks. +# +liburcu_common_la_SOURCES = wfqueue.c wfstack.c $(COMPAT) liburcu_la_SOURCES = urcu.c urcu-pointer.c $(COMPAT) -liburcu_cds_la_SOURCES = rculfqueue.c rculfstack.c $(COMPAT) +liburcu_la_LIBADD = liburcu-common.la liburcu_qsbr_la_SOURCES = urcu-qsbr.c urcu-pointer.c $(COMPAT) -liburcu_cds_qsbr_la_SOURCES = rculfqueue.c rculfstack.c $(COMPAT) -liburcu_cds_qsbr_la_CFLAGS = -DRCU_QSBR +liburcu_qsbr_la_LIBADD = liburcu-common.la liburcu_mb_la_SOURCES = urcu.c urcu-pointer.c $(COMPAT) liburcu_mb_la_CFLAGS = -DRCU_MB -liburcu_cds_mb_la_SOURCES = rculfqueue.c rculfstack.c $(COMPAT) -liburcu_cds_mb_la_CFLAGS = -DRCU_MB +liburcu_mb_la_LIBADD = liburcu-common.la liburcu_signal_la_SOURCES = urcu.c urcu-pointer.c $(COMPAT) liburcu_signal_la_CFLAGS = -DRCU_SIGNAL -liburcu_cds_signal_la_SOURCES = rculfqueue.c rculfstack.c $(COMPAT) -liburcu_cds_signal_la_CFLAGS = -DRCU_SIGNAL +liburcu_signal_la_LIBADD = liburcu-common.la liburcu_bp_la_SOURCES = urcu-bp.c urcu-pointer.c $(COMPAT) -liburcu_cds_bp_la_SOURCES = rculfqueue.c rculfstack.c $(COMPAT) -liburcu_cds_bp_la_CFLAGS = -DRCU_BP +liburcu_bp_la_LIBADD = liburcu-common.la + +liburcu_cds_la_SOURCES = rculfqueue.c rculfstack.c $(COMPAT) +liburcu_cds_la_LIBADD = liburcu-common.la pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = liburcu-cds.pc liburcu.pc liburcu-bp.pc liburcu-qsbr.pc \ diff --git a/rculfqueue.c b/rculfqueue.c index 09b8587..d1cea30 100644 --- a/rculfqueue.c +++ b/rculfqueue.c @@ -20,16 +20,6 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#define _LGPL_SOURCE - -#ifdef RCU_QSBR -# include "urcu-qsbr.h" -#elif defined(RCU_BP) -# include "urcu-bp.h" -#else -# include "urcu.h" -#endif - #undef _LGPL_SOURCE /* Do not #define _LGPL_SOURCE to ensure we can emit the wrapper symbols */ #include "urcu/rculfqueue.h" diff --git a/rculfstack.c b/rculfstack.c index f58628c..cf5711e 100644 --- a/rculfstack.c +++ b/rculfstack.c @@ -20,17 +20,6 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -/* Use the urcu symbols to select the appropriate rcu flavor at link time */ -#define _LGPL_SOURCE - -#ifdef RCU_QSBR -# include "urcu-qsbr.h" -#elif defined(RCU_BP) -# include "urcu-bp.h" -#else -# include "urcu.h" -#endif - #undef _LGPL_SOURCE /* Do not #define _LGPL_SOURCE to ensure we can emit the wrapper symbols */ #include "urcu/rculfstack.h" diff --git a/tests/Makefile.am b/tests/Makefile.am index 999da17..399fe9c 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -37,17 +37,13 @@ URCU_SIGNAL=$(top_srcdir)/urcu.c $(top_srcdir)/urcu-pointer.c $(top_srcdir)/wfqu URCU_BP=$(top_srcdir)/urcu-bp.c $(top_srcdir)/urcu-pointer.c $(top_srcdir)/wfqueue.c $(COMPAT) URCU_DEFER=$(top_srcdir)/urcu.c $(top_srcdir)/urcu-pointer.c $(top_srcdir)/wfqueue.c $(COMPAT) +URCU_COMMON_LIB=$(top_builddir)/liburcu-common.la URCU_LIB=$(top_builddir)/liburcu.la -URCU_CDS_LIB=$(top_builddir)/liburcu-cds.la URCU_QSBR_LIB=$(top_builddir)/liburcu-qsbr.la -URCU_CDS_QSBR_LIB=$(top_builddir)/liburcu-cds-qsbr.la URCU_MB_LIB=$(top_builddir)/liburcu-mb.la -URCU_CDS_MB_LIB=$(top_builddir)/liburcu-cds-mb.la URCU_SIGNAL_LIB=$(top_builddir)/liburcu-signal.la -URCU_CDS_SIGNAL_LIB=$(top_builddir)/liburcu-cds-signal.la URCU_BP_LIB=$(top_builddir)/liburcu-bp.la -URCU_CDS_BP_LIB=$(top_builddir)/liburcu-cds-bp.la -URCU_CDS_COMMON_LIB=$(top_builddir)/liburcu-cds-common.la +URCU_CDS_LIB=$(top_builddir)/liburcu-cds.la EXTRA_DIST = $(top_srcdir)/tests/api.h runall.sh @@ -164,20 +160,20 @@ test_urcu_lfq_dynlink_SOURCES = test_urcu_lfq.c $(URCU) test_urcu_lfq_dynlink_CFLAGS = -DDYNAMIC_LINK_TEST $(AM_CFLAGS) test_urcu_lfq_dynlink_LDADD = $(URCU_CDS_LIB) -test_urcu_wfq_SOURCES = test_urcu_wfq.c $(URCU_CDS_COMMON_LIB) $(COMPAT) +test_urcu_wfq_SOURCES = test_urcu_wfq.c $(URCU_COMMON_LIB) test_urcu_wfq_dynlink_SOURCES = test_urcu_wfq.c test_urcu_wfq_dynlink_CFLAGS = -DDYNAMIC_LINK_TEST $(AM_CFLAGS) -test_urcu_wfq_dynlink_LDADD = $(URCU_CDS_COMMON_LIB) +test_urcu_wfq_dynlink_LDADD = $(URCU_COMMON_LIB) test_urcu_lfs_SOURCES = test_urcu_lfs.c $(URCU_CDS_LIB) $(URCU_DEFER) test_urcu_lfs_dynlink_SOURCES = test_urcu_lfs.c $(URCU_DEFER) test_urcu_lfs_dynlink_CFLAGS = -DDYNAMIC_LINK_TEST $(AM_CFLAGS) test_urcu_lfs_dynlink_LDADD = $(URCU_CDS_LIB) -test_urcu_wfs_SOURCES = test_urcu_wfs.c $(URCU_CDS_COMMON_LIB) $(COMPAT) +test_urcu_wfs_SOURCES = test_urcu_wfs.c $(URCU_COMMON_LIB) test_urcu_wfs_dynlink_SOURCES = test_urcu_wfs.c test_urcu_wfs_dynlink_CFLAGS = -DDYNAMIC_LINK_TEST $(AM_CFLAGS) -test_urcu_wfs_dynlink_LDADD = $(URCU_CDS_COMMON_LIB) +test_urcu_wfs_dynlink_LDADD = $(URCU_COMMON_LIB) urcutorture.c: api.h diff --git a/urcu/map/urcu-bp.h b/urcu/map/urcu-bp.h index f62b5b3..4abe8dc 100644 --- a/urcu/map/urcu-bp.h +++ b/urcu/map/urcu-bp.h @@ -64,16 +64,4 @@ #define rcu_defer_barrier rcu_defer_barrier_bp #define rcu_defer_barrier_thread rcu_defer_barrier_thread_bp -/* Concurrent Data Structures */ -#define cds_lfq_node_init_rcu cds_lfq_node_init_rcu_bp -#define cds_lfq_init_rcu cds_lfq_init_rcu_bp -#define cds_lfq_destroy_rcu cds_lfq_destroy_rcu_bp -#define cds_lfq_enqueue_rcu cds_lfq_enqueue_rcu_bp -#define cds_lfq_dequeue_rcu cds_lfq_dequeue_rcu_bp - -#define cds_lfs_node_init_rcu cds_lfs_node_init_rcu_bp -#define cds_lfs_init_rcu cds_lfs_init_rcu_bp -#define cds_lfs_push_rcu cds_lfs_push_rcu_bp -#define cds_lfs_pop_rcu cds_lfs_pop_rcu_bp - #endif /* _URCU_BP_MAP_H */ diff --git a/urcu/map/urcu-qsbr.h b/urcu/map/urcu-qsbr.h index 6e4a196..0d88d83 100644 --- a/urcu/map/urcu-qsbr.h +++ b/urcu/map/urcu-qsbr.h @@ -66,16 +66,4 @@ #define rcu_defer_barrier rcu_defer_barrier_qsbr #define rcu_defer_barrier_thread rcu_defer_barrier_thread_qsbr -/* Concurrent Data Structures */ -#define cds_lfq_node_init_rcu cds_lfq_node_init_rcu_qsbr -#define cds_lfq_init_rcu cds_lfq_init_rcu_qsbr -#define cds_lfq_destroy_rcu cds_lfq_destroy_rcu_qsbr -#define cds_lfq_enqueue_rcu cds_lfq_enqueue_rcu_qsbr -#define cds_lfq_dequeue_rcu cds_lfq_dequeue_rcu_qsbr - -#define cds_lfs_node_init_rcu cds_lfs_node_init_rcu_qsbr -#define cds_lfs_init_rcu cds_lfs_init_rcu_qsbr -#define cds_lfs_push_rcu cds_lfs_push_rcu_qsbr -#define cds_lfs_pop_rcu cds_lfs_pop_rcu_qsbr - #endif /* _URCU_QSBR_MAP_H */ diff --git a/urcu/map/urcu.h b/urcu/map/urcu.h index 90c2f65..3f436a7 100644 --- a/urcu/map/urcu.h +++ b/urcu/map/urcu.h @@ -95,18 +95,6 @@ #define rcu_defer_barrier rcu_defer_barrier_memb #define rcu_defer_barrier_thread rcu_defer_barrier_thread_memb -/* Concurrent Data Structures */ -#define cds_lfq_node_init_rcu cds_lfq_node_init_rcu_memb -#define cds_lfq_init_rcu cds_lfq_init_rcu_memb -#define cds_lfq_destroy_rcu cds_lfq_destroy_rcu_memb -#define cds_lfq_enqueue_rcu cds_lfq_enqueue_rcu_memb -#define cds_lfq_dequeue_rcu cds_lfq_dequeue_rcu_memb - -#define cds_lfs_node_init_rcu cds_lfs_node_init_rcu_memb -#define cds_lfs_init_rcu cds_lfs_init_rcu_memb -#define cds_lfs_push_rcu cds_lfs_push_rcu_memb -#define cds_lfs_pop_rcu cds_lfs_pop_rcu_memb - #elif defined(RCU_SIGNAL) #define rcu_read_lock rcu_read_lock_sig @@ -139,18 +127,6 @@ #define rcu_defer_barrier rcu_defer_barrier_sig #define rcu_defer_barrier_thread rcu_defer_barrier_thread_sig -/* Concurrent Data Structures */ -#define cds_lfq_node_init_rcu cds_lfq_node_init_rcu_sig -#define cds_lfq_init_rcu cds_lfq_init_rcu_sig -#define cds_lfq_destroy_rcu cds_lfq_destroy_rcu_sig -#define cds_lfq_enqueue_rcu cds_lfq_enqueue_rcu_sig -#define cds_lfq_dequeue_rcu cds_lfq_dequeue_rcu_sig - -#define cds_lfs_node_init_rcu cds_lfs_node_init_rcu_sig -#define cds_lfs_init_rcu cds_lfs_init_rcu_sig -#define cds_lfs_push_rcu cds_lfs_push_rcu_sig -#define cds_lfs_pop_rcu cds_lfs_pop_rcu_sig - #elif defined(RCU_MB) #define rcu_read_lock rcu_read_lock_mb @@ -183,18 +159,6 @@ #define rcu_defer_barrier rcu_defer_barrier_mb #define rcu_defer_barrier_thread rcu_defer_barrier_thread_mb -/* Concurrent Data Structures */ -#define cds_lfq_node_init_rcu cds_lfq_node_init_rcu_mb -#define cds_lfq_init_rcu cds_lfq_init_rcu_mb -#define cds_lfq_destroy_rcu cds_lfq_destroy_rcu_mb -#define cds_lfq_enqueue_rcu cds_lfq_enqueue_rcu_mb -#define cds_lfq_dequeue_rcu cds_lfq_dequeue_rcu_mb - -#define cds_lfs_node_init_rcu cds_lfs_node_init_rcu_mb -#define cds_lfs_init_rcu cds_lfs_init_rcu_mb -#define cds_lfs_push_rcu cds_lfs_push_rcu_mb -#define cds_lfs_pop_rcu cds_lfs_pop_rcu_mb - #else #error "Undefined selection" diff --git a/urcu/rculfqueue.h b/urcu/rculfqueue.h index e1d64f1..598fa50 100644 --- a/urcu/rculfqueue.h +++ b/urcu/rculfqueue.h @@ -47,35 +47,11 @@ struct cds_lfq_queue_rcu { #include -#define cds_lfq_node_init_rcu_qsbr _cds_lfq_node_init_rcu -#define cds_lfq_init_rcu_qsbr _cds_lfq_init_rcu -#define cds_lfq_destroy_rcu_qsbr _cds_lfq_destroy_rcu -#define cds_lfq_enqueue_rcu_qsbr _cds_lfq_enqueue_rcu -#define cds_lfq_dequeue_rcu_qsbr _cds_lfq_dequeue_rcu - -#define cds_lfq_node_init_rcu_bp _cds_lfq_node_init_rcu -#define cds_lfq_init_rcu_bp _cds_lfq_init_rcu -#define cds_lfq_destroy_rcu_bp _cds_lfq_destroy_rcu -#define cds_lfq_enqueue_rcu_bp _cds_lfq_enqueue_rcu -#define cds_lfq_dequeue_rcu_bp _cds_lfq_dequeue_rcu - -#define cds_lfq_node_init_rcu_memb _cds_lfq_node_init_rcu -#define cds_lfq_init_rcu_memb _cds_lfq_init_rcu -#define cds_lfq_destroy_rcu_memb _cds_lfq_destroy_rcu -#define cds_lfq_enqueue_rcu_memb _cds_lfq_enqueue_rcu -#define cds_lfq_dequeue_rcu_memb _cds_lfq_dequeue_rcu - -#define cds_lfq_node_init_rcu_mb _cds_lfq_node_init_rcu -#define cds_lfq_init_rcu_mb _cds_lfq_init_rcu -#define cds_lfq_destroy_rcu_mb _cds_lfq_destroy_rcu -#define cds_lfq_enqueue_rcu_mb _cds_lfq_enqueue_rcu -#define cds_lfq_dequeue_rcu_mb _cds_lfq_dequeue_rcu - -#define cds_lfq_node_init_rcu_sig _cds_lfq_node_init_rcu -#define cds_lfq_init_rcu_sig _cds_lfq_init_rcu -#define cds_lfq_destroy_rcu_sig _cds_lfq_destroy_rcu -#define cds_lfq_enqueue_rcu_sig _cds_lfq_enqueue_rcu -#define cds_lfq_dequeue_rcu_sig _cds_lfq_dequeue_rcu +#define cds_lfq_node_init_rcu _cds_lfq_node_init_rcu +#define cds_lfq_init_rcu _cds_lfq_init_rcu +#define cds_lfq_destroy_rcu _cds_lfq_destroy_rcu +#define cds_lfq_enqueue_rcu _cds_lfq_enqueue_rcu +#define cds_lfq_dequeue_rcu _cds_lfq_dequeue_rcu #else /* !_LGPL_SOURCE */ diff --git a/urcu/rculfstack.h b/urcu/rculfstack.h index 7d359d4..93c0bc9 100644 --- a/urcu/rculfstack.h +++ b/urcu/rculfstack.h @@ -39,30 +39,10 @@ struct cds_lfs_stack_rcu { #include -#define cds_lfs_node_init_rcu_qsbr _cds_lfs_node_init_rcu -#define cds_lfs_init_rcu_qsbr _cds_lfs_init_rcu -#define cds_lfs_push_rcu_qsbr _cds_lfs_push_rcu -#define cds_lfs_pop_rcu_qsbr _cds_lfs_pop_rcu - -#define cds_lfs_node_init_rcu_bp _cds_lfs_node_init_rcu -#define cds_lfs_init_rcu_bp _cds_lfs_init_rcu -#define cds_lfs_push_rcu_bp _cds_lfs_push_rcu -#define cds_lfs_pop_rcu_bp _cds_lfs_pop_rcu - -#define cds_lfs_node_init_rcu_memb _cds_lfs_node_init_rcu -#define cds_lfs_init_rcu_memb _cds_lfs_init_rcu -#define cds_lfs_push_rcu_memb _cds_lfs_push_rcu -#define cds_lfs_pop_rcu_memb _cds_lfs_pop_rcu - -#define cds_lfs_node_init_rcu_mb _cds_lfs_node_init_rcu -#define cds_lfs_init_rcu_mb _cds_lfs_init_rcu -#define cds_lfs_push_rcu_mb _cds_lfs_push_rcu -#define cds_lfs_pop_rcu_mb _cds_lfs_pop_rcu - -#define cds_lfs_node_init_rcu_sig _cds_lfs_node_init_rcu -#define cds_lfs_init_rcu_sig _cds_lfs_init_rcu -#define cds_lfs_push_rcu_sig _cds_lfs_push_rcu -#define cds_lfs_pop_rcu_sig _cds_lfs_pop_rcu +#define cds_lfs_node_init_rcu _cds_lfs_node_init_rcu +#define cds_lfs_init_rcu _cds_lfs_init_rcu +#define cds_lfs_push_rcu _cds_lfs_push_rcu +#define cds_lfs_pop_rcu _cds_lfs_pop_rcu #else /* !_LGPL_SOURCE */ diff --git a/urcu/static/rculfqueue.h b/urcu/static/rculfqueue.h index fea6110..af73c6f 100644 --- a/urcu/static/rculfqueue.h +++ b/urcu/static/rculfqueue.h @@ -28,6 +28,7 @@ #include #include +#include #include #include diff --git a/urcu/static/rculfstack.h b/urcu/static/rculfstack.h index 4259e0c..3473cce 100644 --- a/urcu/static/rculfstack.h +++ b/urcu/static/rculfstack.h @@ -27,6 +27,7 @@ */ #include +#include #ifdef __cplusplus extern "C" {