Remove splice_to_pipe kallsyms wrapper
[lttng-modules.git] / src / lib / ringbuffer / ring_buffer_splice.c
index cd803a70805e29abada097e5933170ce453804ae..f34bc35544f2e6d16799e78b55a16a9ec0249be7 100644 (file)
 
 #include <linux/module.h>
 #include <linux/fs.h>
-#include <linux/version.h>
+#include <linux/splice.h>
+#include <lttng/kernel-version.h>
 
-#include <wrapper/splice.h>
 #include <ringbuffer/backend.h>
 #include <ringbuffer/frontend.h>
 #include <ringbuffer/vfs.h>
 
-#if 0
+#ifdef DEBUG
 #define printk_dbg(fmt, args...) printk(fmt, args)
 #else
-#define printk_dbg(fmt, args...)
+#define printk_dbg(fmt, args...)                       \
+do {                                                   \
+       /* do nothing but check printf format */        \
+       if (0)                                          \
+               printk(fmt, ## args);                   \
+} while (0)
 #endif
 
 loff_t vfs_lib_ring_buffer_no_llseek(struct file *file, loff_t offset,
@@ -42,19 +47,28 @@ static void lib_ring_buffer_pipe_buf_release(struct pipe_inode_info *pipe,
        __free_page(pbuf->page);
 }
 
+#if (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,8,0))
+static const struct pipe_buf_operations ring_buffer_pipe_buf_ops = {
+       .release = lib_ring_buffer_pipe_buf_release,
+       .try_steal = generic_pipe_buf_try_steal,
+       .get = generic_pipe_buf_get
+};
+#elif (LTTNG_LINUX_VERSION_CODE >= LTTNG_KERNEL_VERSION(5,1,0))
+static const struct pipe_buf_operations ring_buffer_pipe_buf_ops = {
+       .confirm = generic_pipe_buf_confirm,
+       .release = lib_ring_buffer_pipe_buf_release,
+       .steal = generic_pipe_buf_steal,
+       .get = generic_pipe_buf_get
+};
+#else
 static const struct pipe_buf_operations ring_buffer_pipe_buf_ops = {
-#if (LINUX_VERSION_CODE < KERNEL_VERSION(5,1,0))
        .can_merge = 0,
-#endif
-#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,15,0))
-       .map = generic_pipe_buf_map,
-       .unmap = generic_pipe_buf_unmap,
-#endif
        .confirm = generic_pipe_buf_confirm,
        .release = lib_ring_buffer_pipe_buf_release,
        .steal = generic_pipe_buf_steal,
-       .get = generic_pipe_buf_get,
+       .get = generic_pipe_buf_get
 };
+#endif
 
 /*
  * Page release operation after splice pipe_to_file ends.
@@ -73,10 +87,10 @@ static int subbuf_splice_actor(struct file *in,
                               struct pipe_inode_info *pipe,
                               size_t len,
                               unsigned int flags,
-                              struct lib_ring_buffer *buf)
+                              struct lttng_kernel_ring_buffer *buf)
 {
-       struct channel *chan = buf->backend.chan;
-       const struct lib_ring_buffer_config *config = &chan->backend.config;
+       struct lttng_kernel_ring_buffer_channel *chan = buf->backend.chan;
+       const struct lttng_kernel_ring_buffer_config *config = &chan->backend.config;
        unsigned int poff, subbuf_pages, nr_pages;
        struct page *pages[PIPE_DEF_BUFFERS];
        struct partial_page partial[PIPE_DEF_BUFFERS];
@@ -84,7 +98,7 @@ static int subbuf_splice_actor(struct file *in,
                .pages = pages,
                .nr_pages = 0,
                .partial = partial,
-#if (LINUX_VERSION_CODE < KERNEL_VERSION(4,12,0))
+#if (LTTNG_LINUX_VERSION_CODE < LTTNG_KERNEL_VERSION(4,12,0))
                .flags = flags,
 #endif
                .ops = &ring_buffer_pipe_buf_ops,
@@ -112,7 +126,7 @@ static int subbuf_splice_actor(struct file *in,
        nr_pages = min_t(unsigned int, subbuf_pages, PIPE_DEF_BUFFERS);
        roffset = consumed_old & PAGE_MASK;
        poff = consumed_old & ~PAGE_MASK;
-       printk_dbg(KERN_DEBUG "SPLICE actor len %zu pos %zd write_pos %ld\n",
+       printk_dbg(KERN_DEBUG "LTTng: SPLICE actor len %zu pos %zd write_pos %ld\n",
                   len, (ssize_t)*ppos, lib_ring_buffer_get_offset(config, buf));
 
        for (; spd.nr_pages < nr_pages; spd.nr_pages++) {
@@ -123,7 +137,7 @@ static int subbuf_splice_actor(struct file *in,
 
                if (!len)
                        break;
-               printk_dbg(KERN_DEBUG "SPLICE actor loop len %zu roffset %ld\n",
+               printk_dbg(KERN_DEBUG "LTTng: SPLICE actor loop len %zu roffset %ld\n",
                           len, roffset);
 
                /*
@@ -152,16 +166,16 @@ static int subbuf_splice_actor(struct file *in,
        if (!spd.nr_pages)
                return 0;
 
-       return wrapper_splice_to_pipe(pipe, &spd);
+       return splice_to_pipe(pipe, &spd);
 }
 
 ssize_t lib_ring_buffer_splice_read(struct file *in, loff_t *ppos,
                                    struct pipe_inode_info *pipe, size_t len,
                                    unsigned int flags,
-                                   struct lib_ring_buffer *buf)
+                                   struct lttng_kernel_ring_buffer *buf)
 {
-       struct channel *chan = buf->backend.chan;
-       const struct lib_ring_buffer_config *config = &chan->backend.config;
+       struct lttng_kernel_ring_buffer_channel *chan = buf->backend.chan;
+       const struct lttng_kernel_ring_buffer_config *config = &chan->backend.config;
        ssize_t spliced;
        int ret;
 
@@ -183,11 +197,11 @@ ssize_t lib_ring_buffer_splice_read(struct file *in, loff_t *ppos,
        ret = 0;
        spliced = 0;
 
-       printk_dbg(KERN_DEBUG "SPLICE read len %zu pos %zd\n", len,
+       printk_dbg(KERN_DEBUG "LTTng: SPLICE read len %zu pos %zd\n", len,
                   (ssize_t)*ppos);
        while (len && !spliced) {
                ret = subbuf_splice_actor(in, ppos, pipe, len, flags, buf);
-               printk_dbg(KERN_DEBUG "SPLICE read loop ret %d\n", ret);
+               printk_dbg(KERN_DEBUG "LTTng: SPLICE read loop ret %d\n", ret);
                if (ret < 0)
                        break;
                else if (!ret) {
@@ -215,7 +229,7 @@ ssize_t vfs_lib_ring_buffer_splice_read(struct file *in, loff_t *ppos,
                                    struct pipe_inode_info *pipe, size_t len,
                                    unsigned int flags)
 {
-       struct lib_ring_buffer *buf = in->private_data;
+       struct lttng_kernel_ring_buffer *buf = in->private_data;
 
        return lib_ring_buffer_splice_read(in, ppos, pipe, len, flags, buf);
 }
This page took 0.025724 seconds and 4 git commands to generate.