unsigned int read_timer_interval,
unsigned char *uuid,
uint32_t chan_id,
- const int *stream_fds, int nr_stream_fds)
+ const int *stream_fds, int nr_stream_fds,
+ int64_t blocking_timeout)
{
struct lttng_channel chan_priv_init;
struct lttng_ust_shm_handle *handle;
&chan_priv_init,
buf_addr, subbuf_size, num_subbuf,
switch_timer_interval, read_timer_interval,
- stream_fds, nr_stream_fds);
+ stream_fds, nr_stream_fds, blocking_timeout);
if (!handle)
return NULL;
lttng_chan = priv;
}
ret = lib_ring_buffer_reserve(&client_config, ctx);
- if (ret)
+ if (caa_unlikely(ret))
goto put;
+ if (caa_likely(ctx->ctx_len
+ >= sizeof(struct lttng_ust_lib_ring_buffer_ctx))) {
+ if (lib_ring_buffer_backend_get_pages(&client_config, ctx,
+ &ctx->backend_pages)) {
+ ret = -EPERM;
+ goto put;
+ }
+ }
lttng_write_event_header(&client_config, ctx, event_id);
return 0;
put: