sysctl не создает файл в процедуре

Для связи в режиме ядра и пользовательском пространстве я использую эту программу на 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, а также файлы 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 соответственно.

Спасибо за ваше время!


person Nitinkumar Ambekar    schedule 25.02.2016    source источник


Ответы (1)


Попробуйте изменить

bj-m   := sysctl_test.o

to

obj-m   := sysctl_test.o

это сработало для меня.

PS: Это старый вопрос, но я обновляю ответ для тех, кто сталкивается с той же ошибкой и останавливает ее.

person satyaGolladi    schedule 31.07.2018