From: Mathieu Desnoyers Date: Mon, 5 Jan 2015 21:43:08 +0000 (-0500) Subject: Fix: exit threads not only on goto restart X-Git-Tag: v2.4.4~20 X-Git-Url: https://git.lttng.org./?a=commitdiff_plain;h=f32e5e29c42a3a73186f40385564137eff058146;p=lttng-tools.git 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 6754cee67..700149fe4 100644 --- a/src/common/consumer.c +++ b/src/common/consumer.c @@ -2179,14 +2179,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(); @@ -2201,7 +2193,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; @@ -2757,14 +2752,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"); @@ -2779,6 +2766,9 @@ restart: ERR("Poll EINTR catched"); goto restart; } + if (LTTNG_POLL_GETNB(&events) == 0) { + err = 0; /* All is OK */ + } goto end; }