Interrupt-driven I/O