2

カーネル モードとユーザー空間で通信するために、この C プログラムを使用しています。次の 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 }
};

元の値はそれぞれtestおよびでしnetた。

御時間ありがとうございます!

4

1 に答える 1