Проблема --------- 1. Мой драйвер не может зарегистрировать обработчик прерывания 2. Беру исходники других драйверов (например из книжки Linux Dev Drivers 3rd, short.c), сообщения об ошибках при компиляции практически те же что и у моего драйвера, кроме того не может найти linux/config.h. Под ядром 2.6.18 примеры собираются и работают нормально
В чем отличие моего ядра и 2.6.18 по части сборки, linux/config.h, request_irq?
Кусок кода ---------- request_irq( irq, ieee1355_interrupt, SA_SHIRQ | SA_INTERRUPT, "ieee1355", мои данные );
Вывод при сборке ------------------- ieee1355-test.c -o ieee1355-test make -C /lib/modules/2.6.20-gentoo-r8/build SUBDIRS=/home/jack/ieee1355 modules make[1]: Entering directory `/usr/src/linux-2.6.20-gentoo-r8' CC [M] /home/jack/ieee1355/ieee1355-driver.o /home/jack/ieee1355/ieee1355-driver.c: In function ‘ieee1355_init_module’: /home/jack/ieee1355/ieee1355-driver.c:307: warning: passing argument 2 of request_irq’ from incompatible pointer type Building modules, stage 2. MODPOST 1 modules CC /home/jack/ieee1355/ieee1355-driver.mod.o LD [M] /home/jack/ieee1355/ieee1355-driver.ko make[1]: Leaving directory `/usr/src/linux-2.6.20-gentoo-r8'
--------------- Makefile -------- TARGET = ieee1355-driver OBJS = ieee1355-driver.o MDIR = drivers/misc
EXTRA_CFLAGS = -DEXPORT_SYMTAB CURRENT = $(shell uname -r) KDIR = /lib/modules/$(CURRENT)/build PWD = $(shell pwd) DEST = /lib/modules/$(CURRENT)/kernel/$(MDIR)
obj-m := $(TARGET).o
default: test make -C $(KDIR) SUBDIRS=$(PWD) modules
$(TARGET).o: $(OBJS) $(LD) $(LD_RFLAG) -r -o $@ $(OBJS)
ifneq (,$(findstring 2.4.,$(CURRENT))) install: su -c "cp -v $(TARGET).o $(DEST) && /sbin/depmod -a" else install: su -c "cp -v $(TARGET).ko $(DEST) && /sbin/depmod -a" endif
clean: -rm -f *.o *.ko .*.cmd .*.flags *.mod.c ieee1355-test
32,0-1 Наверху