X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fbin%2Flttng-sessiond%2Ftrace-ust.c;h=4001ec87bdd8359f6224a1915e84c62f9c22486a;hp=c8b3b72f91ca3343a9a507dd343d5447ea6eb323;hb=53a80697a772bc2e260e3dff006f910be6709f04;hpb=fc4705fe99b46c430112590c66abd74e4191c388 diff --git a/src/bin/lttng-sessiond/trace-ust.c b/src/bin/lttng-sessiond/trace-ust.c index c8b3b72f9..4001ec87b 100644 --- a/src/bin/lttng-sessiond/trace-ust.c +++ b/src/bin/lttng-sessiond/trace-ust.c @@ -109,6 +109,26 @@ struct ltt_ust_session *trace_ust_create_session(char *path, /* Alloc UST global domain channels' HT */ lus->domain_global.channels = lttng_ht_new(0, LTTNG_HT_TYPE_STRING); + lus->consumer = consumer_create_output(CONSUMER_DST_LOCAL); + if (lus->consumer == NULL) { + goto error; + } + + /* + * The tmp_consumer stays NULL until a set_consumer_uri command is + * executed. At this point, the consumer should be nullify until an + * enable_consumer command. This assignment is symbolic since we've zmalloc + * the struct. + */ + lus->tmp_consumer = NULL; + + /* Use the default consumer output which is the tracing session path. */ + ret = snprintf(lus->consumer->dst.trace_path, PATH_MAX, "%s/ust", path); + if (ret < 0) { + PERROR("snprintf UST consumer trace path"); + goto error; + } + /* Set session path */ ret = snprintf(lus->pathname, PATH_MAX, "%s/ust", path); if (ret < 0) { @@ -152,7 +172,7 @@ struct ltt_ust_channel *trace_ust_create_channel(struct lttng_channel *chan, luc->attr.num_subbuf = chan->attr.num_subbuf; luc->attr.switch_timer_interval = chan->attr.switch_timer_interval; luc->attr.read_timer_interval = chan->attr.read_timer_interval; - luc->attr.output = chan->attr.output; + luc->attr.output = (enum lttng_ust_output) chan->attr.output; /* Translate to UST output enum */ switch (luc->attr.output) { @@ -250,6 +270,10 @@ struct ltt_ust_event *trace_ust_create_event(struct lttng_event *ev) lttng_ht_node_init_str(&lue->node, lue->attr.name); /* Alloc context hash tables */ lue->ctx = lttng_ht_new(0, LTTNG_HT_TYPE_ULONG); + if (lue->ctx == NULL) { + ERR("Unable to create context hash table for event %s", ev->name); + goto error_free_event; + } DBG2("Trace UST event %s, loglevel (%d,%d) created", lue->attr.name, lue->attr.loglevel_type, @@ -258,7 +282,6 @@ struct ltt_ust_event *trace_ust_create_event(struct lttng_event *ev) return lue; error_free_event: - lttng_ht_destroy(lue->ctx); free(lue); error: return NULL; @@ -387,7 +410,7 @@ void trace_ust_destroy_event(struct ltt_ust_event *event) { DBG2("Trace destroy UST event %s", event->attr.name); destroy_contexts(event->ctx); - + free(event->filter); free(event); }