X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=lib%2Fringbuffer%2Fring_buffer_splice.c;h=59a1589bb1301cc32ad5372bce6a7f26d3b09d17;hb=886d51a3d7ed5fa6b41d7f19b3e14ae6c535a44c;hp=531914a4ef04a9b205564ddba1cc0df6e9de1522;hpb=f3bc08c50e1b302bceea699027d889fd6d9af525;p=lttng-modules.git diff --git a/lib/ringbuffer/ring_buffer_splice.c b/lib/ringbuffer/ring_buffer_splice.c index 531914a4..59a1589b 100644 --- a/lib/ringbuffer/ring_buffer_splice.c +++ b/lib/ringbuffer/ring_buffer_splice.c @@ -3,16 +3,30 @@ * * Copyright (C) 2002-2005 - Tom Zanussi , IBM Corp * Copyright (C) 1999-2005 - Karim Yaghmour - * Copyright (C) 2008-2010 - Mathieu Desnoyers + * Copyright (C) 2008-2012 - Mathieu Desnoyers * - * Re-using content from kernel/relay.c. + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; only + * version 2.1 of the License. * - * This file is released under the GPL v2. + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * Re-using code from kernel/relay.c, which is why it is licensed under + * the GPLv2. */ #include #include +#include "../../wrapper/splice.h" #include "../../wrapper/ringbuffer/backend.h" #include "../../wrapper/ringbuffer/frontend.h" #include "../../wrapper/ringbuffer/vfs.h" @@ -68,7 +82,7 @@ static int subbuf_splice_actor(struct file *in, { struct lib_ring_buffer *buf = in->private_data; struct channel *chan = buf->backend.chan; - const struct lib_ring_buffer_config *config = chan->backend.config; + const struct lib_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]; @@ -80,7 +94,7 @@ static int subbuf_splice_actor(struct file *in, .ops = &ring_buffer_pipe_buf_ops, .spd_release = lib_ring_buffer_page_release, }; - unsigned long consumed_old, consumed_idx, roffset; + unsigned long consumed_old, roffset; unsigned long bytes_avail; /* @@ -89,7 +103,6 @@ static int subbuf_splice_actor(struct file *in, WARN_ON(atomic_long_read(&buf->active_readers) != 1); consumed_old = lib_ring_buffer_get_consumed(config, buf); consumed_old += *ppos; - consumed_idx = subbuf_index(consumed_old, chan); /* * Adjust read len, if longer than what is available. @@ -142,7 +155,7 @@ static int subbuf_splice_actor(struct file *in, if (!spd.nr_pages) return 0; - return splice_to_pipe(pipe, &spd); + return wrapper_splice_to_pipe(pipe, &spd); } ssize_t lib_ring_buffer_splice_read(struct file *in, loff_t *ppos, @@ -151,7 +164,7 @@ ssize_t lib_ring_buffer_splice_read(struct file *in, loff_t *ppos, { struct lib_ring_buffer *buf = in->private_data; struct channel *chan = buf->backend.chan; - const struct lib_ring_buffer_config *config = chan->backend.config; + const struct lib_ring_buffer_config *config = &chan->backend.config; ssize_t spliced; int ret;