sysctl不会在proc中创建文件

时间:2016-02-25 07:50:53

标签: linux kernel-module sysctl kernel-mode

要在内核模式和用户空间进行通信,我使用的是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目录,value1value2文件。

加载此模块时,它不会创建任何文件或目录。我在这里做错了什么或代码需要一些改变吗?

我尝试过将结构中的值修改为:

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 }
};

原始值分别为testnet

感谢您的时间!

1 个答案:

答案 0 :(得分:0)

尝试更改

bj-m   := sysctl_test.o

obj-m   := sysctl_test.o

对我有用。

PS:这是一个古老的问题,但是我为遇到相同错误并阻止她的人更新了答案。