I'm creating a character device. I found two way to initialize char device
cdev_alloc
and
cdev_init
According to book, if i'm embedding struct cdev
in my device struct then i should use cdev_init
Can any one tell me that what are difference between them?
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With