diff options
author | Tejun Heo <tj@kernel.org> | 2013-11-28 14:54:26 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2013-11-29 20:48:14 -0500 |
commit | d19b9846df64d8845be682b6318bd1aee246cf60 (patch) | |
tree | 688842d196ae287bce080fe2e13ca00e796c8a06 /include/linux/kernfs.h | |
parent | 2d0cfbec2a95c16818960fda1dfa815fd1a62070 (diff) |
sysfs, kernfs: add kernfs_ops->seq_{start|next|stop}()
kernfs_ops currently only supports single_open() behavior which is
pretty restrictive. Add optional callbacks ->seq_{start|next|stop}()
which, when implemented, are invoked for seq_file traversal. This
allows full seq_file functionality for kernfs users. This currently
doesn't have any user and doesn't change any behavior.
v2: Refreshed on top of the updated "sysfs, kernfs: prepare read path
for kernfs".
Signed-off-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'include/linux/kernfs.h')
-rw-r--r-- | include/linux/kernfs.h | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/include/linux/kernfs.h b/include/linux/kernfs.h index d0912cf02087..ba993ebcd81e 100644 --- a/include/linux/kernfs.h +++ b/include/linux/kernfs.h | |||
@@ -37,8 +37,9 @@ struct kernfs_ops { | |||
37 | /* | 37 | /* |
38 | * Read is handled by either seq_file or raw_read(). | 38 | * Read is handled by either seq_file or raw_read(). |
39 | * | 39 | * |
40 | * If seq_show() is present, seq_file path is active. The behavior | 40 | * If seq_show() is present, seq_file path is active. Other seq |
41 | * is equivalent to single_open(). @sf->private points to the | 41 | * operations are optional and if not implemented, the behavior is |
42 | * equivalent to single_open(). @sf->private points to the | ||
42 | * associated sysfs_open_file. | 43 | * associated sysfs_open_file. |
43 | * | 44 | * |
44 | * read() is bounced through kernel buffer and a read larger than | 45 | * read() is bounced through kernel buffer and a read larger than |
@@ -46,6 +47,10 @@ struct kernfs_ops { | |||
46 | */ | 47 | */ |
47 | int (*seq_show)(struct seq_file *sf, void *v); | 48 | int (*seq_show)(struct seq_file *sf, void *v); |
48 | 49 | ||
50 | void *(*seq_start)(struct seq_file *sf, loff_t *ppos); | ||
51 | void *(*seq_next)(struct seq_file *sf, void *v, loff_t *ppos); | ||
52 | void (*seq_stop)(struct seq_file *sf, void *v); | ||
53 | |||
49 | ssize_t (*read)(struct sysfs_open_file *of, char *buf, size_t bytes, | 54 | ssize_t (*read)(struct sysfs_open_file *of, char *buf, size_t bytes, |
50 | loff_t off); | 55 | loff_t off); |
51 | 56 | ||