X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Fbin%2Flttng-sessiond%2Fnotification-thread-commands.cpp;h=25c987b67fcb1f6cc11cab7846982a1f1c5da864;hb=139a8d250fb18f8ffc95b0936f7285f7b484b72f;hp=ce499eb1cb3418ac10085f1ac98baa3cf2bf2d56;hpb=c9e313bc594f40a86eed237dce222c0fc99c957f;p=lttng-tools.git diff --git a/src/bin/lttng-sessiond/notification-thread-commands.cpp b/src/bin/lttng-sessiond/notification-thread-commands.cpp index ce499eb1c..25c987b67 100644 --- a/src/bin/lttng-sessiond/notification-thread-commands.cpp +++ b/src/bin/lttng-sessiond/notification-thread-commands.cpp @@ -33,7 +33,7 @@ int run_command_wait(struct notification_thread_handle *handle, cds_list_add_tail(&cmd->cmd_list_node, &handle->cmd_queue.list); /* Wake-up thread. */ - ret = lttng_write(lttng_pipe_get_writefd(handle->cmd_queue.event_pipe), + ret = lttng_write(handle->cmd_queue.event_fd, ¬ification_counter, sizeof(notification_counter)); if (ret != sizeof(notification_counter)) { PERROR("write to notification thread's queue event fd"); @@ -59,7 +59,7 @@ struct notification_thread_command *notification_thread_command_copy( { struct notification_thread_command *new_cmd; - new_cmd = (notification_thread_command *) zmalloc(sizeof(*new_cmd)); + new_cmd = zmalloc(); if (!new_cmd) { goto end; } @@ -89,7 +89,7 @@ int run_command_no_wait(struct notification_thread_handle *handle, cds_list_add_tail(&new_cmd->cmd_list_node, &handle->cmd_queue.list); /* Wake-up thread. */ - ret = lttng_write(lttng_pipe_get_writefd(handle->cmd_queue.event_pipe), + ret = lttng_write(handle->cmd_queue.event_fd, ¬ification_counter, sizeof(notification_counter)); if (ret != sizeof(notification_counter)) { PERROR("write to notification thread's queue event fd"); @@ -160,9 +160,58 @@ end: return ret_code; } +enum lttng_error_code notification_thread_command_add_session( + struct notification_thread_handle *handle, + uint64_t session_id, const char *session_name, uid_t session_uid, gid_t session_gid) +{ + int ret; + enum lttng_error_code ret_code; + struct notification_thread_command cmd = {}; + + init_notification_thread_command(&cmd); + + cmd.type = NOTIFICATION_COMMAND_TYPE_ADD_SESSION; + cmd.parameters.add_session.session_id = session_id; + cmd.parameters.add_session.session_name = session_name; + cmd.parameters.add_session.session_uid = session_uid; + cmd.parameters.add_session.session_gid = session_gid; + + ret = run_command_wait(handle, &cmd); + if (ret) { + ret_code = LTTNG_ERR_UNK; + goto end; + } + ret_code = cmd.reply_code; +end: + return ret_code; +} + +enum lttng_error_code notification_thread_command_remove_session( + struct notification_thread_handle *handle, + uint64_t session_id) +{ + int ret; + enum lttng_error_code ret_code; + struct notification_thread_command cmd = {}; + + init_notification_thread_command(&cmd); + + cmd.type = NOTIFICATION_COMMAND_TYPE_REMOVE_SESSION; + cmd.parameters.remove_session.session_id = session_id; + + ret = run_command_wait(handle, &cmd); + if (ret) { + ret_code = LTTNG_ERR_UNK; + goto end; + } + ret_code = cmd.reply_code; +end: + return ret_code; +} + enum lttng_error_code notification_thread_command_add_channel( struct notification_thread_handle *handle, - char *session_name, uid_t uid, gid_t gid, + uint64_t session_id, char *channel_name, uint64_t key, enum lttng_domain_type domain, uint64_t capacity) { @@ -173,9 +222,7 @@ enum lttng_error_code notification_thread_command_add_channel( init_notification_thread_command(&cmd); cmd.type = NOTIFICATION_COMMAND_TYPE_ADD_CHANNEL; - cmd.parameters.add_channel.session.name = session_name; - cmd.parameters.add_channel.session.uid = uid; - cmd.parameters.add_channel.session.gid = gid; + cmd.parameters.add_channel.session.id = session_id; cmd.parameters.add_channel.channel.name = channel_name; cmd.parameters.add_channel.channel.key = key; cmd.parameters.add_channel.channel.domain = domain; @@ -217,7 +264,7 @@ end: enum lttng_error_code notification_thread_command_session_rotation_ongoing( struct notification_thread_handle *handle, - const char *session_name, uid_t uid, gid_t gid, + uint64_t session_id, uint64_t trace_archive_chunk_id) { int ret; @@ -227,9 +274,7 @@ enum lttng_error_code notification_thread_command_session_rotation_ongoing( init_notification_thread_command(&cmd); cmd.type = NOTIFICATION_COMMAND_TYPE_SESSION_ROTATION_ONGOING; - cmd.parameters.session_rotation.session_name = session_name; - cmd.parameters.session_rotation.uid = uid; - cmd.parameters.session_rotation.gid = gid; + cmd.parameters.session_rotation.session_id = session_id; cmd.parameters.session_rotation.trace_archive_chunk_id = trace_archive_chunk_id; @@ -245,7 +290,7 @@ end: enum lttng_error_code notification_thread_command_session_rotation_completed( struct notification_thread_handle *handle, - const char *session_name, uid_t uid, gid_t gid, + uint64_t session_id, uint64_t trace_archive_chunk_id, struct lttng_trace_archive_location *location) { @@ -256,9 +301,7 @@ enum lttng_error_code notification_thread_command_session_rotation_completed( init_notification_thread_command(&cmd); cmd.type = NOTIFICATION_COMMAND_TYPE_SESSION_ROTATION_COMPLETED; - cmd.parameters.session_rotation.session_name = session_name; - cmd.parameters.session_rotation.uid = uid; - cmd.parameters.session_rotation.gid = gid; + cmd.parameters.session_rotation.session_id = session_id; cmd.parameters.session_rotation.trace_archive_chunk_id = trace_archive_chunk_id; cmd.parameters.session_rotation.location = location; @@ -425,7 +468,7 @@ struct lttng_event_notifier_notification *lttng_event_notifier_notification_crea LTTNG_ASSERT(domain != LTTNG_DOMAIN_NONE); LTTNG_ASSERT((payload && payload_size) || (!payload && !payload_size)); - notification = (lttng_event_notifier_notification *) zmalloc(sizeof(struct lttng_event_notifier_notification)); + notification = zmalloc(); if (notification == NULL) { ERR("Error allocating notification"); goto end;