我正在创建一个字符设备。我找到了两种初始化字符设备的方法
cdev_alloc
和
cdev_init
根据书,如果我嵌入
struct cdev
在我的设备结构中,我应该使用 cdev_init
谁能告诉我它们之间有什么区别?
最佳答案
您可以使用:
struct cdev my_cdev;
在这种情况下,您不需要调用 cdev_alloc,因为内存已经分配。相反,您必须调用
cdev_init(&my_cdev, &fops)
.然后
my_cdev.owner = THIS_MODULE;
或者
您可以使用:
struct cdev *my_cdev_p;
在这种情况下,您必须调用
cdev_alloc()
来分配内存。然后,您必须初始化
my_cdev_p->ops=&fops;
和 my_cdev_p->owner = THIS_MODULE;
.从不使用 cdev_init()
在这种情况下!请注意,上述 2 种方法不属于旧机制。
关于linux-device-driver - cdev_alloc 和 cdev_init 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20783877/