PatchworkOS
Loading...
Searching...
No Matches
interrupt.h
Go to the documentation of this file.
1#pragma once
2
3#include <stdbool.h>
4#include <stdint.h>
5
33
68
76#define INTERRUPT_FRAME_IN_USER_SPACE(frame) ((frame)->ss == (GDT_SS_RING3) && (frame)->cs == (GDT_CS_RING3))
77
90
141
145extern void* vectorTable[INTERRUPT_AMOUNT];
146
153
159void interrupt_disable(void);
160
164void interrupt_enable(void);
165
174
void interrupt_ctx_init(interrupt_ctx_t *ctx)
Initializes the CLI context.
Definition interrupt.c:19
void interrupt_handler(interrupt_frame_t *frame)
Handles CPU interrupts.
Definition interrupt.c:92
void * vectorTable[INTERRUPT_AMOUNT]
Pointers to functions to handle each vector.
void interrupt_disable(void)
Disable interrupts and increment the disableDepth.
Definition interrupt.c:26
void interrupt_enable(void)
Decrement the CLI depth and enable interrupts if depth reaches zero and interrupts were previously en...
Definition interrupt.c:38
interrupt_t
CPU vector identifiers.
Definition interrupt.h:97
page_fault_errors_t
Page Fault Error Codes.
Definition interrupt.h:23
@ EXCEPTION_SIMD_EXCEPTION
Definition interrupt.h:117
@ EXCEPTION_INVALID_TSS
Definition interrupt.h:108
@ EXCEPTION_INVALID_OPCODE
Definition interrupt.h:104
@ EXCEPTION_AMOUNT
Definition interrupt.h:130
@ EXCEPTION_VIRTUALIZATION_EXCEPTION
Definition interrupt.h:118
@ INTERRUPT_TIMER
The timer subsystem interrupt.
Definition interrupt.h:137
@ EXCEPTION_RESERVED_1F
Definition interrupt.h:129
@ EXCEPTION_RESERVED_1D
Definition interrupt.h:127
@ EXCEPTION_RESERVED_17
Definition interrupt.h:121
@ INTERRUPT_NOTE
Nofify that a note is available.
Definition interrupt.h:136
@ EXCEPTION_DEVICE_NOT_AVAILABLE
Definition interrupt.h:105
@ EXCEPTION_MACHINE_CHECK
Definition interrupt.h:116
@ EXCEPTION_SEGMENT_NOT_PRESENT
Definition interrupt.h:109
@ EXCEPTION_NMI
Definition interrupt.h:100
@ EXCEPTION_DOUBLE_FAULT
Definition interrupt.h:106
@ EXCEPTION_RESERVED_1B
Definition interrupt.h:125
@ EXCEPTION_RESERVED_1E
Definition interrupt.h:128
@ INTERRUPT_DIE
Kills and frees the current thread.
Definition interrupt.h:135
@ EXCEPTION_STACK_FAULT
Definition interrupt.h:110
@ EXCEPTION_RESERVED_19
Definition interrupt.h:123
@ EXCEPTION_RESERVED
Definition interrupt.h:113
@ INTERRUPT_TLB_SHOOTDOWN
TLB shootdown interrupt.
Definition interrupt.h:134
@ EXCEPTION_DEBUG
Definition interrupt.h:99
@ EXCEPTION_COPROCESSOR_SEGMENT_OVERRUN
Definition interrupt.h:107
@ EXCEPTION_RESERVED_1A
Definition interrupt.h:124
@ EXCEPTION_RESERVED_1C
Definition interrupt.h:126
@ INTERRUPT_AMOUNT
Definition interrupt.h:139
@ EXCEPTION_OVERFLOW
Definition interrupt.h:102
@ EXTERNAL_INTERRUPT_BASE
Definition interrupt.h:132
@ EXCEPTION_ALIGNMENT_CHECK
Definition interrupt.h:115
@ EXCEPTION_DIVIDE_ERROR
Definition interrupt.h:98
@ EXCEPTION_BREAKPOINT
Definition interrupt.h:101
@ EXCEPTION_GENERAL_PROTECTION
Definition interrupt.h:111
@ EXCEPTION_PAGE_FAULT
Definition interrupt.h:112
@ EXCEPTION_RESERVED_16
Definition interrupt.h:120
@ INTERRUPT_HALT
Halt the CPU.
Definition interrupt.h:138
@ EXCEPTION_CONTROL_PROTECTION_EXCEPTION
Definition interrupt.h:119
@ EXCEPTION_RESERVED_18
Definition interrupt.h:122
@ EXCEPTION_X87_FPU_ERROR
Definition interrupt.h:114
@ EXCEPTION_BOUND_RANGE_EXCEEDED
Definition interrupt.h:103
@ PAGE_FAULT_SOFTWARE_GUARD_EXT
Definition interrupt.h:31
@ PAGE_FAULT_WRITE
Definition interrupt.h:25
@ PAGE_FAULT_INSTRUCTION
Definition interrupt.h:28
@ PAGE_FAULT_USER
Definition interrupt.h:26
@ PAGE_FAULT_RESERVED
Definition interrupt.h:27
@ PAGE_FAULT_PRESENT
Definition interrupt.h:24
@ PAGE_FAULT_SHADOW_STACK
Definition interrupt.h:30
@ PAGE_FAULT_PROTECTION_KEY
Definition interrupt.h:29
#define PACKED
GCC packed attribute.
Definition defs.h:32
__UINT32_TYPE__ uint32_t
Definition stdint.h:15
__UINT64_TYPE__ uint64_t
Definition stdint.h:17
Per-CPU Interrupt Context.
Definition interrupt.h:85
uint32_t disableDepth
Definition interrupt.h:87
uint64_t oldRflags
Definition interrupt.h:86
Trap Frame Structure.
Definition interrupt.h:42
uint64_t rflags
Definition interrupt.h:64
uint64_t errorCode
Definition interrupt.h:60
uint64_t vector
Definition interrupt.h:59