plots
[des2015.git] / mart / ex10 / ex10dmaster.c
index ad9ea10..78ffc7b 100644 (file)
 RT_TASK task;
 RTIME times[SAMPLES];
 
-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_task_set_periodic(NULL, TM_NOW, 1e5);
-    rt_printf("Sending\n");
 
        unsigned int i;
        for(i = 0; i<SAMPLES; i++){
                times[i] = rt_timer_read();     
-        outb(inb(0x378) & 0xEF, 0x378);
-        outb(inb(0x378) | 0x01, 0x378);
-        // Signal other machine
-        rt_intr_wait(&intr, TM_INFINITE);
-        times[i] = rt_timer_read()-times[i];
+               outb(inb(0x378) & 0xFE, 0x378);
+               outb(inb(0x378) | 0x01, 0x378);
+               rt_intr_wait(&intr, TM_INFINITE);
+               times[i] = rt_timer_read()-times[i];
                rt_task_wait_period(NULL);
        }
 
@@ -48,13 +46,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);
 
     pause();
     outb(inb(0x37A) & 0xEF, 0x37A);