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>
This commit is contained in:
Andrew Boie 2017-10-08 12:23:55 -07:00 committed by Andrew Boie
commit a73d3737f1
2 changed files with 13 additions and 2 deletions

View file

@ -1334,7 +1334,7 @@ static inline void *_impl_k_timer_user_data_get(struct k_timer *timer)
*
* @return Current uptime.
*/
extern s64_t k_uptime_get(void);
__syscall s64_t k_uptime_get(void);
#ifdef CONFIG_TICKLESS_KERNEL
/**

View file

@ -116,7 +116,7 @@ s64_t _tick_get(void)
}
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 @@ s64_t k_uptime_get(void)
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