Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在内核模块内创建/proc文件?_C_File_Linux Kernel_Filesystems_Proc - Fatal编程技术网

如何在内核模块内创建/proc文件?

如何在内核模块内创建/proc文件?,c,file,linux-kernel,filesystems,proc,C,File,Linux Kernel,Filesystems,Proc,我想在内核模块中保存一些信息。我在stackoverflow中看到了与我类似的问题,但我的问题略有不同。假设我正在使用来写入/proc文件。我应该如何在我的内核模块中调用它?我有一个名为mymodule的自定义内核模块,它不是主文件(没有init_module()),下面的函数被调用。在这种情况下,文件的函数类值的输入值应该是什么?基本上,可以在内核模块内创建/proc文件吗 int procfile\u write(结构文件*文件,常量字符*缓冲区,无符号长计数, void*data)在内核模

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

int procfile\u write(结构文件*文件,常量字符*缓冲区,无符号长计数,

void*data)

在内核模块中添加proc条目是绝对可能的,但您可能会误解内核中文件处理的工作方式

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

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


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

谢谢。是的,我想在LKM中存储一些信息。对不起,我是新手。我应该如何“分配所需的空间并从那里读取回调拷贝数据”?这取决于。您可以使用
kmalloc
vmalloc
分配所需的空间,然后将指向该空间的指针存储在
procfile\u read
回调可以找到它的地方。试着查看其他驱动程序如何使用/proc条目。您可以通过从命令行读取(通过cat或其他方式)该条目,通过用户空间查询驱动程序。如果实现了proc write()方法,还可以写入驱动程序。