isr handler kernel problem

Aug 02, 2006 0 Replies

I'm working on a kernel module interrupt handler. I stripped the problem down with a parallel port handler and get the following result:



initializing module Badness in enable_irq at kernel/irq/manage.c:109 [] enable_irq+0x84/0xf0 [] initialize_module+0x5a/0x81 [parint_mod] [] sys_init_module+0xcc/0x1e0 [] sys_munmap+0x48/0x70 [] sysenter_past_esp+0x54/0x79 cleaning up module



this is the stripped down module: irqreturn_t interrupt_handler(int irq, void *dev_id, struct pt_regs *regs){ interruptcount++; printk("######INT######\n"); return IRQ_HANDLED; }



static int __init initialize_module(void){ int ret;



printk("initializing module\n"); ret = request_irq(PAR_PORT_INT, interrupt_handler, SA_INTERRUPT, "parallelport", NULL); if (ret != 0) { printk("init of irq handler ret: %d\n", ret); return ret; }



enable_irq(PAR_PORT_INT); outb_p(0x10, BASEPORT+2);//set interrupt mode outb_p(0, BASEPORT);//force interrupt outb_p(255, BASEPORT); outb_p(0, BASEPORT);



return 0; }



The module loads perfect. In init_module I just toggle the interrupt line and /proc/interrupts reflects the incrementing interrupts. However the handler just crashes. The system is an updated suse 10.0 kernel (2.6.13-15.11). Installed on a suse 9.2 system it runs perfectly, so it's a real kernel problem. Anybody familiar with this kernel problem? taco


Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required