It seems like the interface for creating modules has changed a bit, and udev is the way to go. Here is a short, quick and dirty module that creates /dev/pi with anonymous major and minor using udev.

The module creates the device (not the file) with register_chrdev, which returns the value of the major number that was assigned. We then use class_create to create a udev class to contain the device, finally you call device_create to actually make the device file.

To remove the device, you call device_destroy to remove the device from the class, then class_unregister to remove the class from sysfs. class_destroy is called to delete the class and finally unregister_chrdev to remove the device from the kernel (the device not the file).

The relevant init and exit sections are: static int pi_init(void) { struct device *err_dev; msg = kmalloc(sizeof(char)*DIGITS, GFP_ATOMIC); // register pi as a device pi_Major = register_chrdev(0, DEVICE_NAME, &fops); if (pi_Major Hope that helps someone out there. source files


Add new comment

This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.

About the Author...