X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=ltt-sessiond%2Fmain.c;h=4da3caba0471f7977452d7412229c17cccdd2295;hp=46e6fff454e66aa7dd091fb8a49edadc1d008c53;hb=cab7ad6aa0493b9a78b16756674f80556a33c0e5;hpb=f3ed775ef4842019b396f06095b053c3a70bc3c8 diff --git a/ltt-sessiond/main.c b/ltt-sessiond/main.c index 46e6fff45..4da3caba0 100644 --- a/ltt-sessiond/main.c +++ b/ltt-sessiond/main.c @@ -1,7 +1,4 @@ /* - DBG("Creating kernel event %s for channel %s.", - cmd_ctx->lsm->u.enable.event.name, cmd_ctx->lsm->u.enable.channel_name); - * Copyright (C) 2011 - David Goulet * * This program is free software; you can redistribute it and/or @@ -826,12 +823,14 @@ static int process_client_msg(struct command_ctx *cmd_ctx) /* Need a session for kernel command */ if (cmd_ctx->lsm->cmd_type != LTTNG_KERNEL_LIST_EVENTS && cmd_ctx->session->kernel_session == NULL) { + ret = create_kernel_session(cmd_ctx->session); if (ret < 0) { ret = LTTCOMM_KERN_SESS_FAIL; goto error; } + /* Start the kernel consumer daemon */ if (kconsumerd_pid == 0) { ret = start_kconsumerd(); if (ret < 0) { @@ -874,6 +873,41 @@ static int process_client_msg(struct command_ctx *cmd_ctx) ret = LTTCOMM_OK; break; } + case LTTNG_KERNEL_DISABLE_EVENT: + { + int found = 0; + struct ltt_kernel_channel *chan; + + /* Setup lttng message with no payload */ + ret = setup_lttng_msg(cmd_ctx, 0); + if (ret < 0) { + goto setup_error; + } + + /* Get channel by name and create event for that channel */ + cds_list_for_each_entry(chan, &cmd_ctx->session->kernel_session->channel_list.head, list) { + if (strcmp(cmd_ctx->lsm->u.disable.channel_name, chan->channel->name) == 0) { + DBG("Disabling kernel event %s for channel %s.", + cmd_ctx->lsm->u.disable.name, cmd_ctx->lsm->u.disable.channel_name); + + ret = kernel_disable_event(cmd_ctx->lsm->u.disable.name, chan); + if (ret < 0) { + ret = LTTCOMM_KERN_DISABLE_FAIL; + goto error; + } + found = 1; + break; + } + } + + if (!found) { + ret = LTTCOMM_KERN_CHAN_NOT_FOUND; + } else { + kernel_wait_quiescent(kernel_tracer_fd); + ret = LTTCOMM_OK; + } + break; + } case LTTNG_KERNEL_ENABLE_EVENT: { int found = 0;