about summary refs log tree commit diff
path: root/src/pOS/include/kernel/interrupts/irq.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/pOS/include/kernel/interrupts/irq.h')
-rw-r--r--src/pOS/include/kernel/interrupts/irq.h36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/pOS/include/kernel/interrupts/irq.h b/src/pOS/include/kernel/interrupts/irq.h
new file mode 100644
index 0000000..32db130
--- /dev/null
+++ b/src/pOS/include/kernel/interrupts/irq.h
@@ -0,0 +1,36 @@
+#ifndef _IRQ_H_
+#define _IRQ_H_
+
+#include <kernel/system.h>
+#include <kernel/registers.h>
+#include <kernel/interrupts/idt.h>
+
+/* Interrupt requests */
+extern "C" void irq0(void);
+extern "C" void irq1(void);
+extern "C" void irq2(void);
+extern "C" void irq3(void);
+extern "C" void irq4(void);
+extern "C" void irq5(void);
+extern "C" void irq6(void);
+extern "C" void irq7(void);
+extern "C" void irq8(void);
+extern "C" void irq9(void);
+extern "C" void irq10(void);
+extern "C" void irq11(void);
+extern "C" void irq12(void);
+extern "C" void irq13(void);
+extern "C" void irq14(void);
+extern "C" void irq15(void);
+
+class IRQ
+{
+public:
+    static int install_handler(int irq, void (*handler)(struct regs *r));
+    static int uninstall_handler(int irq);
+    static int install(void);
+private:
+    static int remap(void);
+};
+
+#endif