Messages in this thread |  | | | Date | Thu, 8 May 2008 00:17:57 +0400 | | From | Alexey Dobriyan <> | | Subject | Re: [RFC PATCH 4/6] seq_file: add function to write binary data |
| |
On Mon, May 05, 2008 at 09:36:44PM -0700, Andrew Morton wrote: > On Mon, 05 May 2008 17:24:37 +0200 Peter Oberparleiter <peter.oberparleiter@de.ibm.com> wrote: > > --- linux-2.6.26-rc1.orig/fs/seq_file.c > > +++ linux-2.6.26-rc1/fs/seq_file.c
> > +int seq_write(struct seq_file *m, const void *s, size_t len)
> > +{ > > + if (m->count + len < m->size) { > > Are you sure that shouldn't be >=?
No!
->count is how much bytes are already in buffer. len is len. ->size is end of page(s).
> > > + memcpy(m->buf + m->count, s, len); > > + m->count += len; > > + return 0; > > + } > > + m->count = m->size; > > + return -1; > > +} > > +EXPORT_SYMBOL(seq_write);
I'd call function seq_memcpy() though.
> This function has an upper limit of PAGE_SIZE bytes, I think? The covering > documentation should explain such things.
Again, no.
At first buffer is PAGE_SIZE. If output is bigger, ->count is dubbed to ->size, so when ->show() returns, size of buffer is doubled until it fits in. See "while(1)" loop in seq_read().
|  |