X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;f=mart%2Fex10%2Fex10dslave.c;h=04305886eb2d9c991aae50624355fea74bfb56ac;hb=b0bd8f724348ba4ec1adb341bc37ab556d7abb10;hp=ed079c2bcb655992f1b3601f0cc775086b6e3b4c;hpb=51d8e4a86692b7e0a44441f55a79dfebfc511b7a;p=des2015.git diff --git a/mart/ex10/ex10dslave.c b/mart/ex10/ex10dslave.c index ed079c2..0430588 100644 --- a/mart/ex10/ex10dslave.c +++ b/mart/ex10/ex10dslave.c @@ -14,20 +14,15 @@ RT_TASK task; -void lpt1_handler(void *arg) +void taskf(void *arg) { RT_INTR intr; - rt_intr_create(&intr, "lpt1 handler", LPT1IRQ, 0); + rt_intr_create(&intr, "lpt1 handler", LPT1IRQ, I_PROPAGATE); - rt_printf("Listening...\n"); - rt_intr_wait(&intr, TM_INFINITE); - outb(inb(0x378) & 0xEF, 0x378); - outb(inb(0x378) | 0x01, 0x378); - rt_printf("Received an interrupt\n"); while(1){ - rt_intr_wait(&intr, TM_INFINITE); - outb(inb(0x37A) & 0xEF, 0x37A); - outb(inb(0x37A) | 0x01, 0x37A); + rt_intr_wait(&intr, TM_INFINITE); + outb(inb(0x378) & 0xFE, 0x378); + outb(inb(0x378) | 0x01, 0x378); } } @@ -36,13 +31,13 @@ int main(int argc, char* argv[]) rt_print_auto_init(1); mlockall(MCL_CURRENT | MCL_FUTURE); - ioperm(0x37A, 1, 1); - ioperm(0x378, 1, 1); - outb(inb(0x37A) | 0x01, 0x37A); - outb(inb(0x378) | 0x01, 0x378); + ioperm(0x37A, 1, 1); + outb(inb(0x37A) | 0x10, 0x37A); + ioperm(0x378, 1, 1); + outb(inb(0x378) | 0x01, 0x378); rt_task_create(&task, "task", 0, 50, 0); - rt_task_start(&task, &lpt1_handler, 0); + rt_task_start(&task, &taskf, 0); rt_printf("CRTL+C to quit\n"); pause();