diff --git a/core/cortex-m/timer.c b/core/cortex-m/timer.c index ba45bc8783..0078936f5a 100644 --- a/core/cortex-m/timer.c +++ b/core/cortex-m/timer.c @@ -37,6 +37,12 @@ static void expire_timer(task_id_t tskid) task_set_event(tskid, TASK_EVENT_TIMER, 0); } +int timestamp_expired(timestamp_t deadline) +{ + timestamp_t now = get_time(); + + return ((int64_t)(now.val - deadline.val) >= 0); +} void process_timers(int overflow) { diff --git a/include/timer.h b/include/timer.h index 4e132ebd6f..796318a1d0 100644 --- a/include/timer.h +++ b/include/timer.h @@ -30,6 +30,14 @@ int timer_arm(timestamp_t tstamp, task_id_t tskid); /* Cancel a running timer for the specified task id. */ int timer_cancel(task_id_t tskid); +/** + * Check if a timestamp has passed / expired + * + * @param deadline deadline timer value to check + * @return 0 if deadline has not yet passed, 1 if it has passed + */ +int timestamp_expired(timestamp_t deadline); + /* Busy-wait the selected number of microseconds. Note that calling this * with us>1000 may impact system performance; use usleep for longer delays. */ void udelay(unsigned us);