|
@@ -87,7 +87,7 @@ enum { MAX_IORES_LEVEL = 5 };
|
|
|
static void *r_start(struct seq_file *m, loff_t *pos)
|
|
|
__acquires(resource_lock)
|
|
|
{
|
|
|
- struct resource *p = m->private;
|
|
|
+ struct resource *p = PDE_DATA(file_inode(m->file));
|
|
|
loff_t l = 0;
|
|
|
read_lock(&resource_lock);
|
|
|
for (p = p->child; p && l < *pos; p = r_next(m, p, &l))
|
|
@@ -103,7 +103,7 @@ static void r_stop(struct seq_file *m, void *v)
|
|
|
|
|
|
static int r_show(struct seq_file *m, void *v)
|
|
|
{
|
|
|
- struct resource *root = m->private;
|
|
|
+ struct resource *root = PDE_DATA(file_inode(m->file));
|
|
|
struct resource *r = v, *p;
|
|
|
unsigned long long start, end;
|
|
|
int width = root->end < 0x10000 ? 4 : 8;
|
|
@@ -135,44 +135,11 @@ static const struct seq_operations resource_op = {
|
|
|
.show = r_show,
|
|
|
};
|
|
|
|
|
|
-static int ioports_open(struct inode *inode, struct file *file)
|
|
|
-{
|
|
|
- int res = seq_open(file, &resource_op);
|
|
|
- if (!res) {
|
|
|
- struct seq_file *m = file->private_data;
|
|
|
- m->private = &ioport_resource;
|
|
|
- }
|
|
|
- return res;
|
|
|
-}
|
|
|
-
|
|
|
-static int iomem_open(struct inode *inode, struct file *file)
|
|
|
-{
|
|
|
- int res = seq_open(file, &resource_op);
|
|
|
- if (!res) {
|
|
|
- struct seq_file *m = file->private_data;
|
|
|
- m->private = &iomem_resource;
|
|
|
- }
|
|
|
- return res;
|
|
|
-}
|
|
|
-
|
|
|
-static const struct file_operations proc_ioports_operations = {
|
|
|
- .open = ioports_open,
|
|
|
- .read = seq_read,
|
|
|
- .llseek = seq_lseek,
|
|
|
- .release = seq_release,
|
|
|
-};
|
|
|
-
|
|
|
-static const struct file_operations proc_iomem_operations = {
|
|
|
- .open = iomem_open,
|
|
|
- .read = seq_read,
|
|
|
- .llseek = seq_lseek,
|
|
|
- .release = seq_release,
|
|
|
-};
|
|
|
-
|
|
|
static int __init ioresources_init(void)
|
|
|
{
|
|
|
- proc_create("ioports", 0, NULL, &proc_ioports_operations);
|
|
|
- proc_create("iomem", 0, NULL, &proc_iomem_operations);
|
|
|
+ proc_create_seq_data("ioports", 0, NULL, &resource_op,
|
|
|
+ &ioport_resource);
|
|
|
+ proc_create_seq_data("iomem", 0, NULL, &resource_op, &iomem_resource);
|
|
|
return 0;
|
|
|
}
|
|
|
__initcall(ioresources_init);
|