kernel: add k_uptime_get() as a system call
Uses new infrastructure for system calls with a 64-bit return value.
Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
diff --git a/include/kernel.h b/include/kernel.h
index deefaab..8b7e230 100644
--- a/include/kernel.h
+++ b/include/kernel.h
@@ -1334,7 +1334,7 @@
*
* @return Current uptime.
*/
-extern s64_t k_uptime_get(void);
+__syscall s64_t k_uptime_get(void);
#ifdef CONFIG_TICKLESS_KERNEL
/**
diff --git a/kernel/sys_clock.c b/kernel/sys_clock.c
index 58213dd..51c8d46 100644
--- a/kernel/sys_clock.c
+++ b/kernel/sys_clock.c
@@ -116,7 +116,7 @@
}
FUNC_ALIAS(_tick_get, sys_tick_get, s64_t);
-s64_t k_uptime_get(void)
+s64_t _impl_k_uptime_get(void)
{
#ifdef CONFIG_TICKLESS_KERNEL
__ASSERT(_sys_clock_always_on,
@@ -125,6 +125,17 @@
return __ticks_to_ms(_tick_get());
}
+#ifdef CONFIG_USERSPACE
+_SYSCALL_HANDLER1(k_uptime_get, ret_p)
+{
+ u64_t *ret = (u64_t *)ret_p;
+
+ _SYSCALL_MEMORY_WRITE(ret, sizeof(*ret));
+ *ret = _impl_k_uptime_get();
+ return 0;
+}
+#endif
+
/**
*
* @brief Return number of ticks since a reference time