XenevaOS
Loading...
Searching...
No Matches
ioapic.h
Go to the documentation of this file.
1
30#ifndef __IOAPIC_H__
31#define __IOAPIC_H__
32
33#include <stdint.h>
34
35#define IOAPIC_REG_ID 0x00
36#define IOAPIC_REG_VER 0x01
37#define IOAPIC_REG_ARB 0x02
38#define IOAPIC_REG_RED_TBL_BASE 0x10
39
40/*
41* IOAPICInitialise -- initialise ioapic
42* @param address -- ioapic base address
43*/
44extern void IOAPICInitialise(void* address);
45
46/*
47* IOAPICMaskIRQ -- masks an irq
48* @param irq -- Interrupt Request number
49* @param value -- if true, then mask, if false unmask
50*/
51extern void IOAPICMaskIRQ(uint8_t irq, bool value);
52
53/*
54* IOAPICRegisterIRQ -- Maps an IOAPIC interrupt to a interrupt vector
55* @param vector -- vector number
56* @param fn -- function handler
57* @param irq -- IRQ number
58* @param level -- is this a level interrupt ?
59*/
60extern void IOAPICRegisterIRQ(size_t vector, void(*fn)(size_t, void*), uint8_t irq, bool level);
61
62extern void IOAPICRedirect(uint8_t irq, uint32_t gsi, uint16_t flags, uint8_t apic);
63
64#endif
unsigned int uint32_t
Definition acefiex.h:163
unsigned char uint8_t
Definition acefiex.h:161
unsigned short int uint16_t
Definition acefiex.h:162
void IOAPICRegisterIRQ(size_t vector, void(*fn)(size_t, void *), uint8_t irq, bool level)
Definition ioapic.cpp:67
void IOAPICInitialise(void *address)
Definition ioapic.cpp:132
void IOAPICRedirect(uint8_t irq, uint32_t gsi, uint16_t flags, uint8_t apic)
Definition ioapic.cpp:90
void IOAPICMaskIRQ(uint8_t irq, bool value)
Definition ioapic.cpp:115