Es ist nicht möglich Funktionen eines Kernelmoduls direkt aus einem Programm des User Space aufzurufen. Hier musst du über einen anderen Mechanismus gehen. Schnittstellen gibt es gar viele. Character Device anmelden und über ioctl die Funktionausfrufe implementieren. Werden nur Ausgaben aus dem Kernel benötigt, so kann man im /proc Dateisystem eine entsprechende Datei hinterlegen.
Ein Makefile könnte z.B. so ausehen:
Code:
obj-m := module.o
module-objs := modulteil1.o modulteil2.o
KDIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
default:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
Dieses Makefile macht dir aus modulteil1.c und modulteil2.c das Modul module.ko. Alle Regeln, um die .c in .o zu überführen liefert das Makefile des Kernels. Deshalb wird der make auch mit -C in die Kernelsourcen aufgerufen.
Gruß
almoeli
Lesezeichen