namespace IO.Interrupts; // alloc() and dev_alloc() will throw OperationNotSupported. interface InterruptController : Bus.ResourceSpace { guid: "5B67CF12-F7E0-11D9-8D57-000A95BB581A"; bitfield UserIntFlags { }; request_userint(uint irqnum, UserInterruptCallback callback, UserIntFlags flags, Bus.Device device, UserInterrupt handle out); }; interface Interrupt { guid: "E7E400CC-F820-11D9-908F-000A95BB581A"; get_device(Bus.Device dev out); get_controller(InterruptController con out); get_num(uint irqnum out); }; interface UserInterrupt : Interrupt, Mem.AllocHandle { guid: "29939E02-F7E0-11D9-B720-000A95BB581A"; }; interface UserInterruptCallback { guid: "5017C289-F821-11D9-8B10-000A95BB581A"; action(UserInterrupt irq); };