ustctl: Implement ring buffer clear
[lttng-ust.git] / liblttng-ust-ctl / ustctl.c
index 7b41b992fc03dc511554bb52e5fc350ac435e8cf..949ece17ace8a2d8ec2a2d624b0451fd5ee83313 100644 (file)
@@ -1057,7 +1057,8 @@ struct ustctl_consumer_channel *
                        attr->switch_timer_interval,
                        attr->read_timer_interval,
                        attr->uuid, attr->chan_id,
-                       stream_fds, nr_stream_fds);
+                       stream_fds, nr_stream_fds,
+                       attr->blocking_timeout);
        if (!chan->chan) {
                goto chan_error;
        }
@@ -1501,6 +1502,25 @@ int ustctl_snapshot(struct ustctl_consumer_stream *stream)
                        &buf->prod_snapshot, consumer_chan->chan->handle);
 }
 
+/*
+ * Get a snapshot of the current ring buffer producer and consumer positions
+ * even if the consumed and produced positions are contained within the same
+ * subbuffer.
+ */
+int ustctl_snapshot_sample_positions(struct ustctl_consumer_stream *stream)
+{
+       struct lttng_ust_lib_ring_buffer *buf;
+       struct ustctl_consumer_channel *consumer_chan;
+
+       if (!stream)
+               return -EINVAL;
+       buf = stream->buf;
+       consumer_chan = stream->chan;
+       return lib_ring_buffer_snapshot_sample_positions(buf,
+                       &buf->cons_snapshot, &buf->prod_snapshot,
+                       consumer_chan->chan->handle);
+}
+
 /* Get the consumer position (iteration start) */
 int ustctl_snapshot_get_consumed(struct ustctl_consumer_stream *stream,
                unsigned long *pos)
@@ -1570,6 +1590,19 @@ void ustctl_flush_buffer(struct ustctl_consumer_stream *stream,
                consumer_chan->chan->handle);
 }
 
+void ustctl_clear_buffer(struct ustctl_consumer_stream *stream)
+{
+       struct lttng_ust_lib_ring_buffer *buf;
+       struct ustctl_consumer_channel *consumer_chan;
+
+       assert(stream);
+       buf = stream->buf;
+       consumer_chan = stream->chan;
+       lib_ring_buffer_switch_slow(buf, SWITCH_ACTIVE,
+               consumer_chan->chan->handle);
+       lib_ring_buffer_clear_reader(buf, consumer_chan->chan->handle);
+}
+
 static
 struct lttng_ust_client_lib_ring_buffer_client_cb *get_client_cb(
                struct lttng_ust_lib_ring_buffer *buf,
This page took 0.023482 seconds and 4 git commands to generate.