In the t-kernel, interrupts are also handled in a collaborative
manner—the kernel detects an interrupt, and invokes
the application’s event handler for this interrupt. The event
handler for an interrupt can be at a low level, directly manipulating
the hardware, or at a higher level, leaving part of the
logic to be handled by the kernel. This design gives the application
developers flexibility for handling interrupts. The
application’ interrupt (event) handlers are modified and executed
the same way as usual application code.