Commit e22f6283 authored by Alexey Dobriyan's avatar Alexey Dobriyan Committed by Benjamin Herrenschmidt

Convert /proc/device-tree/ to seq_file

Signed-off-by: default avatarAlexey Dobriyan <adobriyan@gmail.com>
Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
parent 5a1eb5c4
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
#include <linux/init.h> #include <linux/init.h>
#include <linux/time.h> #include <linux/time.h>
#include <linux/proc_fs.h> #include <linux/proc_fs.h>
#include <linux/seq_file.h>
#include <linux/stat.h> #include <linux/stat.h>
#include <linux/string.h> #include <linux/string.h>
#include <asm/prom.h> #include <asm/prom.h>
...@@ -25,26 +26,27 @@ static struct proc_dir_entry *proc_device_tree; ...@@ -25,26 +26,27 @@ static struct proc_dir_entry *proc_device_tree;
/* /*
* Supply data on a read from /proc/device-tree/node/property. * Supply data on a read from /proc/device-tree/node/property.
*/ */
static int property_read_proc(char *page, char **start, off_t off, static int property_proc_show(struct seq_file *m, void *v)
int count, int *eof, void *data)
{ {
struct property *pp = data; struct property *pp = m->private;
int n;
if (off >= pp->length) { seq_write(m, pp->value, pp->length);
*eof = 1; return 0;
return 0; }
}
n = pp->length - off; static int property_proc_open(struct inode *inode, struct file *file)
if (n > count) {
n = count; return single_open(file, property_proc_show, PDE(inode)->data);
else
*eof = 1;
memcpy(page, (char *)pp->value + off, n);
*start = page;
return n;
} }
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" * For a node with a name like "gc@10", we make symlinks called "gc"
* and "@10" to it. * and "@10" to it.
...@@ -63,10 +65,9 @@ __proc_device_tree_add_prop(struct proc_dir_entry *de, struct property *pp, ...@@ -63,10 +65,9 @@ __proc_device_tree_add_prop(struct proc_dir_entry *de, struct property *pp,
* Unfortunately proc_register puts each new entry * Unfortunately proc_register puts each new entry
* at the beginning of the list. So we rearrange them. * at the beginning of the list. So we rearrange them.
*/ */
ent = create_proc_read_entry(name, ent = proc_create_data(name,
strncmp(name, "security-", 9) strncmp(name, "security-", 9) ? S_IRUGO : S_IRUSR,
? S_IRUGO : S_IRUSR, de, de, &property_proc_fops, pp);
property_read_proc, pp);
if (ent == NULL) if (ent == NULL)
return NULL; return NULL;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment