lkml.org 
[lkml]   [2015]   [Jun]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[RFC v2 05/24] char/nvram: Re-order functions to remove forward declarations and #ifdefs
    Also give functions more sensible names: nvram_misc_* for misc device ops,
    nvram_proc_* for proc file ops and nvram_module_* for init and exit
    functions. This makes them distict from nvram_ops members.

    Signed-off-by: Finn Thain <fthain@telegraphics.com.au>

    ---
    drivers/char/nvram.c | 194 ++++++++++++++++++++++-----------------------------
    1 file changed, 86 insertions(+), 108 deletions(-)

    Index: linux/drivers/char/nvram.c
    ===================================================================
    --- linux.orig/drivers/char/nvram.c 2015-06-14 17:45:37.000000000 +1000
    +++ linux/drivers/char/nvram.c 2015-06-14 17:45:40.000000000 +1000
    @@ -54,11 +54,6 @@ static int nvram_open_mode; /* special o
    #define NVRAM_WRITE 1 /* opened for writing (exclusive) */
    #define NVRAM_EXCL 2 /* opened with O_EXCL */

    -#ifdef CONFIG_PROC_FS
    -static void pc_nvram_proc_read(unsigned char *contents, struct seq_file *seq,
    - void *offset);
    -#endif
    -
    /*
    * These functions are provided to be called internally or by other parts of
    * the kernel. It's up to the caller to ensure correct checksum before reading
    @@ -170,7 +165,7 @@ void nvram_set_checksum(void)
    * The are the file operation function for user access to /dev/nvram
    */

    -static loff_t nvram_llseek(struct file *file, loff_t offset, int origin)
    +static loff_t nvram_misc_llseek(struct file *file, loff_t offset, int origin)
    {
    switch (origin) {
    case 0:
    @@ -189,8 +184,8 @@ static loff_t nvram_llseek(struct file *
    return (offset >= 0) ? (file->f_pos = offset) : -EINVAL;
    }

    -static ssize_t nvram_read(struct file *file, char __user *buf,
    - size_t count, loff_t *ppos)
    +static ssize_t nvram_misc_read(struct file *file, char __user *buf,
    + size_t count, loff_t *ppos)
    {
    unsigned char contents[NVRAM_BYTES];
    unsigned i = *ppos;
    @@ -218,8 +213,8 @@ checksum_err:
    return -EIO;
    }

    -static ssize_t nvram_write(struct file *file, const char __user *buf,
    - size_t count, loff_t *ppos)
    +static ssize_t nvram_misc_write(struct file *file, const char __user *buf,
    + size_t count, loff_t *ppos)
    {
    unsigned char contents[NVRAM_BYTES];
    unsigned i = *ppos;
    @@ -257,8 +252,8 @@ checksum_err:
    return -EIO;
    }

    -static long nvram_ioctl(struct file *file, unsigned int cmd,
    - unsigned long arg)
    +static long nvram_misc_ioctl(struct file *file, unsigned int cmd,
    + unsigned long arg)
    {
    int i;

    @@ -298,7 +293,7 @@ static long nvram_ioctl(struct file *fil
    }
    }

    -static int nvram_open(struct inode *inode, struct file *file)
    +static int nvram_misc_open(struct inode *inode, struct file *file)
    {
    spin_lock(&nvram_state_lock);

    @@ -320,7 +315,7 @@ static int nvram_open(struct inode *inod
    return 0;
    }

    -static int nvram_release(struct inode *inode, struct file *file)
    +static int nvram_misc_release(struct inode *inode, struct file *file)
    {
    spin_lock(&nvram_state_lock);

    @@ -337,100 +332,6 @@ static int nvram_release(struct inode *i
    return 0;
    }

    -#ifndef CONFIG_PROC_FS
    -static int nvram_add_proc_fs(void)
    -{
    - return 0;
    -}
    -
    -#else
    -
    -static int nvram_proc_read(struct seq_file *seq, void *offset)
    -{
    - unsigned char contents[NVRAM_BYTES];
    - int i = 0;
    -
    - spin_lock_irq(&rtc_lock);
    - for (i = 0; i < NVRAM_BYTES; ++i)
    - contents[i] = __nvram_read_byte(i);
    - spin_unlock_irq(&rtc_lock);
    -
    - pc_nvram_proc_read(contents, seq, offset);
    -
    - return 0;
    -}
    -
    -static int nvram_proc_open(struct inode *inode, struct file *file)
    -{
    - return single_open(file, nvram_proc_read, NULL);
    -}
    -
    -static const struct file_operations nvram_proc_fops = {
    - .owner = THIS_MODULE,
    - .open = nvram_proc_open,
    - .read = seq_read,
    - .llseek = seq_lseek,
    - .release = single_release,
    -};
    -
    -static int nvram_add_proc_fs(void)
    -{
    - if (!proc_create("driver/nvram", 0, NULL, &nvram_proc_fops))
    - return -ENOMEM;
    - return 0;
    -}
    -
    -#endif /* CONFIG_PROC_FS */
    -
    -static const struct file_operations nvram_fops = {
    - .owner = THIS_MODULE,
    - .llseek = nvram_llseek,
    - .read = nvram_read,
    - .write = nvram_write,
    - .unlocked_ioctl = nvram_ioctl,
    - .open = nvram_open,
    - .release = nvram_release,
    -};
    -
    -static struct miscdevice nvram_dev = {
    - NVRAM_MINOR,
    - "nvram",
    - &nvram_fops
    -};
    -
    -static int __init nvram_init(void)
    -{
    - int ret;
    -
    - ret = misc_register(&nvram_dev);
    - if (ret) {
    - printk(KERN_ERR "nvram: can't misc_register on minor=%d\n",
    - NVRAM_MINOR);
    - goto out;
    - }
    - ret = nvram_add_proc_fs();
    - if (ret) {
    - printk(KERN_ERR "nvram: can't create /proc/driver/nvram\n");
    - goto outmisc;
    - }
    - ret = 0;
    - printk(KERN_INFO "Non-volatile memory driver v" NVRAM_VERSION "\n");
    -out:
    - return ret;
    -outmisc:
    - misc_deregister(&nvram_dev);
    - goto out;
    -}
    -
    -static void __exit nvram_cleanup_module(void)
    -{
    - remove_proc_entry("driver/nvram", NULL);
    - misc_deregister(&nvram_dev);
    -}
    -
    -module_init(nvram_init);
    -module_exit(nvram_cleanup_module);
    -
    #ifdef CONFIG_PROC_FS

    static char *floppy_types[] = {
    @@ -508,7 +409,84 @@ static void pc_nvram_proc_read(unsigned
    return;
    }

    +static int nvram_proc_read(struct seq_file *seq, void *offset)
    +{
    + unsigned char contents[NVRAM_BYTES];
    + int i = 0;
    +
    + spin_lock_irq(&rtc_lock);
    + for (i = 0; i < NVRAM_BYTES; ++i)
    + contents[i] = __nvram_read_byte(i);
    + spin_unlock_irq(&rtc_lock);
    +
    + pc_nvram_proc_read(contents, seq, offset);
    +
    + return 0;
    +}
    +
    +static int nvram_proc_open(struct inode *inode, struct file *file)
    +{
    + return single_open(file, nvram_proc_read, NULL);
    +}
    +
    +static const struct file_operations nvram_proc_fops = {
    + .owner = THIS_MODULE,
    + .open = nvram_proc_open,
    + .read = seq_read,
    + .llseek = seq_lseek,
    + .release = single_release,
    +};
    +
    #endif /* CONFIG_PROC_FS */

    +static const struct file_operations nvram_misc_fops = {
    + .owner = THIS_MODULE,
    + .llseek = nvram_misc_llseek,
    + .read = nvram_misc_read,
    + .write = nvram_misc_write,
    + .unlocked_ioctl = nvram_misc_ioctl,
    + .open = nvram_misc_open,
    + .release = nvram_misc_release,
    +};
    +
    +static struct miscdevice nvram_misc = {
    + NVRAM_MINOR,
    + "nvram",
    + &nvram_misc_fops,
    +};
    +
    +static int __init nvram_module_init(void)
    +{
    + int ret;
    +
    + ret = misc_register(&nvram_misc);
    + if (ret) {
    + pr_err("nvram: can't misc_register on minor=%d\n", NVRAM_MINOR);
    + return ret;
    + }
    +
    +#ifdef CONFIG_PROC_FS
    + if (!proc_create("driver/nvram", 0, NULL, &nvram_proc_fops)) {
    + pr_err("nvram: can't create /proc/driver/nvram\n");
    + misc_deregister(&nvram_misc);
    + return -ENOMEM;
    + }
    +#endif
    +
    + pr_info("Non-volatile memory driver v" NVRAM_VERSION "\n");
    + return 0;
    +}
    +
    +static void __exit nvram_module_exit(void)
    +{
    +#ifdef CONFIG_PROC_FS
    + remove_proc_entry("driver/nvram", NULL);
    +#endif
    + misc_deregister(&nvram_misc);
    +}
    +
    +module_init(nvram_module_init);
    +module_exit(nvram_module_exit);
    +
    MODULE_LICENSE("GPL");
    MODULE_ALIAS_MISCDEV(NVRAM_MINOR);



    \
     
     \ /
      Last update: 2015-06-14 16:01    [W:5.467 / U:0.012 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site