unsigned int switch_timer_interval,
unsigned int read_timer_interval,
int *shm_fd, int *wait_fd,
- uint64_t *memory_map_size)
+ uint64_t *memory_map_size,
+ struct ltt_channel *chan_priv_init)
{
- struct ltt_channel *chan;
+ struct ltt_channel *chan = NULL;
struct ltt_transport *transport;
if (session->been_active)
transport_name);
goto notransport;
}
- chan = zmalloc(sizeof(struct ltt_channel));
- if (!chan)
- goto nomem;
- chan->session = session;
- chan->id = session->free_chan_id++;
+ chan_priv_init->id = session->free_chan_id++;
+ chan_priv_init->session = session;
/*
* 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)
+ memory_map_size, chan_priv_init);
+ if (!chan)
goto create_error;
chan->enabled = 1;
chan->ops = &transport->ops;
return chan;
create_error:
- free(chan);
-nomem:
notransport:
active:
return NULL;
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);
}
/*