isr handler kernel problem

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

Reply to
Taco
Loading thread data ...

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.