X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;f=mart%2Fex10%2Fex10dslave.c;h=04305886eb2d9c991aae50624355fea74bfb56ac;hb=b0bd8f724348ba4ec1adb341bc37ab556d7abb10;hp=f7e37a5b35a21e052ae563759f3b96431ee417a4;hpb=9fa12b6daf2e28a74141eea4b1e3c96feca23355;p=des2015.git diff --git a/mart/ex10/ex10dslave.c b/mart/ex10/ex10dslave.c index f7e37a5..0430588 100644 --- a/mart/ex10/ex10dslave.c +++ b/mart/ex10/ex10dslave.c @@ -14,37 +14,31 @@ RT_TASK task; -void lpt1_handler(void *arg) +void taskf(void *arg) { RT_INTR intr; - rt_intr_create(&intr, "lpt1 handler", LPT1IRQ, 0); - int bps = 0; + rt_intr_create(&intr, "lpt1 handler", LPT1IRQ, I_PROPAGATE); + while(1){ - rt_printf("lpt1 interrupt: %d\n", - bps += rt_intr_wait(&intr, TM_INFINITE)); + rt_intr_wait(&intr, TM_INFINITE); + outb(inb(0x378) & 0xFE, 0x378); + outb(inb(0x378) | 0x01, 0x378); } } int main(int argc, char* argv[]) { rt_print_auto_init(1); - - /* setup lpt1 */ - ioperm(0x37A, 1, 1); - unsigned char byte = inb(0x37A); - byte |= 0x10; - outb(byte, 0x37A); - mlockall(MCL_CURRENT | MCL_FUTURE); + 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 stop\n"); + rt_printf("CRTL+C to quit\n"); pause(); - - /* break down lpt1 */ - byte = inb(0x37A); - byte &= 0xEF; - outb(byte, 0x37A); }