GitOS
Loading...
Searching...
No Matches
idt.c File Reference
#include "idt.h"
#include <stdint.h>
#include "common/status.h"
#include "drivers/pic/pic.h"
#include "kernel.h"
#include "memory/memory.h"
#include "task/task.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]

Function Documentation

◆ idt_Handler()

void idt_Handler ( int int_no,
struct interrupt_frame * frame )

Handles interrupt (called by ISR).

Parameters
int_noInterrupt number
frameInterrupt frame

References interrupt_handlers, kernel_page(), task_current_save_state(), and task_page().

◆ idt_Init()

void idt_Init ( )

Initializes memory for IDT struct Sets default for all interrupts.

References idt_descriptors, idt_SetDescriptor(), idtr_descriptor, interrupt_pointer_table, MAX_INTERRUPTS, and memset().

◆ idt_Load()

void idt_Load ( )

Loads Interrupt Descriptor Table.

References idtr_descriptor.

◆ idt_SetDescriptor()

void idt_SetDescriptor ( int int_no,
void * address )

Fills entry in IDT for specified Interrupt number Use before idt_Load().

Parameters
int_noInterrupt number
addressPointer 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.

◆ idt_SetHandler()

int idt_SetHandler ( int int_no,
ISR_HANDLER handler )

Sets handler for given interrupt number.

Parameters
int_noInterrupt number
handlerHandler function
Returns
int Error code

References ALL_OK, EINVARG, interrupt_handlers, and MAX_INTERRUPTS.

Variable Documentation

◆ idt_descriptors

struct idt_desc idt_descriptors[MAX_INTERRUPTS]

◆ idt_InterruptLayoutString

const char* idt_InterruptLayoutString[32]

◆ idtr_descriptor

struct idtr_desc idtr_descriptor

◆ interrupt_handlers

ISR_HANDLER interrupt_handlers[MAX_INTERRUPTS]

◆ interrupt_pointer_table

void* interrupt_pointer_table[MAX_INTERRUPTS]
extern