X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=src%2Flib%2Fringbuffer%2Fring_buffer_splice.c;h=f34bc35544f2e6d16799e78b55a16a9ec0249be7;hb=dfdb34fd8576fba33510491aef5cd5f6f67b56b8;hp=6061cce1e380f2cf682e1a5656778b8d3e35a7d5;hpb=4352d50825272fb3c3a9d8fc54fe87a73121e1ec;p=lttng-modules.git diff --git a/src/lib/ringbuffer/ring_buffer_splice.c b/src/lib/ringbuffer/ring_buffer_splice.c index 6061cce1..f34bc355 100644 --- a/src/lib/ringbuffer/ring_buffer_splice.c +++ b/src/lib/ringbuffer/ring_buffer_splice.c @@ -12,17 +12,22 @@ #include #include -#include +#include +#include -#include #include #include #include -#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,32 +47,22 @@ static void lib_ring_buffer_pipe_buf_release(struct pipe_inode_info *pipe, __free_page(pbuf->page); } -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,8,0)) +#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 (LINUX_VERSION_CODE >= KERNEL_VERSION(5,1,0)) +#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 }; -#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,15,0)) -static const struct pipe_buf_operations ring_buffer_pipe_buf_ops = { - .can_merge = 0, - .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 = { .can_merge = 0, - .map = generic_pipe_buf_map, - .unmap = generic_pipe_buf_unmap, .confirm = generic_pipe_buf_confirm, .release = lib_ring_buffer_pipe_buf_release, .steal = generic_pipe_buf_steal, @@ -92,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]; @@ -103,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, @@ -131,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++) { @@ -142,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); /* @@ -171,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; @@ -202,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) { @@ -234,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); }