All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrew Morton <akpm@linux-foundation.org>
To: Peter Oberparleiter <peter.oberparleiter@de.ibm.com>
Cc: linux-kernel@vger.kernel.org, ltp-list@lists.sourceforge.net,
	ltp-coverage@lists.sourceforge.net,
	Al Viro <viro@zeniv.linux.org.uk>
Subject: Re: [RFC PATCH 4/6] seq_file: add function to write binary data
Date: Mon, 5 May 2008 21:36:44 -0700	[thread overview]
Message-ID: <20080505213644.b153ee68.akpm@linux-foundation.org> (raw)
In-Reply-To: <481F26B5.7010708@de.ibm.com>

On Mon, 05 May 2008 17:24:37 +0200 Peter Oberparleiter <peter.oberparleiter@de.ibm.com> wrote:

> From: Peter Oberparleiter <peter.oberparleiter@de.ibm.com>
> 
> seq_write() can be used to construct seq_files containing arbitrary
> data. Required by the gcov-profiling interface to synthesize binary
> profiling data files.
> 
> Signed-off-by: Peter Oberparleiter <peter.oberparleiter@de.ibm.com>
> ---
>  fs/seq_file.c            |   12 ++++++++++++
>  include/linux/seq_file.h |    1 +
>  2 files changed, 13 insertions(+)
> 
> Index: linux-2.6.26-rc1/fs/seq_file.c
> ===================================================================
> --- linux-2.6.26-rc1.orig/fs/seq_file.c
> +++ linux-2.6.26-rc1/fs/seq_file.c
> @@ -554,6 +554,18 @@ int seq_puts(struct seq_file *m, const c
>  }
>  EXPORT_SYMBOL(seq_puts);
>  
> +int seq_write(struct seq_file *m, const void *s, size_t len)

Most of the other seq_file interface functions are nicely documented.

> +{
> +	if (m->count + len < m->size) {

Are you sure that shouldn't be >=?

> +		memcpy(m->buf + m->count, s, len);
> +		m->count += len;
> +		return 0;
> +	}
> +	m->count = m->size;
> +	return -1;
> +}
> +EXPORT_SYMBOL(seq_write);

Usually when a write-style function is passed too much data it will write
as much as it can and will then return a smaller-than-requested value.

That's inappropriate for your application of seq_write(), but perhaps is
appropriate for other future callers?

This function has an upper limit of PAGE_SIZE bytes, I think?  The covering
documentation should explain such things.

>  struct list_head *seq_list_start(struct list_head *head, loff_t pos)
>  {
>  	struct list_head *lh;
> Index: linux-2.6.26-rc1/include/linux/seq_file.h
> ===================================================================
> --- linux-2.6.26-rc1.orig/include/linux/seq_file.h
> +++ linux-2.6.26-rc1/include/linux/seq_file.h
> @@ -39,6 +39,7 @@ int seq_release(struct inode *, struct f
>  int seq_escape(struct seq_file *, const char *, const char *);
>  int seq_putc(struct seq_file *m, char c);
>  int seq_puts(struct seq_file *m, const char *s);
> +int seq_write(struct seq_file *m, const void *s, size_t len);
>  
>  int seq_printf(struct seq_file *, const char *, ...)
>  	__attribute__ ((format (printf,2,3)));
> 

  reply	other threads:[~2008-05-06  4:37 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-05-05 15:24 [RFC PATCH 4/6] seq_file: add function to write binary data Peter Oberparleiter
2008-05-06  4:36 ` Andrew Morton [this message]
2008-05-06 18:37   ` Peter Oberparleiter
2008-05-07 20:17   ` Alexey Dobriyan
2008-05-07 20:45     ` Alexey Dobriyan
2008-05-08  7:42       ` Peter Oberparleiter

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20080505213644.b153ee68.akpm@linux-foundation.org \
    --to=akpm@linux-foundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=ltp-coverage@lists.sourceforge.net \
    --cc=ltp-list@lists.sourceforge.net \
    --cc=peter.oberparleiter@de.ibm.com \
    --cc=viro@zeniv.linux.org.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.