kern

view src/intr.h @ 47:f65b348780e3

continuing with the process implementation. not done yet, panics.
author John Tsiombikas <nuclear@member.fsf.org>
date Thu, 28 Jul 2011 05:43:04 +0300
parents 06172322fb76
children 50730d42d2d3
line source
1 #ifndef INTR_H_
2 #define INTR_H_
4 #include <inttypes.h>
5 #include "asmops.h"
7 /* offset used to remap IRQ numbers (+32) */
8 #define IRQ_OFFSET 32
9 /* conversion macros between IRQ and interrupt numbers */
10 #define IRQ_TO_INTR(x) ((x) + IRQ_OFFSET)
11 #define INTR_TO_IRQ(x) ((x) - IRQ_OFFSET)
12 /* checks whether a particular interrupt is an remapped IRQ */
13 #define IS_IRQ(n) ((n) >= IRQ_OFFSET && (n) < IRQ_OFFSET + 16)
15 /* structure used to pass the interrupt stack frame from the
16 * entry points to the C dispatch function.
17 */
18 struct intr_frame {
19 /* registers pushed by pusha in intr_entry_* */
20 struct registers regs;
21 /* interrupt number and error code pushed in intr_entry_* */
22 uint32_t inum, err;
23 /* pushed by CPU during interrupt entry */
24 uint32_t eip, cs, eflags;
25 /* pushed by CPU during interrupt entry from user space */
26 uint32_t esp, ss;
27 };
31 typedef void (*intr_func_t)(int, uint32_t);
34 void init_intr(void);
36 void interrupt(int intr_num, intr_func_t func);
38 /* defined in intr-asm.S */
39 int get_intr_state(void);
40 void set_intr_state(int s);
42 void intr_ret(struct intr_frame ifrm);
44 #endif /* INTR_H_ */