seq_file: add function to write binary data
PATCH 4/7 seq_file: add function to write binary data
From: Peter Oberparleiter <[email protected]>
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 <[email protected]>
--- fs/seq_file.c | 20 ++++++++++++++++++++ include/linux/seq_file.h | 1 + 2 files changed, 21 insertions(+)
fs/seq_file.c +20 -0
@@ -554,6 +554,26 @@ int seq_puts(struct seq_file *m, const c }EXPORT_SYMBOL (seq_puts); +/** +* seq_write - write arbitrary data to buffer +* @seq: seq_file identifying the buffer to which data should be written +* @data: data address +* @len: number of bytes +* +* Return 0 on success, non-zero otherwise. +*/ +int seq_write (struct seq_file *seq,const void *data,size_t len) +{ +if (seq->count + len < seq->size) { +memcpy (seq->buf + seq->count, data, len); + seq->count += len; +return 0 ; + } + seq->count = seq->size; +return -1 ; +} +EXPORT_SYMBOL (seq_write); +struct list_head *seq_list_start (struct list_head *head,loff_t pos) {struct list_head *lh;
include/linux/seq_file.h +1 -0
@@ -39,6 +39,7 @@ int seq_release(struct inode *, struct fint 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 *seq,const void *data,size_t len);int seq_printf (struct seq_file *,const char *, ...) __attribute__ ((format (printf,2 ,3 )));