From: Mathieu Desnoyers Date: Mon, 5 Jan 2015 21:43:08 +0000 (-0500) Subject: Fix: exit threads not only on goto restart X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=commitdiff_plain;h=d9607cd79bbe69ba8224cd56134e0e8f6fe8d51a Fix: exit threads not only on goto restart Exit threads as soon as number of FD is 0, on every loop (no need for goto restart special case). Number of FD being 0 is a sufficient condition for exiting the thread: it means the quit pipe has been removed from the poll set. Signed-off-by: Mathieu Desnoyers Signed-off-by: Jérémie Galarneau --- diff --git a/src/common/consumer.c b/src/common/consumer.c index c741a1b8e..5495327ab 100644 --- a/src/common/consumer.c +++ b/src/common/consumer.c @@ -2181,14 +2181,6 @@ void *consumer_thread_metadata_poll(void *data) DBG("Metadata main loop started"); while (1) { - health_code_update(); - - /* Only the metadata pipe is set */ - if (LTTNG_POLL_GETNB(&events) == 0 && consumer_quit == 1) { - err = 0; /* All is OK */ - goto end; - } - restart: health_code_update(); health_poll_entry(); @@ -2203,7 +2195,10 @@ restart: ERR("Poll EINTR catched"); goto restart; } - goto error; + if (LTTNG_POLL_GETNB(&events) == 0) { + err = 0; /* All is OK */ + } + goto end; } nb_fd = ret; @@ -2759,14 +2754,6 @@ void *consumer_thread_channel_poll(void *data) DBG("Channel main loop started"); while (1) { - health_code_update(); - - /* Only the channel pipe is set */ - if (LTTNG_POLL_GETNB(&events) == 0 && consumer_quit == 1) { - err = 0; /* All is OK */ - goto end; - } - restart: health_code_update(); DBG("Channel poll wait"); @@ -2781,6 +2768,9 @@ restart: ERR("Poll EINTR catched"); goto restart; } + if (LTTNG_POLL_GETNB(&events) == 0) { + err = 0; /* All is OK */ + } goto end; }