Exemple #1
0
cv_status condition_variable::wait_until(unique_lock<mutex>& lock,
                                         const time_point& timeout_time) {
  xtimer_t timer;
  // todo: use function to wait for absolute timepoint once available
  timex_t before;
  xtimer_now_timex(&before);
  auto diff = timex_sub(timeout_time.native_handle(), before);
  xtimer_set_wakeup(&timer, timex_uint64(diff), sched_active_pid);
  wait(lock);
  timex_t after;
  xtimer_now_timex(&after);
  xtimer_remove(&timer);
  auto cmp = timex_cmp(after, timeout_time.native_handle());
  return cmp < 1 ? cv_status::no_timeout : cv_status::timeout;
}
Exemple #2
0
static int _klog(FILE *f, unsigned level, const char *logger,
                 const char *format, va_list args)
{
    timex_t time;
    int written = 0;
    xtimer_now_timex(&time);

    written += fprintf(f, "%010d.%03d %s:%s ", time.seconds,
                       time.microseconds / 1000, logger, _level_str(level));
    written += vfprintf(f, format, args);
    written += fprintf(f, "\n");
    return written;
}