@@ -1064,27 +1064,26 @@ static inline void z_vrfy_k_yield(void)
10641064#include <zephyr/syscalls/k_yield_mrsh.c>
10651065#endif /* CONFIG_USERSPACE */
10661066
1067- static int32_t z_tick_sleep (k_ticks_t ticks )
1067+ static int32_t z_tick_sleep (k_timeout_t timeout )
10681068{
10691069 uint32_t expected_wakeup_ticks ;
10701070
10711071 __ASSERT (!arch_is_in_isr (), "" );
10721072
1073- LOG_DBG ("thread %p for %lu ticks" , _current , (unsigned long )ticks );
1073+ LOG_DBG ("thread %p for %lu ticks" , _current , (unsigned long )timeout . ticks );
10741074
1075- /* wait of 0 ms is treated as a 'yield' */
1076- if (ticks == 0 ) {
1075+ /* K_NO_WAIT is treated as a 'yield' */
1076+ if (K_TIMEOUT_EQ ( timeout , K_NO_WAIT ) ) {
10771077 k_yield ();
10781078 return 0 ;
10791079 }
10801080
1081- if (Z_TICK_ABS ( ticks ) <= 0 ) {
1082- expected_wakeup_ticks = ticks + sys_clock_tick_get_32 ();
1081+ if (Z_IS_TIMEOUT_RELATIVE ( timeout ) ) {
1082+ expected_wakeup_ticks = timeout . ticks + sys_clock_tick_get_32 ();
10831083 } else {
1084- expected_wakeup_ticks = Z_TICK_ABS (ticks );
1084+ expected_wakeup_ticks = Z_TICK_ABS (timeout . ticks );
10851085 }
10861086
1087- k_timeout_t timeout = Z_TIMEOUT_TICKS (ticks );
10881087 k_spinlock_key_t key = k_spin_lock (& _sched_spinlock );
10891088
10901089#if defined(CONFIG_TIMESLICING ) && defined(CONFIG_SWAP_NONATOMIC )
@@ -1100,7 +1099,8 @@ static int32_t z_tick_sleep(k_ticks_t ticks)
11001099 uint32_t left_ticks = expected_wakeup_ticks - sys_clock_tick_get_32 ();
11011100
11021101 /* To handle a negative value correctly, once type-cast it to signed 32 bit */
1103- ticks = (k_ticks_t )(int32_t )left_ticks ;
1102+ k_ticks_t ticks = (k_ticks_t )(int32_t )left_ticks ;
1103+
11041104 if (ticks > 0 ) {
11051105 return ticks ;
11061106 }
@@ -1116,9 +1116,7 @@ int32_t z_impl_k_sleep(k_timeout_t timeout)
11161116
11171117 SYS_PORT_TRACING_FUNC_ENTER (k_thread , sleep , timeout );
11181118
1119- ticks = timeout .ticks ;
1120-
1121- ticks = z_tick_sleep (ticks );
1119+ ticks = z_tick_sleep (timeout );
11221120
11231121 int32_t ret = K_TIMEOUT_EQ (timeout , K_FOREVER ) ? K_TICKS_FOREVER :
11241122 k_ticks_to_ms_ceil64 (ticks );
@@ -1143,7 +1141,7 @@ int32_t z_impl_k_usleep(int32_t us)
11431141 SYS_PORT_TRACING_FUNC_ENTER (k_thread , usleep , us );
11441142
11451143 ticks = k_us_to_ticks_ceil64 (us );
1146- ticks = z_tick_sleep (ticks );
1144+ ticks = z_tick_sleep (Z_TIMEOUT_TICKS ( ticks ) );
11471145
11481146 int32_t ret = k_ticks_to_us_ceil64 (ticks );
11491147
0 commit comments