7 #include <native/task.h>
8 #include <native/timer.h>
9 #include <native/intr.h>
17 void lpt1_handler(void *arg
)
20 rt_intr_create(&intr
, "lpt1 handler", LPT1IRQ
, 0);
22 rt_printf("Listening...\n");
23 rt_intr_wait(&intr
, TM_INFINITE
);
24 outb(inb(0x378) & 0xEF, 0x378);
25 outb(inb(0x378) | 0x01, 0x378);
26 rt_printf("Received an interrupt\n");
28 rt_intr_wait(&intr
, TM_INFINITE
);
29 outb(inb(0x37A) & 0xEF, 0x37A);
30 outb(inb(0x37A) | 0x01, 0x37A);
34 int main(int argc
, char* argv
[])
36 rt_print_auto_init(1);
37 mlockall(MCL_CURRENT
| MCL_FUTURE
);
41 outb(inb(0x37A) | 0x01, 0x37A);
42 outb(inb(0x378) | 0x01, 0x378);
44 rt_task_create(&task
, "task", 0, 50, 0);
45 rt_task_start(&task
, &lpt1_handler
, 0);
47 rt_printf("CRTL+C to quit\n");