从LKM init_module()读取文件(即使用vfs_read())

时间:2015-10-15 05:46:30

标签: linux linux-kernel embedded-linux linuxmint

我想从我的LKM“初始化”功能中读取文件,以便我可以从一些配置文件中配置LKM。

我想知道即使从LKM的初始化函数读取文件也不是一个好习惯。我听说在初始化所有内核后不建议从LKM读取文件。

请指教。 谢谢。

Daum的

1 个答案:

答案 0 :(得分:0)

绝对不建议从内核读取/写入文件。

Kernel Newbies wiki page很好地描述了它。

  

有几个原因:

     
      
  • 选择读取/写入数据的位置和格式是策略和策略不属于内核。用户域守护进程很多   更容易替换为通过a接收或发送数据的那个   网络,生成或转换它们/从不同的格式等。
  •   
  • 文件系统操作需要用户上下文(即:current!= NULL)。您无法确定自己是否处于用户环境中,因此无法撰写任何内容   来自(例如)中断处理程序。
  •   
  • 内核允许用户进程使用多个文件系统命名空间。它应该使用哪一个?你怎么确定它   使用你想要的那个?
  •   
  • 内核不应该依赖于文件系统的特定布局,也不应该依赖于可写文件系统的可用性。文件的位置是   应在用户空间中完成策略决策和策略决策。   也许你想将内核输出转储到远程MySQL服务器上   明天,这种政策在用户地区变得更加容易。
  •   
  • 内核代码应保持简单和愚蠢,因为其中的任何错误都可能产生严重后果。处理文件需要使用   意识到各种锁定问题,并会增加不必要的   复杂性。
  •   

如果要配置要编写的内核模块的行为,可以传递在启动时配置它的模块参数。或者,您的模块可以将接口公开给sysfs,可以在运行时使用它来配置它。