X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Fbin%2Flttng-sessiond%2Futils.c;h=c9c51ede5abcb2ada1ffa7253b946e1ca646467c;hb=3a89d11a0ad0ca327e2df99eaf13d3a0c63e3af3;hp=5ea337450ecf63e8fc1f19b6e7e336804e869f68;hpb=2f77fc4b3720dc8f75847130498c2d4aad7c03ec;p=lttng-tools.git diff --git a/src/bin/lttng-sessiond/utils.c b/src/bin/lttng-sessiond/utils.c index 5ea337450..c9c51ede5 100644 --- a/src/bin/lttng-sessiond/utils.c +++ b/src/bin/lttng-sessiond/utils.c @@ -23,35 +23,51 @@ #include #include "utils.h" +#include "lttng-sessiond.h" + +int ht_cleanup_pipe[2] = { -1, -1 }; /* * Write to writable pipe used to notify a thread. */ int notify_thread_pipe(int wpipe) { - int ret; + ssize_t ret; /* Ignore if the pipe is invalid. */ if (wpipe < 0) { return 0; } - do { - ret = write(wpipe, "!", 1); - } while (ret < 0 && errno == EINTR); - if (ret < 0) { + ret = lttng_write(wpipe, "!", 1); + if (ret < 1) { PERROR("write poll pipe"); } - return ret; + return (int) ret; } -/* - * Return pointer to home directory path using the env variable HOME. - * - * No home, NULL is returned. - */ -const char *get_home_dir(void) +void ht_cleanup_push(struct lttng_ht *ht) { - return ((const char *) getenv("HOME")); + ssize_t ret; + int fd = ht_cleanup_pipe[1]; + + if (!ht) { + return; + } + if (fd < 0) + return; + ret = lttng_write(fd, &ht, sizeof(ht)); + if (ret < sizeof(ht)) { + PERROR("write ht cleanup pipe %d", fd); + if (ret < 0) { + ret = -errno; + } + goto error; + } + + /* All good. Don't send back the write positive ret value. */ + ret = 0; +error: + assert(!ret); }