【问题标题】:how to create /proc file inside kernel module?如何在内核模块中创建 /proc 文件?
【发布时间】:2013-07-12 23:22:59
【问题描述】:

我想在内核模块中保存一些信息。我在stackoverflow中看到了与我类似的问题,但是我的问题略有不同。假设我正在使用 this code 写入 /proc 文件。我应该如何在我的内核模块之一中调用它?我有一个名为mymodule 的自定义内核模块,它不是里面的主文件(没有init_module()),下面的函数被调用。在这种情况下,像file 这样的函数的输入值应该是什么?基本上可以在内核模块中创建 /proc 文件吗?

int procfile_write(struct file *file, const char *buffer, unsigned long count, void *data)

【问题讨论】:

  • 尝试查看其他驱动程序如何使用 /proc 条目。您可以通过从命令行读取(通过 cat 或其他)该条目来通过用户空间查询您的驱动程序。如果实现了 proc write() 方法,您也可以写入驱动程序。

标签: c file linux-kernel filesystems proc


【解决方案1】:

绝对可以在内核模块中添加 proc 条目,但您可能误解了内核中文件处理的工作原理。

当您在 proc 中创建文件时,您实际上并没有像在用户空间中那样“创建”文件。您正在注册一些在用户空间程序请求您的文件时调用的回调。

这意味着,当用户空间程序请求读取时,您的文件读取回调必须提供数据。当用户空间程序请求写入时,您的文件写入回调必须处理它。

如果你想像传统文件一样使用它来存储信息,你必须分配所需的空间并让你的读取回调从那里复制数据。

【讨论】:

  • 谢谢。是的,我想在 LKM 中存储一些信息。对不起,我是新手。我应该如何“分配所需的空间并从那里读取回调副本数据”?
  • 这取决于。您可以使用kmallocvmalloc 来分配您需要的空间,然后将指向它的指针存储在您的procfile_read 回调可以找到它的地方。
猜你喜欢
  • 2016-03-20
  • 2011-02-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-15
  • 2014-02-16
  • 1970-01-01
  • 1970-01-01
  • 2013-08-31
相关资源
最近更新 更多