X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=liblttng-ust%2Fltt-events.c;h=d31412c6747490db0428826c0c028d2c36c25d6d;hb=a3f61e7f689a5fc60b833a773f462989dc6cc78f;hp=fc7dfc7c78a7334f6676e8b6ac9b2242a3bae855;hpb=84ac63b891bfc8826584719a71f071b06ca66675;p=lttng-ust.git diff --git a/liblttng-ust/ltt-events.c b/liblttng-ust/ltt-events.c index fc7dfc7c..d31412c6 100644 --- a/liblttng-ust/ltt-events.c +++ b/liblttng-ust/ltt-events.c @@ -295,7 +295,7 @@ struct ltt_channel *ltt_channel_create(struct ltt_session *session, int *shm_fd, int *wait_fd, uint64_t *memory_map_size) { - struct ltt_channel *chan; + struct ltt_channel *chan = NULL; struct ltt_transport *transport; if (session->been_active) @@ -306,30 +306,25 @@ struct ltt_channel *ltt_channel_create(struct ltt_session *session, transport_name); goto notransport; } - chan = zmalloc(sizeof(struct ltt_channel)); - if (!chan) - goto nomem; - chan->session = session; - chan->id = session->free_chan_id++; /* * Note: the channel creation op already writes into the packet * headers. Therefore the "chan" information used as input * should be already accessible. */ - transport->ops.channel_create("[lttng]", chan, buf_addr, + chan = transport->ops.channel_create("[lttng]", buf_addr, subbuf_size, num_subbuf, switch_timer_interval, read_timer_interval, shm_fd, wait_fd, memory_map_size); - if (!chan->chan) + if (!chan) goto create_error; + chan->session = session; + chan->id = session->free_chan_id++; chan->enabled = 1; chan->ops = &transport->ops; cds_list_add(&chan->list, &session->chan); return chan; create_error: - free(chan); -nomem: notransport: active: return NULL; @@ -341,10 +336,9 @@ active: static void _ltt_channel_destroy(struct ltt_channel *chan) { - chan->ops->channel_destroy(chan); cds_list_del(&chan->list); lttng_destroy_context(chan->ctx); - free(chan); + chan->ops->channel_destroy(chan); } /*