cdev_alloc 和 cdev_init 有什么区别

Kum*_*rav 5 linux-device-driver

我正在创建一个字符设备。我找到了两种初始化字符设备的方法

cdev_alloc
Run Code Online (Sandbox Code Playgroud)

cdev_init
Run Code Online (Sandbox Code Playgroud)

根据书,如果我嵌入struct cdev在我的设备结构中,那么我应该使用cdev_init

谁能告诉我它们之间有什么区别?

use*_*375 1

根据linux设备驱动程序第三版。

cdev_alloc() 是一种较旧的机制。这用于在字符驱动程序模块运行时获取 cdev 结构。然后您必须手动将 ops 变量的操作分配给 cdev 结构。但是 cdev_init 是新机制,我们必须传递 cdev结构体变量(或已初始化的cdev结构体指针)和文件操作变量,有关信息请参见此处

http://lwn.net/Kernel/LDD3/

第3章