gpt4 book ai didi

c - ‘struct file_operations’ 的强制函数

转载 作者:太空宇宙 更新时间:2023-11-04 10:03:34 25 4
gpt4 key购买 nike

我试图理解Linux 内核字符设备驱动程序 背后的概念。基本上我想向用户模式程序公开一个 IOCtl。我实现了一个“struct file_operations->unlocked_ioctl”和虚拟“struct file_operations->open, ->close”回调(我的意思是这些 ->open, ->close 回调总是在没有任何其他逻辑的情况下返回 true)。所以我怀疑我真的需要保留这些 API 吗?我尝试在内核模式驱动程序中删除这些 ->open->close 回调,但我仍然能够从用户模式访问 IOCtl 函数。我想知道在这种情况下要公开的“struct file_operations”的所有强制功能是什么。有人可以澄清一下吗?

最佳答案

struct file_operations 对象中,none 回调函数是强制

当 VFS(虚拟文件系统)发现某些函数为 NULL 时,它可能会将其解释为默认实现(例如 .open().close( ) 默认只返回 0)或作为“对于给定文件,给定功能不支持”(例如,缺少 .write() 和其他一些fields 意味着给定的文件不支持写入它)。

仅填写实现所需功能所需的那些功能。


struct file_operations 中唯一建议填写的字段是 owner 字段。在大多数情况下,它应该设置为 THIS_MODULE:

.owner = THIS_MODULE

这样您将保护其他回调函数免受模块卸载的影响。

关于c - ‘struct file_operations’ 的强制函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54250240/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com