I\'m creating a character device. I found two way to initialize char device
cdev_alloc
and
cdev_init
Acc
you can use either:
struct cdev my_cdev;
in this case you don't need to call cdev_alloc because memory is already allocated. Instead you must call cdev_init(&my_cdev, &fops)
.
and then my_cdev.owner = THIS_MODULE;
OR
you can use:
struct cdev *my_cdev_p;
in this case you must call cdev_alloc()
to allocate memory.
Then, you have to initialize my_cdev_p->ops=&fops;
and my_cdev_p->owner = THIS_MODULE;
. Never use cdev_init()
in this case!
Note that the 2 above methods don't belong to the old mechanism.