IRQs
struct irq_action { irq_handler_t handler; void *data; struct list_head list;};struct irq_action referenced types:
struct irq_chip { char *name; void (*mask)(struct irq_desc *); void (*unmask)(struct irq_desc *); void (*eoi)(struct irq_desc *); void (*set_affinity)(struct irq_desc *, struct cpu_mask *); int (*set_rate_limit)(struct irq_desc *, time_t interval);};struct irq_desc { uint8_t vector; enum irq_flags flags; char *name; struct irq_chip *chip; void *chip_data; struct list_head actions; struct cpu_mask affinity; struct cpu_mask masked_cpus; bool present; bool allocated; bool enabled;};struct irq_desc referenced types:
struct irq_context { uint64_t rax; uint64_t rbx; uint64_t rcx; uint64_t rdx; uint64_t rbp; uint64_t rdi; uint64_t rsi; uint64_t r8; uint64_t r9; uint64_t r10; uint64_t r11; uint64_t r12; uint64_t r13; uint64_t r14; uint64_t r15; uint64_t rip; uint64_t cs; uint64_t rflags; uint64_t rsp; uint64_t ss;};enum irq_result { IRQ_NONE = 0, IRQ_HANDLED = 1,};enum irq_flags { IRQ_FLAG_SHARED = 1, IRQ_FLAG_LEVEL_TRIGGERED = 1 << 1, IRQ_FLAG_EDGE_TRIGGERED = 1 << 2, IRQ_FLAG_NONE = 0,};typedef enum irq_result (*irq_handler_t)(void * ctx, uint8_t vector, struct irq_context * ictx);type alias irq_handler_t referenced types:
void irq_mark_self_in_interrupt(bool new);bool irq_in_interrupt(void);bool irq_in_thread_context(void);Defines
Section titled “Defines”#define IRQ_DIV_BY_Z 0x0#define IRQ_DEBUG 0x1#define IRQ_NMI 0x2#define IRQ_BREAKPOINT 0x3#define IRQ_DBF 0x8#define IRQ_SSF 0xC#define IRQ_GPF 0xD#define IRQ_PAGE_FAULT 0xE#define IRQ_TIMER 0x20#define IRQ_SCHEDULER IRQ_TIMER#define IRQ_TLB_SHOOTDOWN 0x22#define IRQ_NOP 0x24