X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=lib%2Fringbuffer%2Fring_buffer_splice.c;h=59a1589bb1301cc32ad5372bce6a7f26d3b09d17;hb=886d51a3d7ed5fa6b41d7f19b3e14ae6c535a44c;hp=5fa779f5a63e1038ad477abea8d7807a335fbf2c;hpb=90225db5dd17d46fdb281a625ef98780329b0677;p=lttng-modules.git diff --git a/lib/ringbuffer/ring_buffer_splice.c b/lib/ringbuffer/ring_buffer_splice.c index 5fa779f5..59a1589b 100644 --- a/lib/ringbuffer/ring_buffer_splice.c +++ b/lib/ringbuffer/ring_buffer_splice.c @@ -3,11 +3,24 @@ * * 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 @@ -69,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]; @@ -81,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; /* @@ -90,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. @@ -152,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;