X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=lttng-sessiond%2Fmain.c;h=75732a334c376cb5a0b5c7fd666c10ffc3cbccde;hp=7e4000a0fd1183365a9ccc7746e47297f0cb9d66;hb=8f69e5eb13ccfc939f1a014d7244c687e1a49450;hpb=35a9059d90ff33b4cfd57ad613969e333dba23a1 diff --git a/lttng-sessiond/main.c b/lttng-sessiond/main.c index 7e4000a0f..75732a334 100644 --- a/lttng-sessiond/main.c +++ b/lttng-sessiond/main.c @@ -1532,7 +1532,7 @@ static pid_t spawn_consumerd(struct consumer_data *consumer_data) break; case LTTNG_CONSUMER64_UST: { - char *tmpnew; + char *tmpnew = NULL; if (consumerd64_libdir[0] != '\0') { char *tmp; @@ -2073,6 +2073,11 @@ static int list_lttng_ust_global_events(char *channel_name, case LTTNG_UST_FUNCTION: tmp[i].type = LTTNG_EVENT_FUNCTION; break; + case LTTNG_UST_TRACEPOINT_LOGLEVEL: + /* TODO */ + ret = -LTTCOMM_NOT_IMPLEMENTED; + goto error; + break; } i++; } @@ -2191,6 +2196,12 @@ static int cmd_disable_channel(struct ltt_session *session, goto error; } + /* Already disabled */ + if (!uchan->enabled) { + DBG2("UST channel %s already disabled", channel_name); + break; + } + ret = ust_app_disable_channel_glb(usess, uchan); if (ret < 0) { ret = LTTCOMM_UST_DISABLE_FAIL; @@ -2299,28 +2310,32 @@ static int cmd_enable_channel(struct ltt_session *session, goto error; } - rcu_read_lock(); - hashtable_add_unique(usess->domain_global.channels, &uchan->node); - rcu_read_unlock(); - DBG2("UST channel %s added to global domain HT", attr->name); - /* Add channel to all registered applications */ ret = ust_app_create_channel_glb(usess, uchan); if (ret != 0) { ret = LTTCOMM_UST_CHAN_FAIL; goto error; } + + rcu_read_lock(); + hashtable_add_unique(usess->domain_global.channels, &uchan->node); + rcu_read_unlock(); + + DBG2("UST channel %s added to global domain HT", attr->name); } else { /* If already enabled, everything is OK */ if (uchan->enabled) { - ret = LTTCOMM_OK; - goto error; + break; } ret = ust_app_enable_channel_glb(usess, uchan); if (ret < 0) { - ret = LTTCOMM_UST_ENABLE_FAIL; - goto error; + if (ret != -EEXIST) { + ret = LTTCOMM_UST_CHAN_ENABLE_FAIL; + goto error; + } else { + ret = LTTCOMM_OK; + } } } @@ -2509,21 +2524,18 @@ static int cmd_add_context(struct ltt_session *session, int domain, break; case LTTNG_DOMAIN_UST: { - /* - struct ltt_ust_session *usess; + struct ltt_ust_session *usess = session->ust_session; - cds_list_for_each_entry(usess, &session->ust_session_list.head, list) { - ret = context_ust_add(usess, ctx, - event_name, channel_name, domain); - if (ret != LTTCOMM_OK) { - goto error; - } + ret = context_ust_add(usess, domain, ctx, event_name, channel_name); + if (ret != LTTCOMM_OK) { + goto error; } break; - */ } + case LTTNG_DOMAIN_UST_EXEC_NAME: + case LTTNG_DOMAIN_UST_PID: + case LTTNG_DOMAIN_UST_PID_FOLLOW_CHILDREN: default: - /* TODO: UST other domains */ ret = LTTCOMM_NOT_IMPLEMENTED; goto error; } @@ -2665,15 +2677,16 @@ static int cmd_enable_event_all(struct ltt_session *session, int domain, if (ret != LTTCOMM_OK) { goto error; } - } - /* Get the newly created kernel channel pointer */ - kchan = trace_kernel_get_channel_by_name(channel_name, - session->kernel_session); - if (kchan == NULL) { - /* This sould not happen... */ - ret = LTTCOMM_FATAL; - goto error; + /* Get the newly created kernel channel pointer */ + kchan = trace_kernel_get_channel_by_name(channel_name, + session->kernel_session); + if (kchan == NULL) { + /* This sould not happen... */ + ret = LTTCOMM_FATAL; + goto error; + } + } switch (event_type) { @@ -2698,6 +2711,8 @@ static int cmd_enable_event_all(struct ltt_session *session, int domain, ret = LTTCOMM_KERN_ENABLE_FAIL; goto error; } + + /* Manage return value */ if (ret != LTTCOMM_OK) { goto error; }