GitOS
Operating system exercise
|
#include "idt.h"
#include <stdint.h>
#include "common/status.h"
#include "memory/memory.h"
#include "drivers/pic/pic.h"
#include "task/task.h"
#include "kernel.h"
Functions | |
void | idt_Load () |
Loads Interrupt Descriptor Table. | |
void | idt_SetDescriptor (int int_no, void *address) |
Fills entry in IDT for specified Interrupt number Use before idt_Load() | |
int | idt_SetHandler (int int_no, ISR_HANDLER handler) |
Sets handler for given interrupt number. | |
void | idt_Init () |
Initializes memory for IDT struct Sets default for all interrupts. | |
void | idt_Handler (int int_no, struct interrupt_frame *frame) |
Handles interrupt (called by ISR) | |
Variables | |
struct idt_desc | idt_descriptors [MAX_INTERRUPTS] |
struct idtr_desc | idtr_descriptor |
void * | interrupt_pointer_table [MAX_INTERRUPTS] |
ISR_HANDLER | interrupt_handlers [MAX_INTERRUPTS] |
const char * | idt_InterruptLayoutString [32] |
void idt_Handler | ( | int | int_no, |
struct interrupt_frame * | frame | ||
) |
Handles interrupt (called by ISR)
int_no | Interrupt number |
frame | Interrupt frame |
References interrupt_handlers, kernel_page(), task_current_save_state(), and task_page().
void idt_Init | ( | ) |
Initializes memory for IDT struct Sets default for all interrupts.
References idtr_desc::base, idt_descriptors, idt_SetDescriptor(), idtr_descriptor, interrupt_pointer_table, idtr_desc::limit, MAX_INTERRUPTS, and memset().
void idt_Load | ( | ) |
Loads Interrupt Descriptor Table.
References idtr_descriptor.
void idt_SetDescriptor | ( | int | int_no, |
void * | address | ||
) |
Fills entry in IDT for specified Interrupt number Use before idt_Load()
int_no | Interrupt number |
address | Pointer to interrupt handler |
References idt_descriptors, idt_desc::offset_high, idt_desc::offset_low, idt_desc::selector, idt_desc::type_attr, and idt_desc::zero.
int idt_SetHandler | ( | int | int_no, |
ISR_HANDLER | handler | ||
) |
Sets handler for given interrupt number.
int_no | Interrupt number |
handler | Handler function |
References ALL_OK, EINVARG, interrupt_handlers, and MAX_INTERRUPTS.
struct idt_desc idt_descriptors[MAX_INTERRUPTS] |
const char* idt_InterruptLayoutString[32] |
struct idtr_desc idtr_descriptor |
ISR_HANDLER interrupt_handlers[MAX_INTERRUPTS] |
|
extern |