aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorTejun Heo <tj@kernel.org>2013-11-28 14:54:26 -0500
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-11-29 20:48:14 -0500
commitd19b9846df64d8845be682b6318bd1aee246cf60 (patch)
tree688842d196ae287bce080fe2e13ca00e796c8a06 /include
parent2d0cfbec2a95c16818960fda1dfa815fd1a62070 (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')
-rw-r--r--include/linux/kernfs.h9
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