MicrOS
idt.h
Go to the documentation of this file.
1 #ifndef IDT_H
2 #define IDT_H
3 
4 #define IDT_INTERRUPT_DESCRIPTOR_TABLE_LENGTH 64
5 #define IDT_MAX_INTERRUPT_HANDLERS 64
6 
7 #include <stdlib.h>
8 #include <string.h>
9 #include "idt_entry.h"
10 #include "idt_info.h"
11 #include "state/interrupt_state.h"
12 #include "state/exception_state.h"
16 #include "cpu/pic/pic.h"
17 #include "cpu/panic/panic_screen.h"
19 
20 void idt_init();
21 void idt_set(uint8_t index, uint32_t (*handler)(interrupt_state *state), bool user_interrupt);
22 void idt_unset(uint8_t index);
23 
24 void idt_attach_interrupt_handler(uint8_t interrupt_number, bool (*handler)(interrupt_state *state));
25 void idt_detach_interrupt_handler(uint8_t interrupt_number, bool (*handler)(interrupt_state *state));
26 
27 void idt_attach_exception_handler(uint8_t exception_number, void (*handler)(exception_state *state));
28 void idt_detach_exception_handler(uint8_t exception_number, void (*handler)(exception_state *state));
29 
30 void idt_attach_process_manager(void (*handler)(interrupt_state *state));
31 void idt_attach_syscalls_manager(void (*handler)(interrupt_state *state));
32 
37 
38 // Exceptions
39 extern uint32_t idt_exc0();
40 extern uint32_t idt_exc1();
41 extern uint32_t idt_exc2();
42 extern uint32_t idt_exc3();
43 extern uint32_t idt_exc4();
44 extern uint32_t idt_exc5();
45 extern uint32_t idt_exc6();
46 extern uint32_t idt_exc7();
47 extern uint32_t idt_exc8();
48 extern uint32_t idt_exc9();
49 extern uint32_t idt_exc10();
50 extern uint32_t idt_exc11();
51 extern uint32_t idt_exc12();
52 extern uint32_t idt_exc13();
53 extern uint32_t idt_exc14();
54 extern uint32_t idt_exc15();
55 extern uint32_t idt_exc16();
56 extern uint32_t idt_exc17();
57 extern uint32_t idt_exc18();
58 extern uint32_t idt_exc19();
59 extern uint32_t idt_exc20();
60 extern uint32_t idt_exc21();
61 extern uint32_t idt_exc22();
62 extern uint32_t idt_exc23();
63 extern uint32_t idt_exc24();
64 extern uint32_t idt_exc25();
65 extern uint32_t idt_exc26();
66 extern uint32_t idt_exc27();
67 extern uint32_t idt_exc28();
68 extern uint32_t idt_exc29();
69 extern uint32_t idt_exc30();
70 extern uint32_t idt_exc31();
71 
72 // Hardware interrupts
73 extern uint32_t idt_int32();
74 extern uint32_t idt_int33();
75 extern uint32_t idt_int34();
76 extern uint32_t idt_int35();
77 extern uint32_t idt_int36();
78 extern uint32_t idt_int37();
79 extern uint32_t idt_int38();
80 extern uint32_t idt_int39();
81 extern uint32_t idt_int40();
82 extern uint32_t idt_int41();
83 extern uint32_t idt_int42();
84 extern uint32_t idt_int43();
85 extern uint32_t idt_int44();
86 extern uint32_t idt_int45();
87 extern uint32_t idt_int46();
88 extern uint32_t idt_int47();
89 
90 // Software interrupts
91 extern uint32_t idt_int50();
92 
93 #endif
Definition: interrupt_state.h:8
uint32_t idt_int50()
uint32_t idt_exc3()
uint32_t idt_int44()
uint32_t idt_exc8()
uint32_t idt_exc13()
uint32_t idt_exc28()
uint32_t idt_exc11()
uint32_t idt_int40()
void idt_init()
Definition: idt.c:142
Definition: exception_state.h:7
uint32_t idt_exc29()
uint32_t idt_exc30()
uint32_t idt_int35()
uint32_t idt_exc17()
uint32_t idt_exc14()
uint32_t idt_exc21()
uint32_t idt_exc18()
uint32_t idt_exc26()
uint32_t idt_int46()
uint32_t idt_int47()
uint32_t idt_int37()
void idt_global_exc_handler(exception_state *state)
Definition: idt.c:310
void idt_global_int_handler(interrupt_state *state)
Definition: idt.c:288
uint32_t idt_exc15()
uint32_t idt_int41()
uint32_t idt_int39()
void idt_attach_exception_handler(uint8_t exception_number, void(*handler)(exception_state *state))
Definition: idt.c:253
uint32_t idt_exc24()
uint32_t idt_int33()
uint32_t idt_exc27()
uint32_t idt_int32()
uint32_t idt_exc5()
uint32_t idt_exc23()
uint32_t idt_exc22()
void idt_detach_exception_handler(uint8_t exception_number, void(*handler)(exception_state *state))
Definition: idt.c:266
uint32_t idt_exc12()
uint32_t idt_exc0()
uint32_t idt_int42()
uint32_t idt_exc1()
void idt_detach_interrupt_handler(uint8_t interrupt_number, bool(*handler)(interrupt_state *state))
Definition: idt.c:241
uint32_t idt_exc4()
uint32_t idt_exc16()
uint32_t idt_int38()
void idt_set(uint8_t index, uint32_t(*handler)(interrupt_state *state), bool user_interrupt)
Definition: idt.c:211
void idt_software_interrupt_handler()
void idt_attach_syscalls_manager(void(*handler)(interrupt_state *state))
Definition: idt.c:283
uint32_t idt_exc9()
uint32_t idt_int43()
uint32_t idt_exc20()
void idt_attach_process_manager(void(*handler)(interrupt_state *state))
Definition: idt.c:278
uint32_t idt_int34()
uint32_t idt_exc31()
uint32_t idt_exc19()
uint32_t idt_exc25()
size_t uint32_t
Unsigned integral type.
Definition: string.h:8
void idt_unset(uint8_t index)
Definition: idt.c:223
uint32_t idt_int45()
uint32_t idt_exc2()
uint32_t idt_exc7()
uint32_t idt_exc6()
uint32_t idt_int36()
uint32_t idt_exc10()
bool idt_syscalls_interrupt_handler(interrupt_state *state)
Definition: idt.c:355
void idt_attach_interrupt_handler(uint8_t interrupt_number, bool(*handler)(interrupt_state *state))
Definition: idt.c:228