From 1df03d1a0ca16b305e7f18fb124c3d722df08198 Mon Sep 17 00:00:00 2001 From: Werner Sembach <werner.sembach@fau.de> Date: Fri, 31 Aug 2018 19:37:50 +0200 Subject: [PATCH] Make use of misc_register() to clean up the code --- drivers/klist/klist.c | 36 ++++++++++-------------------------- 1 file changed, 10 insertions(+), 26 deletions(-) diff --git a/drivers/klist/klist.c b/drivers/klist/klist.c index 002de8a608ce..3f17b33ea144 100644 --- a/drivers/klist/klist.c +++ b/drivers/klist/klist.c @@ -11,9 +11,9 @@ #include <linux/uaccess.h> #include <linux/tty.h> #include <asm/errno.h> -#include <linux/device.h> -#include <linux/kdev_t.h> +#include <linux/miscdevice.h> +#define ERR(...) printk(KERN_ERR __VA_ARGS__) /* #define DEBUG */ #ifdef DEBUG @@ -22,8 +22,6 @@ #define LOG(...) #endif -#define ERR(...) printk(KERN_ERR __VA_ARGS__) - /* klist functions */ #define LIST_CMD 0x1337 #define LIST_ADD (LIST_CMD + 0) @@ -35,8 +33,6 @@ /* consts */ #define MAX_SIZE 0x400 -static struct class *cl; - static long k_list[MAX_SIZE]; static unsigned long list_size; @@ -172,38 +168,26 @@ struct file_operations list_fops = { unlocked_ioctl: list_ioctl, }; +static struct miscdevice klist = { + .minor = MISC_DYNAMIC_MINOR, + .name = "klist", + .fops = &list_fops, +}; + static int __init init_list(void) { int ret; - ret = register_chrdev(1337, "klist", &list_fops); + ret = misc_register(&klist); LOG("register device: %d\n", ret); list_size = 0; - if (ret) { - ERR("register device failed."); - return ret; - } - - //automatically populate /sys/class/ and create /dev/klist on module startup - cl = class_create(THIS_MODULE, "klist"); - if (IS_ERR(cl)) { - ERR("automatic /dev/klist creation failed on class_create."); - return ret; - } - if (IS_ERR(device_create(cl, NULL, MKDEV(1337, 0), NULL, "klist"))) { - ERR("automatic /dev/klist creation failed on class_create."); - class_destroy(cl); - return ret; - } return ret; } static void __exit exit_list(void) { - device_destroy(cl, MKDEV(1337, 0)); - class_destroy(cl); - unregister_chrdev(1337, "klist"); + misc_deregister(&klist); LOG("exit.\n"); } -- GitLab