ongoing ABI implementation
[lttng-modules.git] / ltt-ring-buffer-client.h
index 53b3b871f3812c0148dfae85b825dbd5845df891..c70c62b3c59c5dde47c59b93f325019c0ee7e835 100644 (file)
@@ -27,6 +27,7 @@ static u64 client_ring_buffer_clock_read(struct channel *chan)
        return lib_ring_buffer_clock_read(chan);
 }
 
+static
 size_t client_record_header_size(const struct lib_ring_buffer_config *config,
                                 struct channel *chan, size_t offset,
                                 size_t data_size,
@@ -164,6 +165,7 @@ static const struct lib_ring_buffer_config client_config = {
        .wakeup = RING_BUFFER_WAKEUP_BY_TIMER,
 };
 
+static
 struct channel *ltt_channel_create(const char *name, struct ltt_trace *trace,
                                   void *buf_addr,
                                   size_t subbuf_size, size_t num_subbuf,
@@ -201,6 +203,7 @@ free_chan_priv:
        return NULL;
 }
 
+static
 void ltt_channel_destroy(struct channel *chan)
 {
        struct chan_priv *chan_priv = channel_get_private(chan);
@@ -213,6 +216,26 @@ void ltt_channel_destroy(struct channel *chan)
        kfree(chan_priv);
 }
 
+static
+struct lib_ring_buffer *ltt_buffer_read_open(struct channel *chan)
+{
+       struct lib_ring_buffer *buf;
+       int cpu;
+
+       for_each_channel_cpu(cpu, chan->chan) {
+               buf = channel_get_ring_buffer(&config_config, chan, cpu);
+               if (!lib_ring_buffer_open_read(buf))
+                       return buf;
+       }
+       return NULL;
+}
+
+static
+struct lib_ring_buffer *ltt_buffer_read_close(struct lib_ring_buffer *buf)
+{
+       lib_ring_buffer_release_read(buf);
+}
+
 static void ltt_relay_remove_dirs(struct ltt_trace *trace)
 {
        debugfs_remove(trace->dentry.trace_root);
@@ -237,12 +260,17 @@ static int ltt_relay_create_dirs(struct ltt_trace *new_trace)
        }
        return 0;
 }
+
 static struct ltt_transport ltt_relay_transport = {
        .name = "relay-" RING_BUFFER_MODE_TEMPLATE_STRING,
        .owner = THIS_MODULE,
        .ops = {
                .create_dirs = ltt_relay_create_dirs,
                .remove_dirs = ltt_relay_remove_dirs,
+               .create_channel = ltt_channel_create,
+               .destroy_channel = ltt_channel_destroy,
+               .buffer_read_open = ltt_buffer_read_open,
+               .buffer_read_close = ltt_buffer_read_close,
        },
 };
 
This page took 0.028106 seconds and 4 git commands to generate.