X-Git-Url: http://git.lttng.org/?a=blobdiff_plain;f=src%2Fcommon%2Fconsumer%2Fconsumer-timer.c;fp=src%2Fcommon%2Fconsumer%2Fconsumer-timer.c;h=ebd8b9b88bb273b37943150443993a54823d53fa;hb=bec11ce9cd8cbf36ad6d58b79d5a37f4d78d9a14;hp=08865029ddd035763ee2d58cccebb2baed6f8621;hpb=52047334e7ff4f3dabe54d20e671a7a9b752738f;p=lttng-tools.git diff --git a/src/common/consumer/consumer-timer.c b/src/common/consumer/consumer-timer.c index 08865029d..ebd8b9b88 100644 --- a/src/common/consumer/consumer-timer.c +++ b/src/common/consumer/consumer-timer.c @@ -61,6 +61,10 @@ static void setmask(sigset_t *mask) if (ret) { PERROR("sigaddset live"); } + ret = sigaddset(mask, LTTNG_CONSUMER_SIG_EXIT); + if (ret) { + PERROR("sigaddset exit"); + } } /* @@ -546,7 +550,8 @@ int consumer_signal_init(void) /* * This thread is the sighandler for signals LTTNG_CONSUMER_SIG_SWITCH, - * LTTNG_CONSUMER_SIG_TEARDOWN and LTTNG_CONSUMER_SIG_LIVE. + * LTTNG_CONSUMER_SIG_TEARDOWN, LTTNG_CONSUMER_SIG_LIVE, and + * LTTNG_CONSUMER_SIG_EXIT. */ void *consumer_timer_thread(void *data) { @@ -589,6 +594,9 @@ void *consumer_timer_thread(void *data) DBG("Signal timer metadata thread teardown"); } else if (signr == LTTNG_CONSUMER_SIG_LIVE) { live_timer(ctx, info.si_signo, &info, NULL); + } else if (signr == LTTNG_CONSUMER_SIG_EXIT) { + assert(consumer_quit); + goto end; } else { ERR("Unexpected signal %d\n", info.si_signo); } @@ -597,10 +605,8 @@ void *consumer_timer_thread(void *data) error_testpoint: /* Only reached in testpoint error */ health_error(); +end: health_unregister(health_consumerd); - rcu_unregister_thread(); - - /* Never return */ return NULL; }