要在内核模式和用户空间进行通信,我使用的是this C program。我正在使用以下Makefile创建要加载的.ko
文件。
bj-m := sysctl_test.o
KDIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
default:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
clean:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) clean
成功执行并加载.ko
文件后,它应该在该目录中创建/proc/sys/net/test
目录,value1
和value2
文件。
加载此模块时,它不会创建任何文件或目录。我在这里做错了什么或代码需要一些改变吗?
我尝试过将结构中的值修改为:
static ctl_table test_net_table[] = {
{
...
.procname = "/proc/sys/net/test",
...
},
{ .ctl_name = 0 }
};
static ctl_table test_root_table[] = {
{
...
.procname = "/proc/sys/net/",
...
},
{ .ctl_name = 0 }
};
原始值分别为test
和net
。
感谢您的时间!
答案 0 :(得分:0)
尝试更改
bj-m := sysctl_test.o
到
obj-m := sysctl_test.o
对我有用。
PS:这是一个古老的问题,但是我为遇到相同错误并阻止她的人更新了答案。