将 file_operations 转换为 proc_ops 时如何处理 cdev_init?
What To Do With cdev_init When Converting file_operations To proc_ops?
根据这个问题
您必须在较新的内核上使用 proc_ops
而不是 file_operations
结构。
当 cdev 使用旧的 file_operations
结构时,我们应该如何处理使用 cdev_init
初始化 cdev?
我查看了一些关于较新的 linux 内核 (https://elixir.bootlin.com/linux/latest/source/drivers/char/pcmcia/scr24x_cs.c#L216) 的示例,但它们仍然使用旧的 file_operations
.
谢谢,
-特殊K
cdev_init()
函数的签名 still uses 参数指向 struct file_operations
对象,因此在为更新的内核调整模块时无需更改此调用。
proc_create()
函数的签名已更改,因为它使用 proc 文件系统 (procfs) 下的文件,并且此文件系统已 re-designed 在较新的内核。
cdev_init
函数创建(初始化)一个 字符设备 。而字符设备通常用一个文件来表示(也可以位于procfs下),但是这个文件是特殊类型的,对这个文件的操作和字符设备本身的操作是不一样的。因为cdev_init
只负责字符设备(不是文件),所以它不受procfs设计变化的影响。
根据这个问题
您必须在较新的内核上使用 proc_ops
而不是 file_operations
结构。
当 cdev 使用旧的 file_operations
结构时,我们应该如何处理使用 cdev_init
初始化 cdev?
我查看了一些关于较新的 linux 内核 (https://elixir.bootlin.com/linux/latest/source/drivers/char/pcmcia/scr24x_cs.c#L216) 的示例,但它们仍然使用旧的 file_operations
.
谢谢, -特殊K
cdev_init()
函数的签名 still uses 参数指向 struct file_operations
对象,因此在为更新的内核调整模块时无需更改此调用。
proc_create()
函数的签名已更改,因为它使用 proc 文件系统 (procfs) 下的文件,并且此文件系统已 re-designed 在较新的内核。
cdev_init
函数创建(初始化)一个 字符设备 。而字符设备通常用一个文件来表示(也可以位于procfs下),但是这个文件是特殊类型的,对这个文件的操作和字符设备本身的操作是不一样的。因为cdev_init
只负责字符设备(不是文件),所以它不受procfs设计变化的影响。