X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fbin%2Flttng-sessiond%2Fcontext.c;fp=src%2Fbin%2Flttng-sessiond%2Fcontext.c;h=1725c6a107d429616b09dab83d01623ba722ad2a;hp=ffd6e3ad50f3d3702da54903c6b7afc703360494;hb=bdf640139afb02572eb23f014e4a61ad68fdfeb1;hpb=e9492550eb58aff5f2a20ffd654fb46f8b9a87ea diff --git a/src/bin/lttng-sessiond/context.c b/src/bin/lttng-sessiond/context.c index ffd6e3ad5..1725c6a10 100644 --- a/src/bin/lttng-sessiond/context.c +++ b/src/bin/lttng-sessiond/context.c @@ -1,5 +1,6 @@ /* - * Copyright (C) 2011 - David Goulet + * Copyright (C) 2011 - David Goulet + * Copyright (C) 2016 - Jérémie Galarneau * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License, version 2 only, @@ -29,6 +30,7 @@ #include "kernel.h" #include "ust-app.h" #include "trace-ust.h" +#include "agent.h" /* * Add kernel context to all channel. @@ -92,12 +94,11 @@ static int add_uctx_to_channel(struct ltt_ust_session *usess, struct ltt_ust_channel *uchan, struct lttng_event_context *ctx) { int ret; - struct ltt_ust_context *uctx; + struct ltt_ust_context *uctx = NULL; assert(usess); assert(uchan); assert(ctx); - assert(domain == LTTNG_DOMAIN_UST); /* Check if context is duplicate */ cds_list_for_each_entry(uctx, &uchan->ctx_list, list) { @@ -106,6 +107,38 @@ static int add_uctx_to_channel(struct ltt_ust_session *usess, goto duplicate; } } + uctx = NULL; + + switch (domain) { + case LTTNG_DOMAIN_JUL: + case LTTNG_DOMAIN_LOG4J: + { + struct agent *agt = trace_ust_find_agent(usess, domain); + + if (!agt) { + agt = agent_create(domain); + if (!agt) { + ret = LTTNG_ERR_NOMEM; + goto error; + } + agent_add(agt, usess->agents); + } + ret = agent_add_context(ctx, agt); + if (ret != LTTNG_OK) { + goto error; + } + + ret = agent_enable_context(ctx, domain); + if (ret != LTTNG_OK) { + goto error; + } + break; + } + case LTTNG_DOMAIN_UST: + break; + default: + assert(0); + } /* Create ltt UST context */ uctx = trace_ust_create_context(ctx); @@ -246,7 +279,6 @@ int context_ust_add(struct ltt_ust_session *usess, assert(usess); assert(ctx); assert(channel_name); - assert(domain == LTTNG_DOMAIN_UST); rcu_read_lock();