diff options
Diffstat (limited to 'arch/um/os-Linux/time.c')
-rw-r--r-- | arch/um/os-Linux/time.c | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/arch/um/os-Linux/time.c b/arch/um/os-Linux/time.c index 6ff3d98281ba..9ffc61ac8ed6 100644 --- a/arch/um/os-Linux/time.c +++ b/arch/um/os-Linux/time.c | |||
@@ -26,6 +26,21 @@ int set_interval(void) | |||
26 | return 0; | 26 | return 0; |
27 | } | 27 | } |
28 | 28 | ||
29 | int timer_one_shot(int ticks) | ||
30 | { | ||
31 | unsigned long usec = ticks * 1000000 / UM_HZ; | ||
32 | unsigned long sec = usec / 1000000; | ||
33 | struct itimerval interval; | ||
34 | |||
35 | usec %= 1000000; | ||
36 | interval = ((struct itimerval) { { 0, 0 }, { sec, usec } }); | ||
37 | |||
38 | if (setitimer(ITIMER_VIRTUAL, &interval, NULL) == -1) | ||
39 | return -errno; | ||
40 | |||
41 | return 0; | ||
42 | } | ||
43 | |||
29 | void disable_timer(void) | 44 | void disable_timer(void) |
30 | { | 45 | { |
31 | struct itimerval disable = ((struct itimerval) { { 0, 0 }, { 0, 0 }}); | 46 | struct itimerval disable = ((struct itimerval) { { 0, 0 }, { 0, 0 }}); |
@@ -74,7 +89,7 @@ unsigned long long os_nsecs(void) | |||
74 | struct timeval tv; | 89 | struct timeval tv; |
75 | 90 | ||
76 | gettimeofday(&tv, NULL); | 91 | gettimeofday(&tv, NULL); |
77 | return (unsigned long long) tv.tv_sec * BILLION + tv.tv_usec * 1000; | 92 | return timeval_to_ns(&tv); |
78 | } | 93 | } |
79 | 94 | ||
80 | void idle_sleep(int secs) | 95 | void idle_sleep(int secs) |