diff options
author | Bjoern Brandenburg <bbb@mpi-sws.org> | 2012-08-14 14:31:06 -0400 |
---|---|---|
committer | Bjoern Brandenburg <bbb@mpi-sws.org> | 2012-08-14 14:46:16 -0400 |
commit | 2312a91bde3baeb226ce78c444b18eaa7f80cf34 (patch) | |
tree | 3632d1c940c99f2b1217b9efc654635b93756975 | |
parent | f215a05c0ea23c7779b1a3a4361b4d88ddc73dc1 (diff) |
Implement lt_sleep() syscall wrapper
Wrap nanosleep() to make sleeping for a given number of
nanoseconds easier, using the LITMUS^RT time type lt_t.
-rw-r--r-- | include/litmus.h | 3 | ||||
-rw-r--r-- | src/clocks.c | 11 |
2 files changed, 14 insertions, 0 deletions
diff --git a/include/litmus.h b/include/litmus.h index e4b619e..677f9a9 100644 --- a/include/litmus.h +++ b/include/litmus.h | |||
@@ -129,6 +129,9 @@ static inline lt_t ms2lt(unsigned long milliseconds) | |||
129 | return __NS_PER_MS * milliseconds; | 129 | return __NS_PER_MS * milliseconds; |
130 | } | 130 | } |
131 | 131 | ||
132 | /* sleep for some number of nanoseconds */ | ||
133 | int lt_sleep(lt_t timeout); | ||
134 | |||
132 | /* CPU time consumed so far in seconds */ | 135 | /* CPU time consumed so far in seconds */ |
133 | double cputime(void); | 136 | double cputime(void); |
134 | 137 | ||
diff --git a/src/clocks.c b/src/clocks.c index fcb94e5..74c2fb4 100644 --- a/src/clocks.c +++ b/src/clocks.c | |||
@@ -3,6 +3,8 @@ | |||
3 | #include <sys/time.h> | 3 | #include <sys/time.h> |
4 | #include <time.h> | 4 | #include <time.h> |
5 | 5 | ||
6 | #include "litmus.h" | ||
7 | |||
6 | /* CPU time consumed so far in seconds */ | 8 | /* CPU time consumed so far in seconds */ |
7 | double cputime(void) | 9 | double cputime(void) |
8 | { | 10 | { |
@@ -21,3 +23,12 @@ double wctime(void) | |||
21 | gettimeofday(&tv, NULL); | 23 | gettimeofday(&tv, NULL); |
22 | return (tv.tv_sec + 1E-6 * tv.tv_usec); | 24 | return (tv.tv_sec + 1E-6 * tv.tv_usec); |
23 | } | 25 | } |
26 | |||
27 | int lt_sleep(lt_t timeout) | ||
28 | { | ||
29 | struct timespec delay; | ||
30 | |||
31 | delay.tv_sec = timeout / 1000000000L; | ||
32 | delay.tv_nsec = timeout % 1000000000L; | ||
33 | return nanosleep(&delay, NULL); | ||
34 | } | ||