From 424150266e9afc978cca8d00f1d70c31f534e656 Mon Sep 17 00:00:00 2001 From: David Goulet Date: Fri, 27 Sep 2013 18:05:17 -0400 Subject: [PATCH] Fix: use global thread quit pipe in live Signed-off-by: David Goulet --- src/bin/lttng-relayd/live.c | 25 +++---------------------- src/bin/lttng-relayd/live.h | 2 +- src/bin/lttng-relayd/main.c | 5 +++-- 3 files changed, 7 insertions(+), 25 deletions(-) diff --git a/src/bin/lttng-relayd/live.c b/src/bin/lttng-relayd/live.c index cbf32790c..d09c2f13e 100644 --- a/src/bin/lttng-relayd/live.c +++ b/src/bin/lttng-relayd/live.c @@ -96,8 +96,6 @@ void cleanup(void) { DBG("Cleaning up"); - /* Close thread quit pipes */ - utils_close_pipe(live_thread_quit_pipe); free(live_uri); } @@ -139,21 +137,6 @@ void stop_threads(void) futex_nto1_wake(&viewer_cmd_queue.futex); } -/* - * Init thread quit pipe. - * - * Return -1 on error or 0 if all pipes are created. - */ -static -int init_thread_quit_pipe(void) -{ - int ret; - - ret = utils_create_pipe_cloexec(live_thread_quit_pipe); - - return ret; -} - /* * Create a poll set with O_CLOEXEC and add the thread quit pipe to the set. */ @@ -1719,7 +1702,7 @@ error: * main */ int live_start_threads(struct lttng_uri *uri, - struct relay_local_data *relay_ctx) + struct relay_local_data *relay_ctx, int quit_pipe[2]) { int ret = 0; void *status; @@ -1728,10 +1711,8 @@ int live_start_threads(struct lttng_uri *uri, assert(uri); live_uri = uri; - /* Create thread quit pipe */ - if ((ret = init_thread_quit_pipe()) < 0) { - goto error; - } + live_thread_quit_pipe[0] = quit_pipe[0]; + live_thread_quit_pipe[1] = quit_pipe[1]; /* Check if daemon is UID = 0 */ is_root = !getuid(); diff --git a/src/bin/lttng-relayd/live.h b/src/bin/lttng-relayd/live.h index 52608a4f7..5d8b77dd4 100644 --- a/src/bin/lttng-relayd/live.h +++ b/src/bin/lttng-relayd/live.h @@ -24,7 +24,7 @@ #include "lttng-relayd.h" int live_start_threads(struct lttng_uri *live_uri, - struct relay_local_data *relay_ctx); + struct relay_local_data *relay_ctx, int quit_pipe[2]); void live_stop_threads(void); struct relay_viewer_stream *live_find_viewer_stream_by_id(uint64_t stream_id); diff --git a/src/bin/lttng-relayd/main.c b/src/bin/lttng-relayd/main.c index dffcaff98..dc41caad0 100644 --- a/src/bin/lttng-relayd/main.c +++ b/src/bin/lttng-relayd/main.c @@ -2527,7 +2527,7 @@ int main(int argc, char **argv) goto exit_listener; } - ret = live_start_threads(live_uri, relay_ctx); + ret = live_start_threads(live_uri, relay_ctx, thread_quit_pipe); if (ret != 0) { ERR("Starting live viewer threads"); } @@ -2552,6 +2552,8 @@ exit_dispatcher: PERROR("pthread_join"); goto error; /* join error, exit without cleanup */ } + + live_stop_threads(); lttng_ht_destroy(viewer_streams_ht); exit_relay_ctx_viewer_streams: @@ -2564,7 +2566,6 @@ exit_relay_ctx_sessions: free(relay_ctx); exit: - live_stop_threads(); cleanup(); if (!ret) { exit(EXIT_SUCCESS); -- 2.34.1