From 0b242f6253f75bd4a2d138fba3c34a22653ab3bd Mon Sep 17 00:00:00 2001 From: Mathieu Desnoyers Date: Sun, 26 Jan 2014 23:34:17 -0500 Subject: [PATCH] relayd: use same pipe for live and main Don't use a duplicate of file descriptors. Ownership is easier to track without a copy. Signed-off-by: Mathieu Desnoyers --- src/bin/lttng-relayd/live.c | 17 ++++------------- src/bin/lttng-relayd/live.h | 2 +- src/bin/lttng-relayd/lttng-relayd.h | 2 ++ src/bin/lttng-relayd/main.c | 4 ++-- 4 files changed, 9 insertions(+), 16 deletions(-) diff --git a/src/bin/lttng-relayd/live.c b/src/bin/lttng-relayd/live.c index 84057bfb4..bfa7b8525 100644 --- a/src/bin/lttng-relayd/live.c +++ b/src/bin/lttng-relayd/live.c @@ -60,12 +60,6 @@ static struct lttng_uri *live_uri; -/* - * Quit pipe for all threads. This permits a single cancellation point - * for all threads when receiving an event on the pipe. - */ -static int live_thread_quit_pipe[2] = { -1, -1 }; - /* * This pipe is used to inform the worker thread that a command is queued and * ready to be processed. @@ -126,7 +120,7 @@ void stop_threads(void) /* Stopping all threads */ DBG("Terminating all live threads"); - ret = notify_thread_pipe(live_thread_quit_pipe[1]); + ret = notify_thread_pipe(thread_quit_pipe[1]); if (ret < 0) { ERR("write error on thread quit pipe"); } @@ -155,7 +149,7 @@ int create_thread_poll_set(struct lttng_poll_event *events, int size) } /* Add quit pipe */ - ret = lttng_poll_add(events, live_thread_quit_pipe[0], LPOLLIN | LPOLLERR); + ret = lttng_poll_add(events, thread_quit_pipe[0], LPOLLIN | LPOLLERR); if (ret < 0) { goto error; } @@ -174,7 +168,7 @@ error: static int check_thread_quit_pipe(int fd, uint32_t events) { - if (fd == live_thread_quit_pipe[0] && (events & LPOLLIN)) { + if (fd == thread_quit_pipe[0] && (events & LPOLLIN)) { return 1; } @@ -2044,7 +2038,7 @@ error: * main */ int live_start_threads(struct lttng_uri *uri, - struct relay_local_data *relay_ctx, int quit_pipe[2]) + struct relay_local_data *relay_ctx) { int ret = 0; void *status; @@ -2053,9 +2047,6 @@ int live_start_threads(struct lttng_uri *uri, assert(uri); live_uri = uri; - 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 5d8b77dd4..52608a4f7 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, int quit_pipe[2]); + struct relay_local_data *relay_ctx); 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/lttng-relayd.h b/src/bin/lttng-relayd/lttng-relayd.h index 4d2361567..c08c17a4f 100644 --- a/src/bin/lttng-relayd/lttng-relayd.h +++ b/src/bin/lttng-relayd/lttng-relayd.h @@ -239,6 +239,8 @@ extern const char *tracing_group_name; extern const char * const config_section_name; +extern int thread_quit_pipe[2]; + struct relay_stream *relay_stream_find_by_id(uint64_t stream_id); void lttng_relay_notify_ready(void); diff --git a/src/bin/lttng-relayd/main.c b/src/bin/lttng-relayd/main.c index 62e149ed2..789e3300a 100644 --- a/src/bin/lttng-relayd/main.c +++ b/src/bin/lttng-relayd/main.c @@ -90,7 +90,7 @@ const char * const config_section_name = "relayd"; * Quit pipe for all threads. This permits a single cancellation point * for all threads when receiving an event on the pipe. */ -static int thread_quit_pipe[2] = { -1, -1 }; +int thread_quit_pipe[2] = { -1, -1 }; /* * This pipe is used to inform the worker thread that a command is queued and @@ -2998,7 +2998,7 @@ int main(int argc, char **argv) goto exit_listener; } - ret = live_start_threads(live_uri, relay_ctx, thread_quit_pipe); + ret = live_start_threads(live_uri, relay_ctx); if (ret != 0) { ERR("Starting live viewer threads"); goto exit_live; -- 2.34.1