git://ftp.safe.ca
/
safe
/
jmp
/
linux-2.6
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Convert /proc/device-tree/ to seq_file
[safe/jmp/linux-2.6]
/
fs
/
proc
/
proc_devtree.c
diff --git
a/fs/proc/proc_devtree.c
b/fs/proc/proc_devtree.c
index
fc6c302
..
123257b
100644
(file)
--- a/
fs/proc/proc_devtree.c
+++ b/
fs/proc/proc_devtree.c
@@
-7,6
+7,7
@@
#include <linux/init.h>
#include <linux/time.h>
#include <linux/proc_fs.h>
#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>
#include <linux/stat.h>
#include <linux/string.h>
#include <asm/prom.h>
@@
-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,
- 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;
- 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;
+ seq_write(m, pp->value, pp->length);
+ return 0;
+}
+
+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.
/*
* For a node with a name like "gc@10", we make symlinks called "gc"
* and "@10" to it.
@@
-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.
*/
* 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;
if (ent == NULL)
return NULL;
@@
-195,20
+196,20
@@
void proc_device_tree_add_node(struct device_node *np,
p = fixup_name(np, de, p);
ent = proc_mkdir(p, de);
p = fixup_name(np, de, p);
ent = proc_mkdir(p, de);
- if (ent ==
0
)
+ if (ent ==
NULL
)
break;
proc_device_tree_add_node(child, ent);
}
of_node_put(child);
break;
proc_device_tree_add_node(child, ent);
}
of_node_put(child);
- for (pp = np->properties; pp !=
0
; pp = pp->next) {
+ for (pp = np->properties; pp !=
NULL
; pp = pp->next) {
p = pp->name;
if (duplicate_name(de, p))
p = fixup_name(np, de, p);
ent = __proc_device_tree_add_prop(de, pp, p);
p = pp->name;
if (duplicate_name(de, p))
p = fixup_name(np, de, p);
ent = __proc_device_tree_add_prop(de, pp, p);
- if (ent ==
0
)
+ if (ent ==
NULL
)
break;
}
}
break;
}
}
@@
-221,10
+222,10
@@
void __init proc_device_tree_init(void)
struct device_node *root;
proc_device_tree = proc_mkdir("device-tree", NULL);
struct device_node *root;
proc_device_tree = proc_mkdir("device-tree", NULL);
- if (proc_device_tree ==
0
)
+ if (proc_device_tree ==
NULL
)
return;
root = of_find_node_by_path("/");
return;
root = of_find_node_by_path("/");
- if (root ==
0
) {
+ if (root ==
NULL
) {
printk(KERN_ERR "/proc/device-tree: can't find root\n");
return;
}
printk(KERN_ERR "/proc/device-tree: can't find root\n");
return;
}