Skip to content

Commit

Permalink
core/cond.c: cond_wait() expect enabled interrupts
Browse files Browse the repository at this point in the history
  • Loading branch information
derMihai committed Oct 24, 2024
1 parent 5c06502 commit a6b2b03
Showing 1 changed file with 8 additions and 8 deletions.
16 changes: 8 additions & 8 deletions core/cond.c
Original file line number Diff line number Diff line change
Expand Up @@ -34,19 +34,19 @@ void cond_init(cond_t *cond)

void cond_wait(cond_t *cond, mutex_t *mutex)
{
unsigned irqstate = irq_disable();
assert(irq_is_enabled());
irq_disable();
thread_t *me = thread_get_active();

mutex_unlock(mutex);
sched_set_status(me, STATUS_COND_BLOCKED);
thread_add_to_list(&cond->queue, me);
irq_restore(irqstate);
irq_enable();
/* mutex_unlock() might reschedule, so it needs to be called with interrupts
* enabled. */
mutex_unlock(mutex);
thread_yield_higher();

/*
* Once we reach this point, the condition variable was signalled,
* and we are free to continue.
*/
/* Once we reach this point, the condition variable was signaled, and we are
* free to continue. */
mutex_lock(mutex);
}

Expand Down

0 comments on commit a6b2b03

Please sign in to comment.