Userspace udelay()
[akaros.git] / user / parlib / timing.c
1 #include <ros/common.h>
2 #include <ros/procinfo.h>
3 #include <arch/arch.h>
4 #include <stdio.h>
5
6 void udelay(uint64_t usec)
7 {
8         uint64_t start, end, now;
9
10         start = read_tsc();
11     end = start + (__procinfo.tsc_freq * usec) / 1000000;
12         if (end == 0) printf("This is terribly wrong \n");
13         do {
14         cpu_relax();
15         now = read_tsc();
16         } while (now < end || (now > start && end < start));
17         return;
18 }