Deprecate wfqueue
authorMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Tue, 23 Oct 2012 12:43:33 +0000 (08:43 -0400)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Tue, 23 Oct 2012 12:43:33 +0000 (08:43 -0400)
Replaced by "wfcqueue", which has a semantic that allows placing head
and tail on different cache lines, and does not allocate memory
internally. wfqueue users can easily migrate to wfcqueue.

We choose to deprecate wfqueue rather than reimplementing it on top of
wfcqueue to ensure we keep strong ABI compatibility for existing wfqueue
users.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
tests/test_urcu_wfq.c
urcu/wfqueue.h
wfqueue.c

index b3f03b9d680f9946193283d0eaec451a4c50922b..d1760414f30378151a62d8c34656e9f09002d6fc 100644 (file)
@@ -65,6 +65,10 @@ static inline pid_t gettid(void)
 #ifndef DYNAMIC_LINK_TEST
 #define _LGPL_SOURCE
 #endif
+
+/* Remove deprecation warnings from test build. */
+#define CDS_WFQ_DEPRECATED
+
 #include <urcu.h>
 #include <urcu/wfqueue.h>
 
index 03a73f19fa567dfae0c8f5aba97cec9b4212f414..342ee48e0a61e7e7b7a0d765da456e8952d8a686 100644 (file)
 extern "C" {
 #endif
 
+#ifndef CDS_WFQ_DEPRECATED
+#define CDS_WFQ_DEPRECATED     \
+       __attribute__((deprecated("urcu/wfqueue.h is deprecated. Please use urcu/wfcqueue.h instead.")))
+#endif
+
 /*
  * Queue with wait-free enqueue/blocking dequeue.
  * This implementation adds a dummy head node when the queue is empty to ensure
@@ -54,20 +59,53 @@ struct cds_wfq_queue {
 
 #include <urcu/static/wfqueue.h>
 
-#define cds_wfq_node_init              _cds_wfq_node_init
-#define cds_wfq_init           _cds_wfq_init
-#define cds_wfq_enqueue                _cds_wfq_enqueue
-#define __cds_wfq_dequeue_blocking     ___cds_wfq_dequeue_blocking
-#define cds_wfq_dequeue_blocking       _cds_wfq_dequeue_blocking
+static inline CDS_WFQ_DEPRECATED
+void cds_wfq_node_init(struct cds_wfq_node *node)
+{
+       _cds_wfq_node_init(node);
+}
+
+static inline CDS_WFQ_DEPRECATED
+void cds_wfq_init(struct cds_wfq_queue *q)
+{
+       _cds_wfq_init(q);
+}
+
+static inline CDS_WFQ_DEPRECATED
+void cds_wfq_enqueue(struct cds_wfq_queue *q, struct cds_wfq_node *node)
+{
+       _cds_wfq_enqueue(q, node);
+}
+
+static inline CDS_WFQ_DEPRECATED
+struct cds_wfq_node *__cds_wfq_dequeue_blocking(struct cds_wfq_queue *q)
+{
+       return ___cds_wfq_dequeue_blocking(q);
+}
+
+static inline CDS_WFQ_DEPRECATED
+struct cds_wfq_node *cds_wfq_dequeue_blocking(struct cds_wfq_queue *q)
+{
+       return _cds_wfq_dequeue_blocking(q);
+}
 
 #else /* !_LGPL_SOURCE */
 
-extern void cds_wfq_node_init(struct cds_wfq_node *node);
-extern void cds_wfq_init(struct cds_wfq_queue *q);
-extern void cds_wfq_enqueue(struct cds_wfq_queue *q, struct cds_wfq_node *node);
+extern CDS_WFQ_DEPRECATED
+void cds_wfq_node_init(struct cds_wfq_node *node);
+
+extern CDS_WFQ_DEPRECATED
+void cds_wfq_init(struct cds_wfq_queue *q);
+
+extern CDS_WFQ_DEPRECATED
+void cds_wfq_enqueue(struct cds_wfq_queue *q, struct cds_wfq_node *node);
+
 /* __cds_wfq_dequeue_blocking: caller ensures mutual exclusion between dequeues */
-extern struct cds_wfq_node *__cds_wfq_dequeue_blocking(struct cds_wfq_queue *q);
-extern struct cds_wfq_node *cds_wfq_dequeue_blocking(struct cds_wfq_queue *q);
+extern CDS_WFQ_DEPRECATED
+struct cds_wfq_node *__cds_wfq_dequeue_blocking(struct cds_wfq_queue *q);
+
+extern CDS_WFQ_DEPRECATED
+struct cds_wfq_node *cds_wfq_dequeue_blocking(struct cds_wfq_queue *q);
 
 #endif /* !_LGPL_SOURCE */
 
index 33371718420c21ea70893ee44e53fdf973a9fa1f..14272cb2eefba483bcb7a949209965684838597a 100644 (file)
--- a/wfqueue.c
+++ b/wfqueue.c
@@ -20,6 +20,9 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
+/* Remove deprecation warnings from LGPL wrapper build. */
+#define CDS_WFQ_DEPRECATED
+
 /* Do not #define _LGPL_SOURCE to ensure we can emit the wrapper symbols */
 #include "urcu/wfqueue.h"
 #include "urcu/static/wfqueue.h"
This page took 0.02725 seconds and 4 git commands to generate.