[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Minios-devel] [UNIKRAFT PATCH v3 7/8] plat/linuxu: Add monotonic clock
Reviewed-by: Florian Schmidt <florian.schmidt@xxxxxxxxx> On 06/14/2018 04:12 PM, Simon Kuenzer wrote: Implement ukplat_monotonic_clock() with clock_gettime() system call. Signed-off-by: Simon Kuenzer <simon.kuenzer@xxxxxxxxx> --- plat/linuxu/include/linuxu/syscall-arm_32.h | 2 ++ plat/linuxu/include/linuxu/syscall-x86_64.h | 2 ++ plat/linuxu/include/linuxu/syscall.h | 8 ++++++++ plat/linuxu/include/linuxu/time.h | 1 + plat/linuxu/time.c | 15 +++++++++++++-- 5 files changed, 26 insertions(+), 2 deletions(-) diff --git a/plat/linuxu/include/linuxu/syscall-arm_32.h b/plat/linuxu/include/linuxu/syscall-arm_32.h index 2f0980a..3cdd32b 100644 --- a/plat/linuxu/include/linuxu/syscall-arm_32.h +++ b/plat/linuxu/include/linuxu/syscall-arm_32.h @@ -47,6 +47,8 @@ #define __SC_EXIT 1 #define __SC_IOCTL 54+#define __SC_CLOCK_GETTIME 263+ #define __SC_RT_SIGACTION 43 #define __SC_RT_SIGPROCMASK 126diff --git a/plat/linuxu/include/linuxu/syscall-x86_64.h b/plat/linuxu/include/linuxu/syscall-x86_64.hindex e58f260..5406ddf 100644 --- a/plat/linuxu/include/linuxu/syscall-x86_64.h +++ b/plat/linuxu/include/linuxu/syscall-x86_64.h @@ -47,6 +47,8 @@ #define __SC_IOCTL 16 #define __SC_EXIT 60+#define __SC_CLOCK_GETTIME 228+ #define __SC_RT_SIGACTION 13 #define __SC_RT_SIGPROCMASK 14diff --git a/plat/linuxu/include/linuxu/syscall.h b/plat/linuxu/include/linuxu/syscall.hindex 8411f39..577c0bd 100644 --- a/plat/linuxu/include/linuxu/syscall.h +++ b/plat/linuxu/include/linuxu/syscall.h @@ -37,6 +37,7 @@ #define __SYSCALL_H__#include <sys/types.h>+#include <sys/time.h> #include <linuxu/signal.h>#if defined __X86_64__@@ -69,6 +70,13 @@ static inline int sys_exit(int status) (long) (status)); }+static inline int sys_clock_gettime(clockid_t clk_id, struct timespec *tp)+{ + return (int) syscall2(__SC_CLOCK_GETTIME, + (long) clk_id, + (long) tp); +} + /* * Please note that on failure sys_mmap() is returning -errno */ diff --git a/plat/linuxu/include/linuxu/time.h b/plat/linuxu/include/linuxu/time.h index c4c97e1..94bf91b 100644 --- a/plat/linuxu/include/linuxu/time.h +++ b/plat/linuxu/include/linuxu/time.h @@ -41,5 +41,6 @@ /* POSIX definitions */#define CLOCK_REALTIME 0+#define CLOCK_MONOTONIC 1#endif /* __LINUXU_TIME_H__ */diff --git a/plat/linuxu/time.c b/plat/linuxu/time.c index b79a821..c9ff452 100644 --- a/plat/linuxu/time.c +++ b/plat/linuxu/time.c @@ -39,6 +39,7 @@ #include <uk/assert.h> #include <linuxu/syscall.h> #include <linuxu/time.h> +#include <sys/time.h>#define TIMER_INTVAL_NSEC ukarch_time_msec_to_nsec(TIMER_INTVAL_MSEC) @@ -47,8 +48,18 @@ static timer_t timerid; __nsec ukplat_monotonic_clock(void){ - /* TODO */ - return 0; + struct timespec tp; + __nsec ret; + int rc; + + rc = sys_clock_gettime(CLOCK_MONOTONIC, &tp); + if (unlikely(rc != 0)) + return 0; + + ret = ukarch_time_sec_to_nsec((__nsec) tp.tv_sec); + ret += (__nsec) tp.tv_nsec; + + return ret; }static int timer_handler(void *arg __unused) -- Dr. Florian Schmidt フローリアン・シュミット Research Scientist, Systems and Machine Learning Group NEC Laboratories Europe Kurfürsten-Anlage 36, D-69115 Heidelberg Tel. +49 (0)6221 4342-265 Fax: +49 (0)6221 4342-155 e-mail: florian.schmidt@xxxxxxxxx ============================================================ Registered at Amtsgericht Mannheim, Germany, HRB728558 _______________________________________________ Minios-devel mailing list Minios-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/minios-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |