lkml.org 
[lkml]   [2018]   [Apr]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 18/40] sgi-gru: simplify procfs code
    Date
    Use remove_proc_subtree to remove the whole subtree on cleanup, and
    unwind the registration loop into individual calls. Switch to use
    proc_create_seq where applicable.

    Signed-off-by: Christoph Hellwig <hch@lst.de>
    ---
    drivers/misc/sgi-gru/gruprocfs.c | 81 ++++++--------------------------
    1 file changed, 14 insertions(+), 67 deletions(-)

    diff --git a/drivers/misc/sgi-gru/gruprocfs.c b/drivers/misc/sgi-gru/gruprocfs.c
    index 4f7635922394..42ea2eccaee9 100644
    --- a/drivers/misc/sgi-gru/gruprocfs.c
    +++ b/drivers/misc/sgi-gru/gruprocfs.c
    @@ -270,16 +270,6 @@ static int options_open(struct inode *inode, struct file *file)
    return single_open(file, options_show, NULL);
    }

    -static int cch_open(struct inode *inode, struct file *file)
    -{
    - return seq_open(file, &cch_seq_ops);
    -}
    -
    -static int gru_open(struct inode *inode, struct file *file)
    -{
    - return seq_open(file, &gru_seq_ops);
    -}
    -
    /* *INDENT-OFF* */
    static const struct file_operations statistics_fops = {
    .open = statistics_open,
    @@ -305,73 +295,30 @@ static const struct file_operations options_fops = {
    .release = single_release,
    };

    -static const struct file_operations cch_fops = {
    - .open = cch_open,
    - .read = seq_read,
    - .llseek = seq_lseek,
    - .release = seq_release,
    -};
    -static const struct file_operations gru_fops = {
    - .open = gru_open,
    - .read = seq_read,
    - .llseek = seq_lseek,
    - .release = seq_release,
    -};
    -
    -static struct proc_entry {
    - char *name;
    - umode_t mode;
    - const struct file_operations *fops;
    - struct proc_dir_entry *entry;
    -} proc_files[] = {
    - {"statistics", 0644, &statistics_fops},
    - {"mcs_statistics", 0644, &mcs_statistics_fops},
    - {"debug_options", 0644, &options_fops},
    - {"cch_status", 0444, &cch_fops},
    - {"gru_status", 0444, &gru_fops},
    - {NULL}
    -};
    -/* *INDENT-ON* */
    -
    static struct proc_dir_entry *proc_gru __read_mostly;

    -static int create_proc_file(struct proc_entry *p)
    -{
    - p->entry = proc_create(p->name, p->mode, proc_gru, p->fops);
    - if (!p->entry)
    - return -1;
    - return 0;
    -}
    -
    -static void delete_proc_files(void)
    -{
    - struct proc_entry *p;
    -
    - if (proc_gru) {
    - for (p = proc_files; p->name; p++)
    - if (p->entry)
    - remove_proc_entry(p->name, proc_gru);
    - proc_remove(proc_gru);
    - }
    -}
    -
    int gru_proc_init(void)
    {
    - struct proc_entry *p;
    -
    proc_gru = proc_mkdir("sgi_uv/gru", NULL);
    -
    - for (p = proc_files; p->name; p++)
    - if (create_proc_file(p))
    - goto err;
    + if (!proc_gru)
    + return -1;
    + if (!proc_create("statistics", 0644, proc_gru, &statistics_fops))
    + goto err;
    + if (!proc_create("mcs_statistics", 0644, proc_gru, &mcs_statistics_fops))
    + goto err;
    + if (!proc_create("debug_options", 0644, proc_gru, &options_fops))
    + goto err;
    + if (!proc_create_seq("cch_status", 0444, proc_gru, &cch_seq_ops))
    + goto err;
    + if (!proc_create_seq("gru_status", 0444, proc_gru, &gru_seq_ops))
    + goto err;
    return 0;
    -
    err:
    - delete_proc_files();
    + remove_proc_subtree("sgi_uv/gru", NULL);
    return -1;
    }

    void gru_proc_exit(void)
    {
    - delete_proc_files();
    + remove_proc_subtree("sgi_uv/gru", NULL);
    }
    --
    2.17.0
    \
     
     \ /
      Last update: 2018-04-25 17:50    [W:4.371 / U:0.020 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site