X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Fbin%2Flttng-sessiond%2Fnotify-apps.cpp;h=ff70ac187dcaff606ee0e8e73b97c18d99e53a7b;hb=1524f98c04431d04e50796f83a9dd29184b3a8a4;hp=0e799ff261a5b11d0822004e5293f0b0c96d1a77;hpb=7966af5763c4aaca39df9bbfa9277ff15715c720;p=lttng-tools.git diff --git a/src/bin/lttng-sessiond/notify-apps.cpp b/src/bin/lttng-sessiond/notify-apps.cpp index 0e799ff26..ff70ac187 100644 --- a/src/bin/lttng-sessiond/notify-apps.cpp +++ b/src/bin/lttng-sessiond/notify-apps.cpp @@ -7,33 +7,35 @@ #define _LGPL_SOURCE -#include -#include - -#include "fd-limit.h" -#include "lttng-sessiond.h" -#include "notify-apps.h" -#include "health-sessiond.h" -#include "testpoint.h" -#include "utils.h" -#include "thread.h" - +#include +#include + +#include "fd-limit.hpp" +#include "lttng-sessiond.hpp" +#include "notify-apps.hpp" +#include "health-sessiond.hpp" +#include "testpoint.hpp" +#include "utils.hpp" +#include "thread.hpp" + +namespace { struct thread_notifiers { struct lttng_pipe *quit_pipe; int apps_cmd_notify_pipe_read_fd; }; +} /* namespace */ /* * This thread manage application notify communication. */ static void *thread_application_notification(void *data) { - int i, ret, pollfd, err = -1; + int i, ret, err = -1; ssize_t size_ret; - uint32_t revents, nb_fd; + uint32_t nb_fd; struct lttng_poll_event events; struct thread_notifiers *notifiers = (thread_notifiers *) data; - const int quit_pipe_read_fd = lttng_pipe_get_readfd(notifiers->quit_pipe); + const auto thread_quit_pipe_fd = lttng_pipe_get_readfd(notifiers->quit_pipe); DBG("[ust-thread] Manage application notify command"); @@ -56,13 +58,12 @@ static void *thread_application_notification(void *data) /* Add notify pipe to the pollset. */ ret = lttng_poll_add(&events, notifiers->apps_cmd_notify_pipe_read_fd, - LPOLLIN | LPOLLERR | LPOLLHUP | LPOLLRDHUP); + LPOLLIN | LPOLLRDHUP); if (ret < 0) { goto error; } - ret = lttng_poll_add(&events, quit_pipe_read_fd, - LPOLLIN | LPOLLERR); + ret = lttng_poll_add(&events, thread_quit_pipe_fd, LPOLLIN); if (ret < 0) { goto error; } @@ -95,14 +96,17 @@ restart: health_code_update(); /* Fetch once the poll data */ - revents = LTTNG_POLL_GETEV(&events, i); - pollfd = LTTNG_POLL_GETFD(&events, i); + const auto revents = LTTNG_POLL_GETEV(&events, i); + const auto pollfd = LTTNG_POLL_GETFD(&events, i); - /* Thread quit pipe has been closed. Killing thread. */ - if (pollfd == quit_pipe_read_fd) { + /* Activity on thread quit pipe, exiting. */ + if (pollfd == thread_quit_pipe_fd) { + DBG("Activity on thread quit pipe"); err = 0; goto exit; - } else if (pollfd == notifiers->apps_cmd_notify_pipe_read_fd) { + } + + if (pollfd == notifiers->apps_cmd_notify_pipe_read_fd) { /* Inspect the apps cmd pipe */ int sock; @@ -116,8 +120,7 @@ restart: } health_code_update(); - ret = lttng_poll_add(&events, sock, - LPOLLIN | LPOLLERR | LPOLLHUP | LPOLLRDHUP); + ret = lttng_poll_add(&events, sock, LPOLLIN | LPOLLRDHUP); if (ret < 0) { /* * It's possible we've reached the max poll fd allowed. @@ -212,7 +215,7 @@ bool launch_application_notification_thread(int apps_cmd_notify_pipe_read_fd) struct thread_notifiers *notifiers; struct lttng_pipe *quit_pipe; - notifiers = (thread_notifiers *) zmalloc(sizeof(*notifiers)); + notifiers = zmalloc(); if (!notifiers) { goto error_alloc; }