diff options
Diffstat (limited to 'src/chthreads.c')
| -rw-r--r-- | src/chthreads.c | 15 | 
1 files changed, 14 insertions, 1 deletions
| diff --git a/src/chthreads.c b/src/chthreads.c index 11d2442ad..3f55c4de5 100644 --- a/src/chthreads.c +++ b/src/chthreads.c @@ -289,7 +289,7 @@ void chThdTerminate(Thread *tp) {  /**   * Suspends the invoking thread for the specified time. - * @param time the system ticks number + * @param time the delay in system ticks   */  void chThdSleep(systime_t time) { @@ -299,6 +299,19 @@ void chThdSleep(systime_t time) {  }  /** + * Suspends the invoking thread until the system time arrives to the specified + * value. + * @param time the absolute system time + */ +void chThdSleepUntil(systime_t time) { + +  chSysLock(); +  if ((time -= chSysGetTime()) > 0) +    chSchGoSleepTimeoutS(PRSLEEP, time); +  chSysUnlock(); +} + +/**   * Terminates the current thread by specifying an exit status code.   *   * @param msg the thread exit code. The code can be retrieved by using | 
