我之前已经发布过查询,我正在重复同样的问题这是由主机发送的。
我想通过说这更像是从用户空间更改内核空间变量的通用问题来补充上述问题。
对此,一只 ctuffli 回答说:
从用户态程序的角度来看,您应该将驱动程序视为具有定义良好的接口的“黑匣子”,而不是带有您想要更改的变量的代码。使用这种心智模型,有四种方式(即接口)将控制信息传达给您应该考虑的驱动程序:
- 命令行选项。您可以将参数传递给在初始化期间可用的内核模块。
- IOCTL。这是将控制信息传递给驱动程序的传统方式,但这种机制使用起来比 sysfs 稍微麻烦一些。
- proc 进程信息伪文件系统。proc 在 /proc 目录中创建用户登陆程序可以读取和有时写入的文件。过去,此接口也被用于与驱动程序进行通信。尽管 proc 看起来与 sysfs 相似,但较新的驱动程序 (Linux 2.6) 应该使用 sysfs 代替,因为 proc 的目的是报告进程的状态。
- sysfs 是一个伪文件系统,用于导出有关驱动程序和设备的信息
根据您需要与驱动程序通信的时间(即初始化、运行时),您应该添加一个新的命令行选项或一个新的 sysfs 条目来更改驱动程序如何处理数据包中保留字段的值。
感谢 Ctuffli 的回答。我对 sysfs 没有任何了解。你能提供更多细节吗?我想将 igmpv3 pkt 的保留值之一更改为 0 或 1 或 2。这是我唯一需要更改的内容。你能给我更多关于这个特定问题的细节吗?