diff options
Diffstat (limited to 'fs/seq_file.c')
| -rw-r--r-- | fs/seq_file.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/fs/seq_file.c b/fs/seq_file.c index 7f40f30c55c5..6c959275f2d0 100644 --- a/fs/seq_file.c +++ b/fs/seq_file.c | |||
| @@ -640,6 +640,26 @@ int seq_puts(struct seq_file *m, const char *s) | |||
| 640 | } | 640 | } |
| 641 | EXPORT_SYMBOL(seq_puts); | 641 | EXPORT_SYMBOL(seq_puts); |
| 642 | 642 | ||
| 643 | /** | ||
| 644 | * seq_write - write arbitrary data to buffer | ||
| 645 | * @seq: seq_file identifying the buffer to which data should be written | ||
| 646 | * @data: data address | ||
| 647 | * @len: number of bytes | ||
| 648 | * | ||
| 649 | * Return 0 on success, non-zero otherwise. | ||
| 650 | */ | ||
| 651 | int seq_write(struct seq_file *seq, const void *data, size_t len) | ||
| 652 | { | ||
| 653 | if (seq->count + len < seq->size) { | ||
| 654 | memcpy(seq->buf + seq->count, data, len); | ||
| 655 | seq->count += len; | ||
| 656 | return 0; | ||
| 657 | } | ||
| 658 | seq->count = seq->size; | ||
| 659 | return -1; | ||
| 660 | } | ||
| 661 | EXPORT_SYMBOL(seq_write); | ||
| 662 | |||
| 643 | struct list_head *seq_list_start(struct list_head *head, loff_t pos) | 663 | struct list_head *seq_list_start(struct list_head *head, loff_t pos) |
| 644 | { | 664 | { |
| 645 | struct list_head *lh; | 665 | struct list_head *lh; |
