X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fbin%2Flttng-sessiond%2Fcontext.c;h=10352d026952ec3361acccf6aa07ac97bab4b34f;hp=1b87df2e90ab03a3d95192a5afc102fc21404397;hb=645328ae989e5f50a3a49c1ac34b2fee287a3d7b;hpb=c455d428591ca798da9f1e7c2aeb7db348d74853 diff --git a/src/bin/lttng-sessiond/context.c b/src/bin/lttng-sessiond/context.c index 1b87df2e9..10352d026 100644 --- a/src/bin/lttng-sessiond/context.c +++ b/src/bin/lttng-sessiond/context.c @@ -34,7 +34,7 @@ * Add kernel context to all channel. */ static int add_kctx_all_channels(struct ltt_kernel_session *ksession, - struct lttng_kernel_context *kctx) + struct ltt_kernel_context *kctx) { int ret; struct ltt_kernel_channel *kchan; @@ -62,7 +62,7 @@ error: /* * Add kernel context to a specific channel. */ -static int add_kctx_to_channel(struct lttng_kernel_context *kctx, +static int add_kctx_to_channel(struct ltt_kernel_context *kctx, struct ltt_kernel_channel *kchan) { int ret; @@ -149,60 +149,66 @@ int context_kernel_add(struct ltt_kernel_session *ksession, { int ret; struct ltt_kernel_channel *kchan; - struct lttng_kernel_context kctx; + struct ltt_kernel_context *kctx; assert(ksession); assert(ctx); assert(channel_name); + kctx = trace_kernel_create_context(NULL); + if (!kctx) { + ret = LTTNG_ERR_NOMEM; + goto error; + } + /* Setup kernel context structure */ switch (ctx->ctx) { case LTTNG_EVENT_CONTEXT_PID: - kctx.ctx = LTTNG_KERNEL_CONTEXT_PID; + kctx->ctx.ctx = LTTNG_KERNEL_CONTEXT_PID; break; case LTTNG_EVENT_CONTEXT_PROCNAME: - kctx.ctx = LTTNG_KERNEL_CONTEXT_PROCNAME; + kctx->ctx.ctx = LTTNG_KERNEL_CONTEXT_PROCNAME; break; case LTTNG_EVENT_CONTEXT_PRIO: - kctx.ctx = LTTNG_KERNEL_CONTEXT_PRIO; + kctx->ctx.ctx = LTTNG_KERNEL_CONTEXT_PRIO; break; case LTTNG_EVENT_CONTEXT_NICE: - kctx.ctx = LTTNG_KERNEL_CONTEXT_NICE; + kctx->ctx.ctx = LTTNG_KERNEL_CONTEXT_NICE; break; case LTTNG_EVENT_CONTEXT_VPID: - kctx.ctx = LTTNG_KERNEL_CONTEXT_VPID; + kctx->ctx.ctx = LTTNG_KERNEL_CONTEXT_VPID; break; case LTTNG_EVENT_CONTEXT_TID: - kctx.ctx = LTTNG_KERNEL_CONTEXT_TID; + kctx->ctx.ctx = LTTNG_KERNEL_CONTEXT_TID; break; case LTTNG_EVENT_CONTEXT_VTID: - kctx.ctx = LTTNG_KERNEL_CONTEXT_VTID; + kctx->ctx.ctx = LTTNG_KERNEL_CONTEXT_VTID; break; case LTTNG_EVENT_CONTEXT_PPID: - kctx.ctx = LTTNG_KERNEL_CONTEXT_PPID; + kctx->ctx.ctx = LTTNG_KERNEL_CONTEXT_PPID; break; case LTTNG_EVENT_CONTEXT_VPPID: - kctx.ctx = LTTNG_KERNEL_CONTEXT_VPPID; + kctx->ctx.ctx = LTTNG_KERNEL_CONTEXT_VPPID; break; case LTTNG_EVENT_CONTEXT_HOSTNAME: - kctx.ctx = LTTNG_KERNEL_CONTEXT_HOSTNAME; + kctx->ctx.ctx = LTTNG_KERNEL_CONTEXT_HOSTNAME; break; case LTTNG_EVENT_CONTEXT_PERF_CPU_COUNTER: case LTTNG_EVENT_CONTEXT_PERF_COUNTER: - kctx.ctx = LTTNG_KERNEL_CONTEXT_PERF_CPU_COUNTER; + kctx->ctx.ctx = LTTNG_KERNEL_CONTEXT_PERF_CPU_COUNTER; break; default: return LTTNG_ERR_KERN_CONTEXT_FAIL; } - kctx.u.perf_counter.type = ctx->u.perf_counter.type; - kctx.u.perf_counter.config = ctx->u.perf_counter.config; - strncpy(kctx.u.perf_counter.name, ctx->u.perf_counter.name, + kctx->ctx.u.perf_counter.type = ctx->u.perf_counter.type; + kctx->ctx.u.perf_counter.config = ctx->u.perf_counter.config; + strncpy(kctx->ctx.u.perf_counter.name, ctx->u.perf_counter.name, LTTNG_SYMBOL_NAME_LEN); - kctx.u.perf_counter.name[LTTNG_SYMBOL_NAME_LEN - 1] = '\0'; + kctx->ctx.u.perf_counter.name[LTTNG_SYMBOL_NAME_LEN - 1] = '\0'; if (*channel_name == '\0') { - ret = add_kctx_all_channels(ksession, &kctx); + ret = add_kctx_all_channels(ksession, kctx); if (ret != LTTNG_OK) { goto error; } @@ -214,7 +220,7 @@ int context_kernel_add(struct ltt_kernel_session *ksession, goto error; } - ret = add_kctx_to_channel(&kctx, kchan); + ret = add_kctx_to_channel(kctx, kchan); if (ret != LTTNG_OK) { goto error; }