GitOS
Operating system exercise
Loading...
Searching...
No Matches
idt.h File Reference
#include <stdint.h>

Go to the source code of this file.

Data Structures

struct  idt_desc
 
struct  idtr_desc
 
struct  interrupt_frame
 

Macros

#define MAX_INTERRUPTS   256
 

Typedefs

typedef void(* ISR_HANDLER) (int int_no, struct interrupt_frame *frame)
 

Functions

struct idt_desc __attribute__ ((packed))
 
void idt_Init ()
 Initializes memory for IDT struct Sets default for all interrupts.
 
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_Load ()
 Loads Interrupt Descriptor Table.
 

Variables

uint16_t offset_low
 
uint16_t selector
 
uint8_t zero
 
uint8_t type_attr
 
uint16_t offset_high
 
uint16_t limit
 
uint32_t base
 
uint32_t error_code
 
uint32_t edi
 
uint32_t esi
 
uint32_t ebp
 
uint32_t reserved
 
uint32_t ebx
 
uint32_t edx
 
uint32_t ecx
 
uint32_t eax
 
uint32_t ip
 
uint32_t cs
 
uint32_t flags
 
uint32_t esp
 
uint32_t ss
 
const char * idt_InterruptLayoutString [32]
 

Macro Definition Documentation

◆ MAX_INTERRUPTS

#define MAX_INTERRUPTS   256

Typedef Documentation

◆ ISR_HANDLER

typedef void(* ISR_HANDLER) (int int_no, struct interrupt_frame *frame)

Function Documentation

◆ __attribute__()

struct idt_desc __attribute__ ( (packed)  )

◆ idt_Init()

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().

◆ 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

◆ base

uint32_t base

◆ cs

uint32_t cs

◆ eax

uint32_t eax

◆ ebp

uint32_t ebp

◆ ebx

uint32_t ebx

◆ ecx

uint32_t ecx

◆ edi

uint32_t edi

◆ edx

uint32_t edx

◆ error_code

uint32_t error_code

◆ esi

uint32_t esi

◆ esp

uint32_t esp

◆ flags

uint32_t flags

◆ idt_InterruptLayoutString

const char* idt_InterruptLayoutString[32]
extern

◆ ip

uint32_t ip

◆ limit

uint16_t limit

◆ offset_high

uint16_t offset_high

◆ offset_low

uint16_t offset_low

◆ reserved

uint32_t reserved

◆ selector

uint16_t selector

◆ ss

uint32_t ss

◆ type_attr

uint8_t type_attr

◆ zero

uint8_t zero