void task(void *arg) { int err = 0; rt_printf("Task started. This is computer 1\n"); if(run == 0) err = rt_task_set_periodic(NULL, TM_NOW, PERIOD); if(err != 0) rt_printf("scheduling task filed with err %d: %s\n", err), strerror(-err); outb(inb(0x378) | 0x01, 0x378); //set D0 HIGH while(run<NUMRUNS){ RTIME s = rt_timer_read(); //set D0 LOW and HIGH again outb(inb(0x378) & 0xfe, 0x378); outb(inb(0x378) | 0x01, 0x378); //wait for respons: rt_intr_wait(&keypress, TM_INFINITE); diffs[run] = rt_timer_read() - s; run++; rt_task_wait_period(NULL); } rt_printf("Done listening, saving to file\n"); write_RTIMES(FILEO, NUMRUNS, diffs); rt_printf("Done\n"); }
//startup code void startup() { //begin task rt_printf("Creating timertask...\n"); rt_task_create(&timertask,"timertask",0,50,T_JOINABLE); rt_printf("Setting period...\n"); rt_task_set_periodic(&timertask,TM_NOW,PERIOD); rt_task_start(&timertask,&timer,NULL); /* debug code int i; for(i = 0;i<MEASUREMENTS;i++) { rt_printf("%d\t%u\n",i,exec_times[i]); } */ rt_task_join(&timertask); compute_differences(); write_RTIMES("time_diff.csv",MEASUREMENTS-1,exec_diff); }