Measurement for async syscalls
[akaros.git] / user / null.c
1 // null app
2 #include <inc/lib.h>
3 #include <inc/types.h>
4 #include <inc/syscall.h>
5 #include <inc/x86.h>
6 #include <inc/measure.h>
7
8 #ifdef __DEPUTY__
9 #pragma nodeputy
10 #endif
11
12 #define NUM_ITERATIONS  100000
13 uint64_t times[NUM_ITERATIONS];
14
15 uint64_t total(uint64_t (COUNT(length) array)[], int length)
16 {
17         uint64_t sum = 0;
18         for(int i=0; i<length; i++) {
19                 sum+=array[i];
20         }
21         return sum;
22         //return (length > 0) ? sum/((uint64_t)length) : 0;
23 }
24
25 void umain(void)
26 {
27         measure_function(sys_null(), NUM_ITERATIONS, "sys_null");
28         measure_function(asm volatile("nop;"), NUM_ITERATIONS, "nop");
29         //measure_function(cprintf("Reg Sync call  \n"), 10, "printf");
30         //measure_function_async(cprintf_async(&desc, "Cross-Core call\n"), desc, 10,\
31                                1, "Async Printf");
32
33         // Spin to make sure we don't have any resources deallocated before done
34         while(1);
35 }