health_register(health_sessiond, HEALTH_SESSIOND_TYPE_HT_CLEANUP);
if (testpoint(sessiond_thread_ht_cleanup)) {
+ DBG("[ht-thread] testpoint.");
goto error_testpoint;
}
ret = sessiond_set_ht_cleanup_thread_pollset(&events, 2);
if (ret < 0) {
+ DBG("[ht-thread] sessiond_set_ht_cleanup_thread_pollset error %d.", ret);
goto error_poll_create;
}
/* Add pipe to the pollset. */
ret = lttng_poll_add(&events, ht_cleanup_pipe[0], LPOLLIN | LPOLLERR);
if (ret < 0) {
+ DBG("[ht-thread] lttng_poll_add error %d.", ret);
goto error;
}
health_code_update();
while (1) {
- int handled_event;
-
- DBG3("[ht-thread] Polling on %d fds.",
- LTTNG_POLL_GETNB(&events));
+ DBG3("[ht-thread] Polling.");
/* Inifinite blocking call, waiting for transmission */
restart:
- handled_event = 0;
health_poll_entry();
ret = lttng_poll_wait(&events, -1);
+ DBG3("[ht-thread] Returning from poll on %d fds.",
+ LTTNG_POLL_GETNB(&events));
health_poll_exit();
if (ret < 0) {
/*
revents = LTTNG_POLL_GETEV(&events, i);
pollfd = LTTNG_POLL_GETFD(&events, i);
+ if (!revents) {
+ /* No activity for this FD (poll implementation). */
+ continue;
+ }
+
if (pollfd != ht_cleanup_pipe[0]) {
continue;
}
health_code_update();
}
- /* Only check cleanup quit when no more work to do. */
- if (handled_event) {
- continue;
- }
-
for (i = 0; i < nb_fd; i++) {
health_code_update();
revents = LTTNG_POLL_GETEV(&events, i);
pollfd = LTTNG_POLL_GETFD(&events, i);
+ if (!revents) {
+ /* No activity for this FD (poll implementation). */
+ continue;
+ }
+
if (pollfd == ht_cleanup_pipe[0]) {
continue;
}
ret = sessiond_check_ht_cleanup_quit(pollfd, revents);
if (ret) {
err = 0;
+ DBG("[ht-cleanup] quit.");
goto exit;
}
}