X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=src%2Fbin%2Flttng-sessiond%2Fthread-utils.c;h=549cd69f867e23998220f01e5e80174520b83014;hb=b0a23296344e57bd2e48e62ec2d7e0d8a38661bb;hp=99b8298983fa6a7a8f489bcb7222a198b6d217dc;hpb=a7333da73c2083281c5ec833d041b7acf0d10d0b;p=lttng-tools.git diff --git a/src/bin/lttng-sessiond/thread-utils.c b/src/bin/lttng-sessiond/thread-utils.c index 99b829898..549cd69f8 100644 --- a/src/bin/lttng-sessiond/thread-utils.c +++ b/src/bin/lttng-sessiond/thread-utils.c @@ -20,6 +20,9 @@ #include "lttng-sessiond.h" #include "utils.h" #include +#include + +#define USEC_PER_SEC 1000000 /* * Quit pipe for all threads. This permits a single cancellation point @@ -67,6 +70,8 @@ int sessiond_check_thread_quit_pipe(int fd, uint32_t events) /* * Wait for a notification on the quit pipe (with a timeout). * + * A timeout value of -1U means no timeout. + * * Returns 1 if the caller should quit, 0 if the timeout was reached, and * -1 if an error was encountered. */ @@ -79,11 +84,12 @@ int sessiond_wait_for_quit_pipe(unsigned int timeout_us) FD_ZERO(&read_fds); FD_SET(thread_quit_pipe[0], &read_fds); memset(&timeout, 0, sizeof(timeout)); - timeout.tv_usec = timeout_us; + timeout.tv_sec = timeout_us / USEC_PER_SEC; + timeout.tv_usec = timeout_us % USEC_PER_SEC; while (true) { ret = select(thread_quit_pipe[0] + 1, &read_fds, NULL, NULL, - &timeout); + timeout_us != -1U ? &timeout : NULL); if (ret < 0 && errno == EINTR) { /* Retry on interrupt. */ continue;