miniOS
x86_64 hobby kernel with SMP, VFS, and POSIX process model
Loading...
Searching...
No Matches
irq.h File Reference
#include <miniOS/types.h>
Include dependency graph for irq.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  idt_entry_t
struct  idt_descriptor_t

Macros

#define PIC1_CMD   0x20
#define PIC2_CMD   0xA0
#define PIC1_DATA   0x21
#define PIC2_DATA   0xA1
#define PIC_EOI   0x20
#define NR_IRQS   16
#define IRQ_TIMER   0
#define IRQ_KEYBOARD   1
#define SLAVE_PIC   2
#define IRQ_COM2   3
#define IRQ_COM1   4
#define IRQ_LPT2   5
#define IRQ_FLOPPY   6
#define IRQ_LPT1   7
#define IRQ_RT_CLOCK   8
#define MASTER_PIC   9
#define IRQ_AVAILABLE_1   10
#define IRQ_AVAILABLE_2   11
#define IRQ_PS2_MOUSE   12
#define IRQ_COPROCESSOR   13
#define IRQ_PRIMARY_IDE   14
#define IRQ_SECONDARY_IDE   15
#define NR_EXCEPTIONS   32
#define EXCEPT_DIVIDE_ERROR   0
#define EXCEPT_DEBUG   1
#define EXCEPT_NMI_INTERRUPT   2
#define EXCEPT_BREAKPOINT   3
#define EXCEPT_OVERFLOW   4
#define EXCEPT_BOUND_RANGE_EXCEDEED   5
#define EXCEPT_INVALID_OPCODE   6
#define EXCEPT_DEVICE_NOT_AVAILABLE   7
#define EXCEPT_DOUBLE_FAULT   8
#define EXCEPT_COPROCESSOR_SEGMENT_OVERRUN   9
#define EXCEPT_INVALID_TSS   10
#define EXCEPT_SEGMENT_NOT_PRESENT   11
#define EXCEPT_STACK_SEGMENT_FAULT   12
#define EXCEPT_GENERAL_PROTECTION   13
#define EXCEPT_PAGE_FAULT   14
#define EXCEPT_INTEL_RESERVED_1   15
#define EXCEPT_FLOATING_POINT_ERROR   16
#define EXCEPT_ALIGNMENT_CHECK   17
#define EXCEPT_MACHINE_CHECK   18
#define EXCEPT_INTEL_RESERVED_2   19
#define EXCEPT_INTEL_RESERVED_3   20
#define EXCEPT_INTEL_RESERVED_4   21
#define EXCEPT_INTEL_RESERVED_5   22
#define EXCEPT_INTEL_RESERVED_6   23
#define EXCEPT_INTEL_RESERVED_7   24
#define EXCEPT_INTEL_RESERVED_8   25
#define EXCEPT_INTEL_RESERVED_9   26
#define EXCEPT_INTEL_RESERVED_10   27
#define EXCEPT_INTEL_RESERVED_11   28
#define EXCEPT_INTEL_RESERVED_12   29
#define EXCEPT_INTEL_RESERVED_13   30
#define EXCEPT_INTEL_RESERVED_14   31
#define IDT_CALL_GATE   (0b1100)
#define IDT_INTERRUPT_GATE   (0b1110)
#define IDT_TRAP_GATE   (0b1111)

Typedefs

typedef void idt_handler_func(void *interrupt_stack_frame)

Functions

struct idt_entry_t __attribute__ ((packed))
void idt_init ()
void idt_reload (void)
void idt_set_handler (uint8_t type, addr_t handler_addr, unsigned int dpl, uint8_t gate_type)
void irq_set_handler (uint8_t irq, idt_handler_func *fn)

Variables

uint16_t offset_low
uint16_t selector
uint8_t irq_stack_index
uint8_t zero1
uint8_t type
uint8_t zero2
uint8_t dpl
uint8_t present
uint16_t offset_middle
uint32_t offset_high
uint32_t zero3
uint16_t size
struct idt_entry_toffset

Macro Definition Documentation

◆ EXCEPT_ALIGNMENT_CHECK

#define EXCEPT_ALIGNMENT_CHECK   17

◆ EXCEPT_BOUND_RANGE_EXCEDEED

#define EXCEPT_BOUND_RANGE_EXCEDEED   5

◆ EXCEPT_BREAKPOINT

#define EXCEPT_BREAKPOINT   3

◆ EXCEPT_COPROCESSOR_SEGMENT_OVERRUN

#define EXCEPT_COPROCESSOR_SEGMENT_OVERRUN   9

◆ EXCEPT_DEBUG

#define EXCEPT_DEBUG   1

◆ EXCEPT_DEVICE_NOT_AVAILABLE

#define EXCEPT_DEVICE_NOT_AVAILABLE   7

◆ EXCEPT_DIVIDE_ERROR

#define EXCEPT_DIVIDE_ERROR   0

◆ EXCEPT_DOUBLE_FAULT

#define EXCEPT_DOUBLE_FAULT   8

◆ EXCEPT_FLOATING_POINT_ERROR

#define EXCEPT_FLOATING_POINT_ERROR   16

◆ EXCEPT_GENERAL_PROTECTION

#define EXCEPT_GENERAL_PROTECTION   13

◆ EXCEPT_INTEL_RESERVED_1

#define EXCEPT_INTEL_RESERVED_1   15

◆ EXCEPT_INTEL_RESERVED_10

#define EXCEPT_INTEL_RESERVED_10   27

◆ EXCEPT_INTEL_RESERVED_11

#define EXCEPT_INTEL_RESERVED_11   28

◆ EXCEPT_INTEL_RESERVED_12

#define EXCEPT_INTEL_RESERVED_12   29

◆ EXCEPT_INTEL_RESERVED_13

#define EXCEPT_INTEL_RESERVED_13   30

◆ EXCEPT_INTEL_RESERVED_14

#define EXCEPT_INTEL_RESERVED_14   31

◆ EXCEPT_INTEL_RESERVED_2

#define EXCEPT_INTEL_RESERVED_2   19

◆ EXCEPT_INTEL_RESERVED_3

#define EXCEPT_INTEL_RESERVED_3   20

◆ EXCEPT_INTEL_RESERVED_4

#define EXCEPT_INTEL_RESERVED_4   21

◆ EXCEPT_INTEL_RESERVED_5

#define EXCEPT_INTEL_RESERVED_5   22

◆ EXCEPT_INTEL_RESERVED_6

#define EXCEPT_INTEL_RESERVED_6   23

◆ EXCEPT_INTEL_RESERVED_7

#define EXCEPT_INTEL_RESERVED_7   24

◆ EXCEPT_INTEL_RESERVED_8

#define EXCEPT_INTEL_RESERVED_8   25

◆ EXCEPT_INTEL_RESERVED_9

#define EXCEPT_INTEL_RESERVED_9   26

◆ EXCEPT_INVALID_OPCODE

#define EXCEPT_INVALID_OPCODE   6

◆ EXCEPT_INVALID_TSS

#define EXCEPT_INVALID_TSS   10

◆ EXCEPT_MACHINE_CHECK

#define EXCEPT_MACHINE_CHECK   18

◆ EXCEPT_NMI_INTERRUPT

#define EXCEPT_NMI_INTERRUPT   2

◆ EXCEPT_OVERFLOW

#define EXCEPT_OVERFLOW   4

◆ EXCEPT_PAGE_FAULT

#define EXCEPT_PAGE_FAULT   14

◆ EXCEPT_SEGMENT_NOT_PRESENT

#define EXCEPT_SEGMENT_NOT_PRESENT   11

◆ EXCEPT_STACK_SEGMENT_FAULT

#define EXCEPT_STACK_SEGMENT_FAULT   12

◆ IDT_CALL_GATE

#define IDT_CALL_GATE   (0b1100)

◆ IDT_INTERRUPT_GATE

#define IDT_INTERRUPT_GATE   (0b1110)

◆ IDT_TRAP_GATE

#define IDT_TRAP_GATE   (0b1111)

◆ IRQ_AVAILABLE_1

#define IRQ_AVAILABLE_1   10

◆ IRQ_AVAILABLE_2

#define IRQ_AVAILABLE_2   11

◆ IRQ_COM1

#define IRQ_COM1   4

◆ IRQ_COM2

#define IRQ_COM2   3

◆ IRQ_COPROCESSOR

#define IRQ_COPROCESSOR   13

◆ IRQ_FLOPPY

#define IRQ_FLOPPY   6

◆ IRQ_KEYBOARD

#define IRQ_KEYBOARD   1

◆ IRQ_LPT1

#define IRQ_LPT1   7

◆ IRQ_LPT2

#define IRQ_LPT2   5

◆ IRQ_PRIMARY_IDE

#define IRQ_PRIMARY_IDE   14

◆ IRQ_PS2_MOUSE

#define IRQ_PS2_MOUSE   12

◆ IRQ_RT_CLOCK

#define IRQ_RT_CLOCK   8

◆ IRQ_SECONDARY_IDE

#define IRQ_SECONDARY_IDE   15

◆ IRQ_TIMER

#define IRQ_TIMER   0

◆ MASTER_PIC

#define MASTER_PIC   9

◆ NR_EXCEPTIONS

#define NR_EXCEPTIONS   32

◆ NR_IRQS

#define NR_IRQS   16

◆ PIC1_CMD

#define PIC1_CMD   0x20

◆ PIC1_DATA

#define PIC1_DATA   0x21

◆ PIC2_CMD

#define PIC2_CMD   0xA0

◆ PIC2_DATA

#define PIC2_DATA   0xA1

◆ PIC_EOI

#define PIC_EOI   0x20

◆ SLAVE_PIC

#define SLAVE_PIC   2

Typedef Documentation

◆ idt_handler_func

typedef void idt_handler_func(void *interrupt_stack_frame)

Function Documentation

◆ __attribute__()

struct idt_entry_t __attribute__ ( (packed) )

◆ idt_init()

void idt_init ( )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ idt_reload()

void idt_reload ( void )
Here is the caller graph for this function:

◆ idt_set_handler()

void idt_set_handler ( uint8_t type,
addr_t handler_addr,
unsigned int dpl,
uint8_t gate_type )
Here is the call graph for this function:
Here is the caller graph for this function:

◆ irq_set_handler()

void irq_set_handler ( uint8_t irq,
idt_handler_func * fn )
Here is the caller graph for this function:

Variable Documentation

◆ dpl

uint8_t dpl

◆ irq_stack_index

uint8_t irq_stack_index

◆ offset

struct idt_entry_t* offset

◆ offset_high

uint32_t offset_high

◆ offset_low

uint16_t offset_low

◆ offset_middle

uint16_t offset_middle

◆ present

uint8_t present

◆ selector

uint16_t selector

◆ size

uint16_t size

◆ type

uint8_t type

◆ zero1

uint8_t zero1

◆ zero2

uint8_t zero2

◆ zero3

uint32_t zero3