const struct lib_ring_buffer_config *config,
struct lib_ring_buffer *buf)
{
- struct lib_ring_buffer_backend *bufb;
- unsigned long sb_bindex;
- struct packet_header *header;
-
- bufb = &buf->backend;
- sb_bindex = subbuffer_id_get_index(config, bufb->buf_rsb.id);
- header = (struct packet_header *)
- lib_ring_buffer_offset_address(bufb,
- sb_bindex * bufb->chan->backend.subbuf_size);
-
- return header;
+ return lib_ring_buffer_read_offset_address(&buf->backend, 0);
}
static int client_timestamp_begin(const struct lib_ring_buffer_config *config,
return 0;
}
+static int client_current_timestamp(const struct lib_ring_buffer_config *config,
+ struct lib_ring_buffer *bufb,
+ uint64_t *ts)
+{
+ *ts = config->cb.ring_buffer_clock_read(bufb->backend.chan);
+
+ return 0;
+}
+
static const struct lib_ring_buffer_config client_config = {
.cb.ring_buffer_clock_read = client_ring_buffer_clock_read,
.cb.record_header_size = client_record_header_size,
unsigned int switch_timer_interval,
unsigned int read_timer_interval)
{
- lttng_chan->ops->timestamp_begin = client_timestamp_begin;
- lttng_chan->ops->timestamp_end = client_timestamp_end;
- lttng_chan->ops->events_discarded = client_events_discarded;
- lttng_chan->ops->content_size = client_content_size;
- lttng_chan->ops->packet_size = client_packet_size;
- lttng_chan->ops->stream_id = client_stream_id;
-
return channel_create(&client_config, name, lttng_chan, buf_addr,
subbuf_size, num_subbuf, switch_timer_interval,
read_timer_interval);
.get_hp_wait_queue = lttng_get_hp_wait_queue,
.is_finalized = lttng_is_finalized,
.is_disabled = lttng_is_disabled,
+ .timestamp_begin = client_timestamp_begin,
+ .timestamp_end = client_timestamp_end,
+ .events_discarded = client_events_discarded,
+ .content_size = client_content_size,
+ .packet_size = client_packet_size,
+ .stream_id = client_stream_id,
+ .current_timestamp = client_current_timestamp,
},
};