From 8bdee6e2bac74a577147046126628ff3b1b34930 Mon Sep 17 00:00:00 2001 From: Simon Marchi Date: Sat, 26 Jul 2014 01:26:56 -0400 Subject: [PATCH] Change wfq usages for wfcq This removes the deprecated warnings when building lttng-tools. We can now build with -Werror, woohoo! This makes lttng-tools depends on userspace-rcu version 0.8.0 and above. The configure.ac and README files have been updated for this. Verified by running make check. Signed-off-by: David Goulet --- README | 4 ++-- configure.ac | 10 +++++----- src/bin/lttng-relayd/connection.h | 4 ++-- src/bin/lttng-relayd/live.c | 12 +++++++----- src/bin/lttng-relayd/lttng-relayd.h | 5 +++-- src/bin/lttng-relayd/main.c | 12 +++++++----- src/bin/lttng-sessiond/lttng-sessiond.h | 7 ++++--- src/bin/lttng-sessiond/main.c | 10 +++++----- 8 files changed, 35 insertions(+), 29 deletions(-) diff --git a/README b/README index c98444991..43fd0c5cb 100644 --- a/README +++ b/README @@ -17,10 +17,10 @@ REQUIREMENTS: kernel version can probably be older but we can't provide any guarantee. Please let us know if you are able to go lower without any problems. - - liburcu + - liburcu >= 0.8.0 Userspace RCU library, by Mathieu Desnoyers and Paul E. McKenney - -> Tested with liburcu 0.7.x stable. + -> Tested with liburcu 0.8.x stable. * Debian/Ubuntu package: liburcu-dev * Git : git://git.lttng.org/userspace-rcu.git diff --git a/configure.ac b/configure.ac index 7d8839543..21cfab070 100644 --- a/configure.ac +++ b/configure.ac @@ -171,17 +171,17 @@ AM_CONDITIONAL([LTTNG_BUILD_WITH_LIBUUID], [test "x$have_libuuid" = "xyes"]) AM_CONDITIONAL([LTTNG_BUILD_WITH_LIBC_UUID], [test "x$have_libc_uuid" = "xyes"]) # URCU library version needed or newer -liburcu_version=">= 0.7.2" +liburcu_version=">= 0.8.0" # Check liburcu needed function calls AC_CHECK_DECL([cds_list_add], [], [AC_MSG_ERROR([liburcu $liburcu_version or newer is needed])], [[#include ]] ) -AC_CHECK_DECL([cds_wfq_init], [], - [AC_MSG_ERROR([liburcu $liburcu_version or newer is needed])], [[#include ]] +AC_CHECK_DECL([cds_wfcq_init], [], + [AC_MSG_ERROR([liburcu $liburcu_version or newer is needed])], [[#include ]] ) -AC_CHECK_DECL([cds_wfq_dequeue_blocking], [], - [AC_MSG_ERROR([liburcu $liburcu_version or newer is needed])], [[#include ]] +AC_CHECK_DECL([cds_wfcq_dequeue_blocking], [], + [AC_MSG_ERROR([liburcu $liburcu_version or newer is needed])], [[#include ]] ) AC_CHECK_DECL([futex_async], [], [AC_MSG_ERROR([liburcu $liburcu_version or newer is needed])], [[#include ]] diff --git a/src/bin/lttng-relayd/connection.h b/src/bin/lttng-relayd/connection.h index fc4a59075..70fe4ba3d 100644 --- a/src/bin/lttng-relayd/connection.h +++ b/src/bin/lttng-relayd/connection.h @@ -23,7 +23,7 @@ #include #include #include -#include +#include #include #include @@ -46,7 +46,7 @@ struct relay_connection { struct lttcomm_sock *sock; struct relay_session *session; struct relay_viewer_session *viewer_session; - struct cds_wfq_node qnode; + struct cds_wfcq_node qnode; struct lttng_ht_node_ulong sock_n; struct rcu_head rcu_node; enum connection_type type; diff --git a/src/bin/lttng-relayd/live.c b/src/bin/lttng-relayd/live.c index 8c716dbde..5684608ea 100644 --- a/src/bin/lttng-relayd/live.c +++ b/src/bin/lttng-relayd/live.c @@ -558,11 +558,12 @@ restart: new_conn->sock = newsock; /* Enqueue request for the dispatcher thread. */ - cds_wfq_enqueue(&viewer_conn_queue.queue, &new_conn->qnode); + cds_wfcq_enqueue(&viewer_conn_queue.head, &viewer_conn_queue.tail, + &new_conn->qnode); /* * Wake the dispatch queue futex. Implicit memory barrier with - * the exchange in cds_wfq_enqueue. + * the exchange in cds_wfcq_enqueue. */ futex_nto1_wake(&viewer_conn_queue.futex); } @@ -601,7 +602,7 @@ void *thread_dispatcher(void *data) { int err = -1; ssize_t ret; - struct cds_wfq_node *node; + struct cds_wfcq_node *node; struct relay_connection *conn = NULL; DBG("[thread] Live viewer relay dispatcher started"); @@ -624,7 +625,8 @@ void *thread_dispatcher(void *data) health_code_update(); /* Dequeue commands */ - node = cds_wfq_dequeue_blocking(&viewer_conn_queue.queue); + node = cds_wfcq_dequeue_blocking(&viewer_conn_queue.head, + &viewer_conn_queue.tail); if (node == NULL) { DBG("Woken up but nothing in the live-viewer " "relay command queue"); @@ -2113,7 +2115,7 @@ int live_start_threads(struct lttng_uri *uri, } /* Init relay command queue. */ - cds_wfq_init(&viewer_conn_queue.queue); + cds_wfcq_init(&viewer_conn_queue.head, &viewer_conn_queue.tail); /* Set up max poll set size */ lttng_poll_set_max_size(); diff --git a/src/bin/lttng-relayd/lttng-relayd.h b/src/bin/lttng-relayd/lttng-relayd.h index 55ce25ea6..896925f9e 100644 --- a/src/bin/lttng-relayd/lttng-relayd.h +++ b/src/bin/lttng-relayd/lttng-relayd.h @@ -22,7 +22,7 @@ #define _LGPL_SOURCE #include #include -#include +#include #include @@ -30,7 +30,8 @@ * Queue used to enqueue relay requests */ struct relay_conn_queue { - struct cds_wfq_queue queue; + struct cds_wfcq_head head; + struct cds_wfcq_tail tail; int32_t futex; }; diff --git a/src/bin/lttng-relayd/main.c b/src/bin/lttng-relayd/main.c index 3a6bebaf7..a3b8016db 100644 --- a/src/bin/lttng-relayd/main.c +++ b/src/bin/lttng-relayd/main.c @@ -882,11 +882,12 @@ restart: new_conn->sock = newsock; /* Enqueue request for the dispatcher thread. */ - cds_wfq_enqueue(&relay_conn_queue.queue, &new_conn->qnode); + cds_wfcq_enqueue(&relay_conn_queue.head, &relay_conn_queue.tail, + &new_conn->qnode); /* * Wake the dispatch queue futex. Implicit memory barrier with - * the exchange in cds_wfq_enqueue. + * the exchange in cds_wfcq_enqueue. */ futex_nto1_wake(&relay_conn_queue.futex); } @@ -933,7 +934,7 @@ void *relay_thread_dispatcher(void *data) { int err = -1; ssize_t ret; - struct cds_wfq_node *node; + struct cds_wfcq_node *node; struct relay_connection *new_conn = NULL; DBG("[thread] Relay dispatcher started"); @@ -956,7 +957,8 @@ void *relay_thread_dispatcher(void *data) health_code_update(); /* Dequeue commands */ - node = cds_wfq_dequeue_blocking(&relay_conn_queue.queue); + node = cds_wfcq_dequeue_blocking(&relay_conn_queue.head, + &relay_conn_queue.tail); if (node == NULL) { DBG("Woken up but nothing in the relay command queue"); /* Continue thread execution */ @@ -2762,7 +2764,7 @@ int main(int argc, char **argv) } /* Init relay command queue. */ - cds_wfq_init(&relay_conn_queue.queue); + cds_wfcq_init(&relay_conn_queue.head, &relay_conn_queue.tail); /* Set up max poll set size */ lttng_poll_set_max_size(); diff --git a/src/bin/lttng-sessiond/lttng-sessiond.h b/src/bin/lttng-sessiond/lttng-sessiond.h index 0f4c66878..f3fb750a9 100644 --- a/src/bin/lttng-sessiond/lttng-sessiond.h +++ b/src/bin/lttng-sessiond/lttng-sessiond.h @@ -21,7 +21,7 @@ #define _LGPL_SOURCE #include -#include +#include #include #include @@ -55,7 +55,7 @@ struct command_ctx { struct ust_command { int sock; struct ust_register_msg reg_msg; - struct cds_wfq_node node; + struct cds_wfcq_node node; }; /* @@ -64,7 +64,8 @@ struct ust_command { */ struct ust_cmd_queue { int32_t futex; - struct cds_wfq_queue queue; + struct cds_wfcq_head head; + struct cds_wfcq_tail tail; }; /* diff --git a/src/bin/lttng-sessiond/main.c b/src/bin/lttng-sessiond/main.c index 1ee6f4a9f..fdc537603 100644 --- a/src/bin/lttng-sessiond/main.c +++ b/src/bin/lttng-sessiond/main.c @@ -1685,7 +1685,7 @@ error_create: static void *thread_dispatch_ust_registration(void *data) { int ret, err = -1; - struct cds_wfq_node *node; + struct cds_wfcq_node *node; struct ust_command *ust_cmd = NULL; struct ust_reg_wait_node *wait_node = NULL, *tmp_wait_node; struct ust_reg_wait_queue wait_queue = { @@ -1723,7 +1723,7 @@ static void *thread_dispatch_ust_registration(void *data) health_code_update(); /* Dequeue command for registration */ - node = cds_wfq_dequeue_blocking(&ust_cmd_queue.queue); + node = cds_wfcq_dequeue_blocking(&ust_cmd_queue.head, &ust_cmd_queue.tail); if (node == NULL) { DBG("Woken up but nothing in the UST command queue"); /* Continue thread execution */ @@ -2077,11 +2077,11 @@ static void *thread_registration_apps(void *data) * Lock free enqueue the registration request. The red pill * has been taken! This apps will be part of the *system*. */ - cds_wfq_enqueue(&ust_cmd_queue.queue, &ust_cmd->node); + cds_wfcq_enqueue(&ust_cmd_queue.head, &ust_cmd_queue.tail, &ust_cmd->node); /* * Wake the registration queue futex. Implicit memory - * barrier with the exchange in cds_wfq_enqueue. + * barrier with the exchange in cds_wfcq_enqueue. */ futex_nto1_wake(&ust_cmd_queue.futex); } @@ -5257,7 +5257,7 @@ int main(int argc, char **argv) buffer_reg_init_pid_registry(); /* Init UST command queue. */ - cds_wfq_init(&ust_cmd_queue.queue); + cds_wfcq_init(&ust_cmd_queue.head, &ust_cmd_queue.tail); /* * Get session list pointer. This pointer MUST NOT be free(). This list is -- 2.34.1