cdev_alloc和cdev_init有什么区别 [英] what is difference between cdev_alloc and cdev_init
问题描述
我正在创建字符设备.我发现了两种初始化char设备的方法
I'm creating a character device. I found two way to initialize char device
cdev_alloc
和
cdev_init
根据书籍,如果我将struct cdev
嵌入设备结构中,则应该使用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?
推荐答案
您可以使用:
struct cdev my_cdev;
在这种情况下,您不需要调用cdev_alloc,因为已经分配了内存.相反,您必须调用cdev_init(&my_cdev, &fops)
.
然后my_cdev.owner = THIS_MODULE;
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
您可以使用:
struct cdev *my_cdev_p;
在这种情况下,您必须调用cdev_alloc()
来分配内存.
然后,您必须初始化my_cdev_p->ops=&fops;
和my_cdev_p->owner = THIS_MODULE;
.在这种情况下,切勿使用cdev_init()
!
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!
请注意,上述2种方法不属于旧机制.
Note that the 2 above methods don't belong to the old mechanism.
这篇关于cdev_alloc和cdev_init有什么区别的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!