我想从我的LKM“初始化”功能中读取文件,以便我可以从一些配置文件中配置LKM。
我想知道即使从LKM的初始化函数读取文件也不是一个好习惯。我听说在初始化所有内核后不建议从LKM读取文件。
请指教。 谢谢。
Daum的
答案 0 :(得分:0)
绝对不建议从内核读取/写入文件。
Kernel Newbies wiki page很好地描述了它。
有几个原因:
- 选择读取/写入数据的位置和格式是策略和策略不属于内核。用户域守护进程很多 更容易替换为通过a接收或发送数据的那个 网络,生成或转换它们/从不同的格式等。
- 文件系统操作需要用户上下文(即:current!= NULL)。您无法确定自己是否处于用户环境中,因此无法撰写任何内容 来自(例如)中断处理程序。
- 内核允许用户进程使用多个文件系统命名空间。它应该使用哪一个?你怎么确定它 使用你想要的那个?
- 内核不应该依赖于文件系统的特定布局,也不应该依赖于可写文件系统的可用性。文件的位置是 应在用户空间中完成策略决策和策略决策。 也许你想将内核输出转储到远程MySQL服务器上 明天,这种政策在用户地区变得更加容易。
- 内核代码应保持简单和愚蠢,因为其中的任何错误都可能产生严重后果。处理文件需要使用 意识到各种锁定问题,并会增加不必要的 复杂性。
如果要配置要编写的内核模块的行为,可以传递在启动时配置它的模块参数。或者,您的模块可以将接口公开给sysfs,可以在运行时使用它来配置它。