Мне не удается создать два узла устройства с младшими номерами 0 и 1 в / proc. device_create создает первое устройство с младшим номером 0, но как мне создать второе устройство с младшим номером 1?
static int __init my_driver_init (void) {
int result;
int major;
printk("In init module");
result = alloc_chrdev_region(&dev, 0, 2, mydev_name);
if (result<0)
return result;
major = MAJOR(dev);
printk("The device is registered by Major no: %d\n", major);
my_driver_cdev = cdev_alloc();
cdev_init (my_driver_cdev, &my_driver_fops);
my_driver_cdev->owner = THIS_MODULE;
result = cdev_add(my_driver_cdev, 0, 2);
if (result<0){
printk("Error in registering the module\n");
unregister_chrdev_region(dev, 2);
return result;
}
printk(KERN_INFO "my_driver: %d\n",__LINE__);
my_driver_class = class_create(THIS_MODULE,mydev_name);
if (IS_ERR(my_driver_class)) {
printk(KERN_ERR "Error creating my_driver class.\n");
result = PTR_ERR(my_driver_class);
cdev_del(my_driver_cdev);
unregister_chrdev_region(dev, 2);
return -1;
}
device_create(my_driver_class,NULL,dev,NULL,"my_driver%d",0);
printk(KERN_INFO "my_driver: %d\n",__LINE__);
}
Добавление строки ниже не создает второго устройства с младшим номером 1.
device_create(my_driver_class,NULL,dev,NULL,"my_driver%d",1);