ca05678c5d707df7c7ccd4300c082cc493dd964f
7 #include <native/task.h>
8 #include <native/timer.h>
9 #include <native/intr.h>
22 rt_printf("Succes creation: %d\n", rt_intr_create(&intr
, "lpt1 handler", LPT1IRQ
, I_PROPAGATE
));
23 rt_task_set_periodic(NULL
, TM_NOW
, 1e5
);
24 rt_printf("Sending\n");
27 for(i
= 0; i
<SAMPLES
; i
++){
28 times
[i
] = rt_timer_read();
29 rt_printf("Set bit to 0\n");
30 outb(inb(0x378) & 0xEF, 0x378);
31 rt_printf("Set bit to 1\n");
32 outb(inb(0x378) | 0x01, 0x378);
33 rt_printf("Wait for interrupt\n");
34 rt_intr_wait(&intr
, TM_INFINITE
);
35 times
[i
] = rt_timer_read()-times
[i
];
36 rt_task_wait_period(NULL
);
40 file
= fopen("ex10d.csv", "w");
41 for(i
= 0; i
<SAMPLES
; i
++){
42 fprintf(file
, "%u,%llu\n", i
, times
[i
]);
45 rt_printf("Done, you can press CRTL+C now\n");
48 int main(int argc
, char* argv
[])
50 rt_print_auto_init(1);
51 mlockall(MCL_CURRENT
| MCL_FUTURE
);
55 outb(inb(0x37A) | 0x01, 0x37A);
56 // outb(inb(0x378) | 0x01, 0x378);
58 rt_task_create(&task
, "task", 0, 50, 0);
59 rt_task_start(&task
, &taskf
, 0);
62 outb(inb(0x37A) & 0xEF, 0x37A);