X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Fbin%2Flttng-sessiond%2Fht-cleanup.c;h=0469f920bfec933ec0b779f8da1cd8d49ed064a4;hb=73664f816b1512231bf44679eea5a3c91ca619ec;hp=7a33840c992fa1e3bb6bb8c2db38195ffb331dcb;hpb=0b2dc8df2a6d7b3341a72a04767dd6328907c97c;p=lttng-tools.git diff --git a/src/bin/lttng-sessiond/ht-cleanup.c b/src/bin/lttng-sessiond/ht-cleanup.c index 7a33840c9..0469f920b 100644 --- a/src/bin/lttng-sessiond/ht-cleanup.c +++ b/src/bin/lttng-sessiond/ht-cleanup.c @@ -16,6 +16,7 @@ */ #define _GNU_SOURCE +#define _LGPL_SOURCE #include #include @@ -23,11 +24,13 @@ #include #include "lttng-sessiond.h" -#include "health.h" +#include "health-sessiond.h" +#include "testpoint.h" void *thread_ht_cleanup(void *data) { int ret, i, pollfd, err = -1; + ssize_t size_ret; uint32_t revents, nb_fd; struct lttng_poll_event events; @@ -36,7 +39,11 @@ void *thread_ht_cleanup(void *data) rcu_register_thread(); rcu_thread_online(); - health_register(HEALTH_TYPE_HT_CLEANUP); + health_register(health_sessiond, HEALTH_SESSIOND_TYPE_HT_CLEANUP); + + if (testpoint(sessiond_thread_ht_cleanup)) { + goto error_testpoint; + } health_code_update(); @@ -100,11 +107,10 @@ restart: goto error; } - do { - /* Get socket from dispatch thread. */ - ret = read(ht_cleanup_pipe[0], &ht, sizeof(ht)); - } while (ret < 0 && errno == EINTR); - if (ret < 0 || ret < sizeof(ht)) { + /* Get socket from dispatch thread. */ + size_ret = lttng_read(ht_cleanup_pipe[0], &ht, + sizeof(ht)); + if (size_ret < sizeof(ht)) { PERROR("ht cleanup notify pipe"); goto error; } @@ -125,6 +131,7 @@ exit: error: lttng_poll_clean(&events); error_poll_create: +error_testpoint: utils_close_pipe(ht_cleanup_pipe); ht_cleanup_pipe[0] = ht_cleanup_pipe[1] = -1; DBG("[ust-thread] cleanup complete."); @@ -132,7 +139,7 @@ error_poll_create: health_error(); ERR("Health error occurred in %s", __func__); } - health_unregister(); + health_unregister(health_sessiond); rcu_thread_offline(); rcu_unregister_thread(); return NULL;