Loading fs/proc/proc_devtree.c +21 −20 Original line number Diff line number Diff line Loading @@ -7,6 +7,7 @@ #include <linux/init.h> #include <linux/time.h> #include <linux/proc_fs.h> #include <linux/seq_file.h> #include <linux/stat.h> #include <linux/string.h> #include <asm/prom.h> Loading @@ -25,26 +26,27 @@ static struct proc_dir_entry *proc_device_tree; /* * Supply data on a read from /proc/device-tree/node/property. */ static int property_read_proc(char *page, char **start, off_t off, int count, int *eof, void *data) static int property_proc_show(struct seq_file *m, void *v) { struct property *pp = data; int n; struct property *pp = m->private; if (off >= pp->length) { *eof = 1; seq_write(m, pp->value, pp->length); return 0; } n = pp->length - off; if (n > count) n = count; else *eof = 1; memcpy(page, (char *)pp->value + off, n); *start = page; return n; static int property_proc_open(struct inode *inode, struct file *file) { return single_open(file, property_proc_show, PDE(inode)->data); } static const struct file_operations property_proc_fops = { .owner = THIS_MODULE, .open = property_proc_open, .read = seq_read, .llseek = seq_lseek, .release = single_release, }; /* * For a node with a name like "gc@10", we make symlinks called "gc" * and "@10" to it. Loading @@ -63,10 +65,9 @@ __proc_device_tree_add_prop(struct proc_dir_entry *de, struct property *pp, * Unfortunately proc_register puts each new entry * at the beginning of the list. So we rearrange them. */ ent = create_proc_read_entry(name, strncmp(name, "security-", 9) ? S_IRUGO : S_IRUSR, de, property_read_proc, pp); ent = proc_create_data(name, strncmp(name, "security-", 9) ? S_IRUGO : S_IRUSR, de, &property_proc_fops, pp); if (ent == NULL) return NULL; Loading Loading
fs/proc/proc_devtree.c +21 −20 Original line number Diff line number Diff line Loading @@ -7,6 +7,7 @@ #include <linux/init.h> #include <linux/time.h> #include <linux/proc_fs.h> #include <linux/seq_file.h> #include <linux/stat.h> #include <linux/string.h> #include <asm/prom.h> Loading @@ -25,26 +26,27 @@ static struct proc_dir_entry *proc_device_tree; /* * Supply data on a read from /proc/device-tree/node/property. */ static int property_read_proc(char *page, char **start, off_t off, int count, int *eof, void *data) static int property_proc_show(struct seq_file *m, void *v) { struct property *pp = data; int n; struct property *pp = m->private; if (off >= pp->length) { *eof = 1; seq_write(m, pp->value, pp->length); return 0; } n = pp->length - off; if (n > count) n = count; else *eof = 1; memcpy(page, (char *)pp->value + off, n); *start = page; return n; static int property_proc_open(struct inode *inode, struct file *file) { return single_open(file, property_proc_show, PDE(inode)->data); } static const struct file_operations property_proc_fops = { .owner = THIS_MODULE, .open = property_proc_open, .read = seq_read, .llseek = seq_lseek, .release = single_release, }; /* * For a node with a name like "gc@10", we make symlinks called "gc" * and "@10" to it. Loading @@ -63,10 +65,9 @@ __proc_device_tree_add_prop(struct proc_dir_entry *de, struct property *pp, * Unfortunately proc_register puts each new entry * at the beginning of the list. So we rearrange them. */ ent = create_proc_read_entry(name, strncmp(name, "security-", 9) ? S_IRUGO : S_IRUSR, de, property_read_proc, pp); ent = proc_create_data(name, strncmp(name, "security-", 9) ? S_IRUGO : S_IRUSR, de, &property_proc_fops, pp); if (ent == NULL) return NULL; Loading