From eb87cb7d3a0f850cef0f2c0865197457d4a2df61 Mon Sep 17 00:00:00 2001 From: Karl Fessel Date: Fri, 25 Feb 2022 13:20:23 +0100 Subject: [PATCH 1/2] sys/ztimer/xtimer_compat: fix bug introduced in #17690 --- sys/include/ztimer/xtimer_compat.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sys/include/ztimer/xtimer_compat.h b/sys/include/ztimer/xtimer_compat.h index c184b0adf402..60748868563d 100644 --- a/sys/include/ztimer/xtimer_compat.h +++ b/sys/include/ztimer/xtimer_compat.h @@ -142,16 +142,16 @@ static inline void xtimer_tsleep32(xtimer_ticks32_t ticks) xtimer_usleep(xtimer_usec_from_ticks(ticks)); } -static inline uint64_t xtimer_tsleep64(xtimer_ticks64_t ticks) +static inline void xtimer_tsleep64(xtimer_ticks64_t ticks) { const uint32_t max_sleep = UINT32_MAX; uint64_t time = xtimer_usec_from_ticks64(ticks); while (time > max_sleep) { - xtimer_usleep(clock, max_sleep); + xtimer_usleep(max_sleep); time -= max_sleep; } - xtimer_usleep(clock, time); + xtimer_usleep(time); } static inline void xtimer_set(xtimer_t *timer, uint32_t offset) From 08442dbc83051af3bd690cdc92e4deb76d9071bf Mon Sep 17 00:00:00 2001 From: Karl Fessel Date: Fri, 25 Feb 2022 13:41:57 +0100 Subject: [PATCH 2/2] sys/ztimer/xtimer_comapt: add missing define and functions - dummy XTIMER_BACKOFF - xtimer_init - xtimer_is_set - xtimer_rmutex_lock_timeout --- sys/include/ztimer/xtimer_compat.h | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/sys/include/ztimer/xtimer_compat.h b/sys/include/ztimer/xtimer_compat.h index 60748868563d..85f2b28079c6 100644 --- a/sys/include/ztimer/xtimer_compat.h +++ b/sys/include/ztimer/xtimer_compat.h @@ -54,10 +54,29 @@ extern "C" { #define XTIMER_WIDTH (32) #define XTIMER_MASK (0) +/** + * a default XTIMER_BACKOFF value, this is not used by ztimer, but other code + * uses this value to set timers + */ + +#ifndef XTIMER_BACKOFF +#define XTIMER_BACKOFF 1 +#endif + typedef ztimer_t xtimer_t; typedef uint32_t xtimer_ticks32_t; typedef uint64_t xtimer_ticks64_t; +static inline void xtimer_init(void) +{ + ztimer_init(); +} + +static inline bool xtimer_is_set(const xtimer_t *timer) +{ + return ztimer_is_set(ZTIMER_USEC, timer); +} + static inline xtimer_ticks32_t xtimer_ticks(uint32_t ticks) { return ticks; @@ -197,6 +216,16 @@ static inline int xtimer_mutex_lock_timeout(mutex_t *mutex, uint64_t us) return 0; } +static inline int xtimer_rmutex_lock_timeout(rmutex_t *rmutex, uint64_t us) +{ + assert(us <= UINT32_MAX); + if (ztimer_rmutex_lock_timeout(ZTIMER_USEC, rmutex, us)) { + /* Impedance matching required: Convert -ECANCELED error code to -1: */ + return -1; + } + return 0; +} + static inline void xtimer_set_timeout_flag(xtimer_t *t, uint32_t timeout) { ztimer_set_timeout_flag(ZTIMER_USEC, t, timeout);