From e27ce2465f7434e4e5fbb01187eaa8a6579a4d62 Mon Sep 17 00:00:00 2001 From: Kaspar Schleiser Date: Thu, 3 Sep 2015 20:00:35 +0200 Subject: [PATCH] sys: xtimer: add xtimer_wakeup64 --- sys/include/xtimer.h | 12 ++++++++++++ sys/xtimer/xtimer.c | 8 ++++++++ 2 files changed, 20 insertions(+) diff --git a/sys/include/xtimer.h b/sys/include/xtimer.h index 80b4cf853..742bf7d8d 100644 --- a/sys/include/xtimer.h +++ b/sys/include/xtimer.h @@ -215,6 +215,18 @@ void xtimer_set_msg64(xtimer_t *timer, uint64_t offset, msg_t *msg, kernel_pid_t */ void xtimer_set_wakeup(xtimer_t *timer, uint32_t offset, kernel_pid_t pid); +/** + * @brief Set a timer that wakes up a thread, 64bit version + * + * This function sets a timer that will wake up a thread when the timer has + * expired. + * + * @param[in] timer timer struct to work with + * @param[in] offset microseconds from now + * @param[in] pid pid of the thread that will be woken up + */ +void xtimer_set_wakeup64(xtimer_t *timer, uint64_t offset, kernel_pid_t pid); + /** * @brief Set a timer to execute a callback at some time in the future * diff --git a/sys/xtimer/xtimer.c b/sys/xtimer/xtimer.c index 29ed50b3f..9b1c2ad33 100644 --- a/sys/xtimer/xtimer.c +++ b/sys/xtimer/xtimer.c @@ -127,6 +127,14 @@ void xtimer_set_wakeup(xtimer_t *timer, uint32_t offset, kernel_pid_t pid) xtimer_set(timer, offset); } +void xtimer_set_wakeup64(xtimer_t *timer, uint64_t offset, kernel_pid_t pid) +{ + timer->callback = _callback_wakeup; + timer->arg = (void*) ((intptr_t)pid); + + _xtimer_set64(timer, offset, offset >> 32); +} + /** * see http://www.hackersdelight.org/magic.htm. * This is to avoid using long integer division functions