56 #ifdef MODULE_CORE_MSG 
   63 #if IS_USED(MODULE_ZTIMER64_XTIMER_COMPAT) 
   65 #elif IS_USED(MODULE_ZTIMER_XTIMER_COMPAT) 
   69 #if !IS_USED(MODULE_XTIMER_ON_ZTIMER) 
   70 #include "periph_conf.h" 
  468 #if defined(MODULE_CORE_THREAD_FLAGS) || defined(DOXYGEN) 
  502 #if defined(MODULE_CORE_MSG) || defined(DOXYGEN) 
  566 #ifndef XTIMER_BACKOFF 
  567 #define XTIMER_BACKOFF 30 
  570 #ifndef XTIMER_ISR_BACKOFF 
  579 #define XTIMER_ISR_BACKOFF 20 
  589 #define XTIMER_DEV TIMER_DEV(0) 
  593 #define XTIMER_CHAN (0) 
  595 #if (TIMER_0_MAX_VALUE) == 0xfffffful 
  596 #define XTIMER_WIDTH (24) 
  597 #elif (TIMER_0_MAX_VALUE) == 0xffff 
  598 #define XTIMER_WIDTH (16) 
  610 #define XTIMER_WIDTH (32) 
  613 #if (XTIMER_WIDTH != 32) || DOXYGEN 
  623 #define XTIMER_MASK ((0xffffffff >> XTIMER_WIDTH) << XTIMER_WIDTH) 
  625 #define XTIMER_MASK (0) 
  631 #define XTIMER_HZ_BASE (1000000ul) 
  633 #if !defined(XTIMER_HZ) && !defined(MODULE_XTIMER_ON_ZTIMER) 
  637 #define XTIMER_HZ XTIMER_HZ_BASE 
  640 #if !defined(XTIMER_SHIFT) && !defined(MODULE_XTIMER_ON_ZTIMER) 
  641 #if (XTIMER_HZ == 32768ul) 
  644 #define XTIMER_SHIFT (0) 
  645 #elif (XTIMER_HZ == XTIMER_HZ_BASE) 
  661 #define XTIMER_SHIFT (0) 
  662 #elif (XTIMER_HZ >> 1 == XTIMER_HZ_BASE) || (XTIMER_HZ << 1 == XTIMER_HZ_BASE) 
  663 #define XTIMER_SHIFT (1) 
  664 #elif (XTIMER_HZ >> 2 == XTIMER_HZ_BASE) || (XTIMER_HZ << 2 == XTIMER_HZ_BASE) 
  665 #define XTIMER_SHIFT (2) 
  666 #elif (XTIMER_HZ >> 3 == XTIMER_HZ_BASE) || (XTIMER_HZ << 3 == XTIMER_HZ_BASE) 
  667 #define XTIMER_SHIFT (3) 
  668 #elif (XTIMER_HZ >> 4 == XTIMER_HZ_BASE) || (XTIMER_HZ << 4 == XTIMER_HZ_BASE) 
  669 #define XTIMER_SHIFT (4) 
  670 #elif (XTIMER_HZ >> 5 == XTIMER_HZ_BASE) || (XTIMER_HZ << 5 == XTIMER_HZ_BASE) 
  671 #define XTIMER_SHIFT (5) 
  672 #elif (XTIMER_HZ >> 6 == XTIMER_HZ_BASE) || (XTIMER_HZ << 6 == XTIMER_HZ_BASE) 
  673 #define XTIMER_SHIFT (6) 
  675 #error "XTIMER_SHIFT cannot be derived for given XTIMER_HZ, verify settings!" 
  677 #elif !defined(MODULE_XTIMER_ON_ZTIMER) 
  678 #error "XTIMER_SHIFT is set relative to XTIMER_HZ, no manual define required!" 
int16_t kernel_pid_t
Unique process identifier.
 
void xtimer_set_timeout_flag64(xtimer_t *t, uint64_t timeout)
Set timeout thread flag after timeout.
 
static void xtimer_usleep(uint32_t microseconds)
Pause the execution of a thread for some microseconds.
 
static xtimer_ticks32_t xtimer_diff(xtimer_ticks32_t a, xtimer_ticks32_t b)
Compute difference between two xtimer time stamps.
 
static uint32_t xtimer_now_usec(void)
get the current system time in microseconds since start
 
static xtimer_ticks64_t xtimer_ticks_from_usec64(uint64_t usec)
Convert microseconds to xtimer ticks, 64 bit version.
 
static void xtimer_set_msg64(xtimer_t *timer, uint64_t offset, msg_t *msg, kernel_pid_t target_pid)
Set a timer that sends a message, 64bit version.
 
void xtimer_remove(xtimer_t *timer)
remove a timer
 
static void xtimer_set_wakeup64(xtimer_t *timer, uint64_t offset, kernel_pid_t pid)
Set a timer that wakes up a thread, 64bit version.
 
static bool xtimer_less64(xtimer_ticks64_t a, xtimer_ticks64_t b)
Compare two xtimer time stamps, 64 bit version.
 
static xtimer_ticks64_t xtimer_now64(void)
get the current system time as 64bit time stamp
 
static void xtimer_set64(xtimer_t *timer, uint64_t offset_us)
Set a timer to execute a callback at some time in the future, 64bit version.
 
void(* xtimer_callback_t)(void *)
xtimer callback type
 
static void xtimer_tsleep32(xtimer_ticks32_t ticks)
Stop execution of a thread for some time, 32bit version.
 
static void xtimer_msleep(uint32_t milliseconds)
Pause the execution of a thread for some milliseconds.
 
static void xtimer_sleep(uint32_t seconds)
Pause the execution of a thread for some seconds.
 
static xtimer_ticks32_t xtimer_diff32_64(xtimer_ticks64_t a, xtimer_ticks64_t b)
Compute 32 bit difference between two 64 bit xtimer time stamps.
 
int xtimer_rmutex_lock_timeout(rmutex_t *rmutex, uint64_t us)
lock a rmutex but with timeout
 
static xtimer_ticks64_t xtimer_ticks64(uint64_t ticks)
Create an xtimer time stamp, 64 bit version.
 
static void xtimer_periodic_wakeup(xtimer_ticks32_t *last_wakeup, uint32_t period)
will cause the calling thread to be suspended until the absolute time (last_wakeup + period).
 
static void xtimer_set_msg(xtimer_t *timer, uint32_t offset, msg_t *msg, kernel_pid_t target_pid)
Set a timer that sends a message.
 
static bool xtimer_less(xtimer_ticks32_t a, xtimer_ticks32_t b)
Compare two xtimer time stamps.
 
static uint32_t xtimer_usec_from_ticks(xtimer_ticks32_t ticks)
Convert xtimer ticks to microseconds.
 
static xtimer_ticks64_t xtimer_diff64(xtimer_ticks64_t a, xtimer_ticks64_t b)
Compute difference between two xtimer time stamps, 64 bit version.
 
int xtimer_mutex_lock_timeout(mutex_t *mutex, uint64_t us)
lock a mutex but with timeout
 
static void xtimer_usleep64(uint64_t microseconds)
Pause the execution of a thread for some microseconds.
 
static int xtimer_msg_receive_timeout(msg_t *msg, uint32_t timeout)
receive a message blocking but with timeout
 
void xtimer_now_timex(timex_t *out)
get the current system time into a timex_t
 
void xtimer_set_timeout_flag(xtimer_t *t, uint32_t timeout)
Set timeout thread flag after timeout.
 
static void xtimer_tsleep64(xtimer_ticks64_t ticks)
Stop execution of a thread for some time, 64bit version.
 
static void xtimer_nanosleep(uint32_t nanoseconds)
Stop execution of a thread for some time.
 
static void xtimer_set_wakeup(xtimer_t *timer, uint32_t offset, kernel_pid_t pid)
Set a timer that wakes up a thread.
 
void xtimer_init(void)
xtimer initialization function
 
static void xtimer_spin(xtimer_ticks32_t ticks)
Stop execution of a thread for some time, blocking.
 
static uint64_t xtimer_now_usec64(void)
get the current system time in microseconds since start
 
static void xtimer_set(xtimer_t *timer, uint32_t offset)
Set a timer to execute a callback at some time in the future.
 
static xtimer_ticks32_t xtimer_ticks_from_usec(uint32_t usec)
Convert microseconds to xtimer ticks.
 
struct xtimer xtimer_t
xtimer timer structure
 
static xtimer_ticks32_t xtimer_ticks(uint32_t ticks)
Create an xtimer time stamp.
 
static xtimer_ticks32_t xtimer_now(void)
get the current system time as 32bit time stamp value
 
static bool xtimer_is_set(const xtimer_t *timer)
state if an xtimer is currently set (waiting to be expired)
 
static uint64_t xtimer_usec_from_ticks64(xtimer_ticks64_t ticks)
Convert xtimer ticks to microseconds, 64 bit version.
 
static int xtimer_msg_receive_timeout64(msg_t *msg, uint64_t timeout)
receive a message blocking but with timeout, 64bit version
 
uint64_t xtimer_left_usec(const xtimer_t *timer)
Get remaining time of timer.
 
Common macros and compiler attributes/pragmas configuration.
 
Mutex for thread synchronization.
 
Recursive Mutex for thread synchronization.
 
Scheduler API definition.
 
Describes a message object which can be sent between threads.
 
xtimer timestamp (32 bit)
 
uint32_t ticks32
Tick count.
 
xtimer timestamp (64 bit)
 
uint64_t ticks64
Tick count.
 
uint32_t long_offset
upper 32bit offset time
 
struct xtimer * next
reference to next timer in timer lists
 
void * arg
argument to pass to callback function
 
uint32_t start_time
lower 32bit absolute start time
 
uint32_t long_start_time
upper 32bit absolute start time
 
xtimer_callback_t callback
callback function to call when timer expires
 
uint32_t offset
lower 32bit offset time
 
xtimer tick <-> seconds conversions for different values of XTIMER_HZ
 
Utility library for comparing and computing timestamps.
 
ztimer64 xtimer wrapper interface
 
ztimer xtimer wrapper interface