@@ -244,7 +244,7 @@ int32_t mo_mutex_timedlock(mutex_t *m, uint32_t ticks)
244244 if (self -> state == TASK_BLOCKED ) {
245245 /* We woke up due to timeout, not mutex unlock */
246246 if (remove_self_from_waiters (m -> waiters )) {
247- self -> state = TASK_READY ;
247+ _sched_block_enqueue ( self ) ;
248248 result = ERR_TIMEOUT ;
249249 } else {
250250 /* Race condition: we were both timed out and unlocked */
@@ -286,7 +286,7 @@ int32_t mo_mutex_unlock(mutex_t *m)
286286 /* Validate task state before waking */
287287 if (likely (next_owner -> state == TASK_BLOCKED )) {
288288 m -> owner_tid = next_owner -> id ;
289- next_owner -> state = TASK_READY ;
289+ _sched_block_enqueue ( next_owner ) ;
290290 /* Clear any pending timeout since we're granting ownership */
291291 next_owner -> delay = 0 ;
292292 } else {
@@ -399,7 +399,7 @@ int32_t mo_cond_wait(cond_t *c, mutex_t *m)
399399 /* Failed to unlock - remove from wait list and restore state */
400400 NOSCHED_ENTER ();
401401 remove_self_from_waiters (c -> waiters );
402- self -> state = TASK_READY ;
402+ _sched_block_enqueue ( self ) ;
403403 NOSCHED_LEAVE ();
404404 return unlock_result ;
405405 }
@@ -442,7 +442,7 @@ int32_t mo_cond_timedwait(cond_t *c, mutex_t *m, uint32_t ticks)
442442 /* Failed to unlock - cleanup and restore */
443443 NOSCHED_ENTER ();
444444 remove_self_from_waiters (c -> waiters );
445- self -> state = TASK_READY ;
445+ _sched_block_enqueue ( self ) ;
446446 self -> delay = 0 ;
447447 NOSCHED_LEAVE ();
448448 return unlock_result ;
@@ -458,7 +458,7 @@ int32_t mo_cond_timedwait(cond_t *c, mutex_t *m, uint32_t ticks)
458458 if (self -> state == TASK_BLOCKED ) {
459459 /* Timeout occurred - remove from wait list */
460460 remove_self_from_waiters (c -> waiters );
461- self -> state = TASK_READY ;
461+ _sched_block_enqueue ( self ) ;
462462 self -> delay = 0 ;
463463 wait_status = ERR_TIMEOUT ;
464464 } else {
@@ -487,7 +487,7 @@ int32_t mo_cond_signal(cond_t *c)
487487 if (likely (waiter )) {
488488 /* Validate task state before waking */
489489 if (likely (waiter -> state == TASK_BLOCKED )) {
490- waiter -> state = TASK_READY ;
490+ _sched_block_enqueue ( waiter ) ;
491491 /* Clear any pending timeout since we're signaling */
492492 waiter -> delay = 0 ;
493493 } else {
@@ -514,7 +514,7 @@ int32_t mo_cond_broadcast(cond_t *c)
514514 if (likely (waiter )) {
515515 /* Validate task state before waking */
516516 if (likely (waiter -> state == TASK_BLOCKED )) {
517- waiter -> state = TASK_READY ;
517+ _sched_block_enqueue ( waiter ) ;
518518 /* Clear any pending timeout since we're broadcasting */
519519 waiter -> delay = 0 ;
520520 } else {
0 commit comments