From: Jérémie Galarneau Date: Tue, 9 Feb 2016 20:16:38 +0000 (-0500) Subject: Create agent on channel creation X-Git-Tag: v2.8.0-rc1~169 X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=commitdiff_plain;h=b63d638bfff6105d7de7fe88792b79148990bc39 Create agent on channel creation Signed-off-by: Jérémie Galarneau --- diff --git a/src/bin/lttng-sessiond/channel.c b/src/bin/lttng-sessiond/channel.c index 7c95a0d21..8ceb4e893 100644 --- a/src/bin/lttng-sessiond/channel.c +++ b/src/bin/lttng-sessiond/channel.c @@ -31,6 +31,7 @@ #include "ust-ctl.h" #include "utils.h" #include "ust-app.h" +#include "agent.h" /* * Return allocated channel attributes. @@ -272,6 +273,7 @@ int channel_ust_create(struct ltt_ust_session *usess, int ret = LTTNG_OK; struct ltt_ust_channel *uchan = NULL; struct lttng_channel *defattr = NULL; + enum lttng_domain_type domain = LTTNG_DOMAIN_UST; assert(usess); @@ -283,6 +285,18 @@ int channel_ust_create(struct ltt_ust_session *usess, goto error; } attr = defattr; + } else { + /* + * HACK: Set the channel's subdomain (JUL, Log4j, Python, etc.) + * based on the default name. + */ + if (!strcmp(attr->name, DEFAULT_JUL_CHANNEL_NAME)) { + domain = LTTNG_DOMAIN_JUL; + } else if (!strcmp(attr->name, DEFAULT_LOG4J_CHANNEL_NAME)) { + domain = LTTNG_DOMAIN_LOG4J; + } else if (!strcmp(attr->name, DEFAULT_PYTHON_CHANNEL_NAME)) { + domain = LTTNG_DOMAIN_PYTHON; + } } if (usess->snapshot_mode) { @@ -343,24 +357,12 @@ int channel_ust_create(struct ltt_ust_session *usess, } /* Create UST channel */ - uchan = trace_ust_create_channel(attr, LTTNG_DOMAIN_UST); + uchan = trace_ust_create_channel(attr, domain); if (uchan == NULL) { ret = LTTNG_ERR_FATAL; goto error; } - /* - * HACK: Set the channel's subdomain (JUL, Log4j, Python, etc.) - * based on the default name. - */ - if (!strcmp(uchan->name, DEFAULT_JUL_CHANNEL_NAME)) { - uchan->domain = LTTNG_DOMAIN_JUL; - } else if (!strcmp(uchan->name, DEFAULT_LOG4J_CHANNEL_NAME)) { - uchan->domain = LTTNG_DOMAIN_LOG4J; - } else if (!strcmp(uchan->name, DEFAULT_PYTHON_CHANNEL_NAME)) { - uchan->domain = LTTNG_DOMAIN_PYTHON; - } - uchan->enabled = 1; if (trace_ust_is_max_id(usess->used_channel_id)) { ret = LTTNG_ERR_UST_CHAN_FAIL; @@ -405,6 +407,18 @@ int channel_ust_create(struct ltt_ust_session *usess, rcu_read_unlock(); DBG2("Channel %s created successfully", uchan->name); + if (domain != LTTNG_DOMAIN_UST) { + struct agent *agt = trace_ust_find_agent(usess, domain); + + if (!agt) { + agt = agent_create(domain); + if (!agt) { + ret = LTTNG_ERR_NOMEM; + goto error_free_chan; + } + agent_add(agt, usess->agents); + } + } free(defattr); return LTTNG_OK;