X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Fbin%2Flttng-sessiond%2Fcmd.c;h=46a758e27eab8f9b01c502256bde42a60b32702d;hb=979e618e0c03933b16cba3a83285938b25045bdc;hp=1404e7f33f68d0e5ecec0f1d9544f330c7493526;hpb=fb54cdbf2a8ff53e9dc11403a8aca643bbdde9c0;p=lttng-tools.git diff --git a/src/bin/lttng-sessiond/cmd.c b/src/bin/lttng-sessiond/cmd.c index 1404e7f33..46a758e27 100644 --- a/src/bin/lttng-sessiond/cmd.c +++ b/src/bin/lttng-sessiond/cmd.c @@ -939,12 +939,23 @@ error: * Command LTTNG_ADD_CONTEXT processed by the client thread. */ int cmd_add_context(struct ltt_session *session, int domain, - char *channel_name, char *event_name, struct lttng_event_context *ctx) + char *channel_name, char *event_name, struct lttng_event_context *ctx, + int kwpipe) { int ret; switch (domain) { case LTTNG_DOMAIN_KERNEL: + assert(session->kernel_session); + + if (session->kernel_session->channel_count == 0) { + /* Create default channel */ + ret = channel_kernel_create(session->kernel_session, NULL, kwpipe); + if (ret != LTTNG_OK) { + goto error; + } + } + /* Add kernel context to kernel tracer */ ret = context_kernel_add(session->kernel_session, ctx, event_name, channel_name); @@ -955,9 +966,28 @@ int cmd_add_context(struct ltt_session *session, int domain, case LTTNG_DOMAIN_UST: { struct ltt_ust_session *usess = session->ust_session; - assert(usess); + unsigned int chan_count = + lttng_ht_get_count(usess->domain_global.channels); + if (chan_count == 0) { + struct lttng_channel *attr; + /* Create default channel */ + attr = channel_new_default_attr(domain); + if (attr == NULL) { + ret = LTTNG_ERR_FATAL; + goto error; + } + + ret = channel_ust_create(usess, domain, attr); + if (ret != LTTNG_OK) { + free(attr); + goto error; + } + free(attr); + } + + ret = context_ust_add(usess, domain, ctx, event_name, channel_name); if (ret != LTTNG_OK) { goto error;