Para comunicarme en modo kernel y espacio de usuario, estoy usando este programa C. Estoy usando el siguiente Makefile para crear un archivo .ko para cargar.
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 Después de una ejecución exitosa y de cargar el archivo .ko , debería haber creado el /proc/sys/net/test y el archivo value1 y value2 en ese directorio.
Cuando cargo este módulo, no crea ningún archivo o directorio. ¿Estoy haciendo algo mal aquí o el código necesita algunos cambios?
Lo he intentado modificando valores en estructuras como:
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 } }; Los valores originales fueron test y net respectivamente.
¡Gracias por tu tiempo!
Intenta cambiar
bj-m := sysctl_test.opara
obj-m := sysctl_test.ofuncionó para mí
PD: es una pregunta antigua, pero actualizo la respuesta para aquellos que encuentran el mismo error y la detienen.