OSDN Git Service

resource: switch to proc_create_seq_data
authorChristoph Hellwig <hch@lst.de>
Wed, 11 Apr 2018 09:52:39 +0000 (11:52 +0200)
committerChristoph Hellwig <hch@lst.de>
Wed, 16 May 2018 05:24:30 +0000 (07:24 +0200)
And use the root resource directly from the proc private data.

Signed-off-by: Christoph Hellwig <hch@lst.de>
kernel/resource.c

index 2af6c03..b589dda 100644 (file)
@@ -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);