GitOS
Operating system exercise
Loading...
Searching...
No Matches
idt.h
Go to the documentation of this file.
1#pragma once
2#include <stdint.h>
4#define MAX_INTERRUPTS 256
6struct idt_desc
8 uint16_t offset_low; //Offset bits 0-15
9 uint16_t selector;
10 uint8_t zero;
11 uint8_t type_attr;
12 uint16_t offset_high; //Offset bits 16-31
13} __attribute__((packed));
14
16{
17 uint16_t limit; // Size of desc table - 1
18 uint32_t base; // Address of the desc table
19} __attribute__((packed));
20
22{
23 uint32_t error_code;
24 uint32_t edi;
25 uint32_t esi;
26 uint32_t ebp;
27 uint32_t reserved;
28 uint32_t ebx;
29 uint32_t edx;
30 uint32_t ecx;
31 uint32_t eax;
32 uint32_t ip;
33 uint32_t cs;
34 uint32_t flags;
35 uint32_t esp;
36 uint32_t ss;
37} __attribute__((packed));
38
39typedef void(*ISR_HANDLER)(int int_no, struct interrupt_frame* frame);
40
41void idt_Init();
42void idt_SetDescriptor(int int_no, void* address);
43int idt_SetHandler(int int_no, ISR_HANDLER handler);
44void idt_Load();
45
46extern const char *idt_InterruptLayoutString[32];
struct fat_directory __attribute__
int idt_SetHandler(int int_no, ISR_HANDLER handler)
Sets handler for given interrupt number.
Definition idt.c:83
void idt_Load()
Loads Interrupt Descriptor Table.
Definition idt.c:54
const char * idt_InterruptLayoutString[32]
Definition idt.c:15
void idt_Init()
Initializes memory for IDT struct Sets default for all interrupts.
Definition idt.c:99
void(* ISR_HANDLER)(int int_no, struct interrupt_frame *frame)
Definition idt.h:39
void idt_SetDescriptor(int int_no, void *address)
Fills entry in IDT for specified Interrupt number Use before idt_Load()
Definition idt.c:65
Definition idt.h:7
uint8_t zero
Definition idt.h:10
uint16_t offset_low
Definition idt.h:8
uint16_t selector
Definition idt.h:9
uint8_t type_attr
Definition idt.h:11
uint16_t offset_high
Definition idt.h:12
Definition idt.h:16
uint32_t base
Definition idt.h:18
uint16_t limit
Definition idt.h:17
Definition idt.h:22
uint32_t edi
Definition idt.h:24
uint32_t ss
Definition idt.h:36
uint32_t ip
Definition idt.h:32
uint32_t esp
Definition idt.h:35
uint32_t flags
Definition idt.h:34
uint32_t cs
Definition idt.h:33
uint32_t eax
Definition idt.h:31
uint32_t reserved
Definition idt.h:27
uint32_t ebp
Definition idt.h:26
uint32_t error_code
Definition idt.h:23
uint32_t esi
Definition idt.h:25
uint32_t edx
Definition idt.h:29
uint32_t ebx
Definition idt.h:28
uint32_t ecx
Definition idt.h:30