switch (attr->type) {
case LTTNG_UST_CHAN_PER_CPU:
if (attr->output == LTTNG_UST_MMAP) {
- transport_name = attr->overwrite ?
- "relay-overwrite-mmap" : "relay-discard-mmap";
+ if (attr->overwrite) {
+ if (attr->read_timer_interval == 0) {
+ transport_name = "relay-overwrite-mmap";
+ } else {
+ transport_name = "relay-overwrite-rt-mmap";
+ }
+ } else {
+ if (attr->read_timer_interval == 0) {
+ transport_name = "relay-discard-mmap";
+ } else {
+ transport_name = "relay-discard-rt-mmap";
+ }
+ }
} else {
return NULL;
}
}
chan->chan->ops = &transport->ops;
memcpy(&chan->attr, attr, sizeof(chan->attr));
+ chan->wait_fd = ustctl_channel_get_wait_fd(chan);
+ chan->wakeup_fd = ustctl_channel_get_wakeup_fd(chan);
return chan;
chan_error:
int ustctl_channel_close_wait_fd(struct ustctl_consumer_channel *consumer_chan)
{
struct channel *chan;
+ int ret;
chan = consumer_chan->chan->chan;
- return ring_buffer_channel_close_wait_fd(&chan->backend.config,
+ ret = ring_buffer_channel_close_wait_fd(&chan->backend.config,
chan, chan->handle);
+ if (!ret)
+ consumer_chan->wait_fd = -1;
+ return ret;
}
int ustctl_channel_close_wakeup_fd(struct ustctl_consumer_channel *consumer_chan)
{
struct channel *chan;
+ int ret;
chan = consumer_chan->chan->chan;
- return ring_buffer_channel_close_wakeup_fd(&chan->backend.config,
+ ret = ring_buffer_channel_close_wakeup_fd(&chan->backend.config,
chan, chan->handle);
+ if (!ret)
+ consumer_chan->wakeup_fd = -1;
+ return ret;
}
int ustctl_stream_close_wait_fd(struct ustctl_consumer_stream *stream)
init_usterr();
lttng_ring_buffer_metadata_client_init();
lttng_ring_buffer_client_overwrite_init();
+ lttng_ring_buffer_client_overwrite_rt_init();
lttng_ring_buffer_client_discard_init();
+ lttng_ring_buffer_client_discard_rt_init();
lib_ringbuffer_signal_init();
}
static __attribute__((destructor))
void ustctl_exit(void)
{
+ lttng_ring_buffer_client_discard_rt_exit();
lttng_ring_buffer_client_discard_exit();
+ lttng_ring_buffer_client_overwrite_rt_exit();
lttng_ring_buffer_client_overwrite_exit();
lttng_ring_buffer_metadata_client_exit();
}