Allocate device number dynamically.
authorThadeu Lima de Souza Cascardo <cascardo@holoscopio.com>
Wed, 19 May 2010 14:16:07 +0000 (10:16 -0400)
committerThadeu Lima de Souza Cascardo <cascardo@holoscopio.com>
Wed, 19 May 2010 14:16:07 +0000 (10:16 -0400)
hellochar.c

index 576968b..e50ac2a 100644 (file)
 #include <linux/fs.h>
 
 MODULE_LICENSE("GPL");
-static int major = 10;
-module_param_named(major, major, int, S_IRUGO | S_IWUSR);
+static dev_t devnum;
 
 static int __init ch_init(void)
 {
        int r;
-       r = register_chrdev_region(MKDEV(major, 0), 256, "hello");
+       r = alloc_chrdev_region(&devnum, 0, 256, "hello");
        if (r)
                return r;
+       printk(KERN_DEBUG "Allocate major %d\n", MAJOR(devnum));
        return 0;
 }
 
 static void __exit ch_exit(void)
 {
-       unregister_chrdev_region(MKDEV(major, 0), 256);
+       unregister_chrdev_region(devnum, 256);
 }
 
 module_init(ch_init);