I,
我之前已发布过查询,我正在重复我要修改igmpv3(Linux) 这是在kernel2.6中内置的.--这样它从文件中读取一个值并适当地决定由主机发送的igmpv3 paket中的保留(res 1)值。
我想通过说这更像是改变变量的一般性问题来增加上述问题 来自用户空间的内核空间。
提前感谢您的帮助。
此致
Bhavin
答案 0 :(得分:2)
从用户登陆程序的角度来看,您应该将驱动程序视为具有定义良好的接口的“黑匣子”,而不是具有您想要更改的变量的代码。使用此心理模型,有四种方法(即接口)将控制信息传递给您应该考虑的驱动程序:
sysfs
使用起来要麻烦一些。proc
进程信息伪文件系统。 proc
在/proc
目录中创建用户登陆程序可以读取并有时写入的文件。在过去,这个界面也被用来与司机沟通。虽然proc
看起来与sysfs
类似,但较新的驱动程序(Linux 2.6)应使用sysfs
,而proc
的目的是报告进程的状态。sysfs
是一个伪文件系统,用于导出有关驱动程序和设备的信息。有关更多详细信息和代码示例,请参阅内核中的文档(Documentation/filesystems/sysfs.txt)。对于您的特定情况,请注意“存储”方法。根据您需要与驱动程序通信的时间(即初始化,运行时),您应该添加新的命令行选项或新的sysfs
条目以更改驱动程序如何处理保留字段的值在数据包中。
关于filp_open
,函数的注释是
/**
* This is the helper to open a file from kernelspace if you really
* have to. But in generally you should not do this, so please move
* along, nothing to see here..
*/
意味着有更好的方法来做你想做的事。另请参阅this SO question以获取有关驱动程序通常不应打开文件的原因的详细信息。
答案 1 :(得分:1)
你通常不能。只能在用户空间中修改/proc
和/sys
中或通过模块参数公开的结构。