我正在制作一个 linux 内核模块,我想知道是否有一种方法可以动态生成 proc 文件并以合理的方式使用它们。
我用 a 创建一个结构list_head
并从那里开始没有问题,但我的最终问题是我希望用不同的变量执行完全相同的函数。也就是说,我只想让一个write_proc
最终为每个文件写入内核内存中的不同缓冲区(以及read_proc
从同一个文件中读取的)。
我对此有困难的原因是用于从 proc 文件读取/写入的函数原型似乎不允许这种行为:
int read_proc(char *buf, char **start, off_t offset, int count,
int *eof, void *data) {
int write_proc(struct file *file, const char *buf,
unsigned long count, void *data) {
现在,我可以静态地创建一堆函数并确保分配足够多的函数,但我想知道是否有更优雅的解决方案。
这是我希望它在用户空间中如何显示的示例(我没有代码 MWE,因为我什至不知道从哪里开始):
$ echo "file1" > /proc/mydir/create
$ echo "file2" > /proc/mydir/create
$ ls /proc/mydir
create file1 file2
$ echo "1" > /proc/mydir/file1
$ echo "5" > /proc/mydir/file2
$ cat /proc/mydir/file*
1
5
我刚刚离开了深渊吗?
我正在寻找非常通用的兼容性(2.6.33+)