X-Git-Url: http://git.efficios.com/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fbin%2Flttng-sessiond%2Fnotification-thread.c;h=c652b6ee8417563c7c45cfec188770af6d2ce94c;hp=059e620598b68b2a84e731980d836f14bd7d1002;hb=4149ace8fa7c7a8da39272f03923df46039c5ff6;hpb=2d01d9779f90daf38b43f57ef53137a1474db97e diff --git a/src/bin/lttng-sessiond/notification-thread.c b/src/bin/lttng-sessiond/notification-thread.c index 059e62059..c652b6ee8 100644 --- a/src/bin/lttng-sessiond/notification-thread.c +++ b/src/bin/lttng-sessiond/notification-thread.c @@ -25,7 +25,6 @@ #include #include #include -#include #include #include #include @@ -69,7 +68,7 @@ * * - notification_trigger_clients_ht: * associates notification-emitting triggers to clients - * (struct notification_client_ht_node) subscribed to those + * (struct notification_client_list) subscribed to those * conditions. * The condition's hash and match functions are used directly since * all triggers in this hash table have the "notify" action. @@ -158,7 +157,6 @@ void notification_thread_handle_destroy( struct notification_thread_handle *handle) { int ret; - struct notification_thread_command *cmd, *tmp; if (!handle) { goto end; @@ -172,15 +170,7 @@ void notification_thread_handle_destroy( PERROR("close notification command queue event_fd"); } - pthread_mutex_lock(&handle->cmd_queue.lock); - /* Purge queue of in-flight commands and mark them as cancelled. */ - cds_list_for_each_entry_safe(cmd, tmp, &handle->cmd_queue.list, - cmd_list_node) { - cds_list_del(&cmd->cmd_list_node); - cmd->reply_code = LTTNG_ERR_COMMAND_CANCELLED; - futex_nto1_wake(&cmd->reply_futex); - } - pthread_mutex_unlock(&handle->cmd_queue.lock); + assert(cds_list_empty(&handle->cmd_queue.list)); pthread_mutex_destroy(&handle->cmd_queue.lock); if (handle->channel_monitoring_pipes.ust32_consumer >= 0) { @@ -219,7 +209,7 @@ struct notification_thread_handle *notification_thread_handle_create( } /* FIXME Replace eventfd by a pipe to support older kernels. */ - handle->cmd_queue.event_fd = eventfd(0, EFD_CLOEXEC); + handle->cmd_queue.event_fd = eventfd(0, EFD_CLOEXEC | EFD_SEMAPHORE); if (handle->cmd_queue.event_fd < 0) { PERROR("eventfd notification command queue"); goto error; @@ -579,7 +569,7 @@ int handle_channel_monitoring_pipe(int fd, uint32_t revents, ret = handle_notification_thread_channel_sample( state, fd, domain); if (ret) { - ERR("[notification-thread] Consumer sample handling error occured"); + ERR("[notification-thread] Consumer sample handling error occurred"); ret = -1; goto end; }