separated irq machine code from kernel code with an interface struct