X-Git-Url: https://git.martlubbers.net/?a=blobdiff_plain;ds=sidebyside;f=mart%2Fex10%2Fex10dslave.c;h=d22e18dc68f614b85885f6e97ef01bc38c098b49;hb=d4ffd6b8e6ebaea4e2a03260c34f5a8e90df1953;hp=f7e37a5b35a21e052ae563759f3b96431ee417a4;hpb=9fa12b6daf2e28a74141eea4b1e3c96feca23355;p=des2015.git diff --git a/mart/ex10/ex10dslave.c b/mart/ex10/ex10dslave.c index f7e37a5..d22e18d 100644 --- a/mart/ex10/ex10dslave.c +++ b/mart/ex10/ex10dslave.c @@ -18,33 +18,28 @@ void lpt1_handler(void *arg) { RT_INTR intr; rt_intr_create(&intr, "lpt1 handler", LPT1IRQ, 0); - int bps = 0; + + rt_printf("Listening...\n"); while(1){ - rt_printf("lpt1 interrupt: %d\n", - bps += rt_intr_wait(&intr, TM_INFINITE)); + rt_intr_wait(&intr, TM_INFINITE); + outb(inb(0x378) & 0xEF, 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); + ioperm(0x378, 1, 1); + outb(inb(0x37A) | 0x01, 0x37A); + outb(inb(0x378) | 0x01, 0x378); + rt_task_create(&task, "task", 0, 50, 0); rt_task_start(&task, &lpt1_handler, 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); }