Refactor ready_list_reinsert to require being called with interrupts disabled

This commit is contained in:
Themis Demetriades
2024-10-23 13:51:07 +01:00
parent 2cd4da17a4
commit b0074c80f0
2 changed files with 8 additions and 8 deletions

View File

@@ -220,7 +220,9 @@ donate_priority (struct thread *donee) {
/* Only the sink node of the WFG isn't waiting for a lock and
could be on the ready list. Thus, as its priority changed,
it must be reinserted into the list. */
enum intr_level old_level = intr_disable ();
ready_list_reinsert (donee);
intr_set_level (old_level);
donee = NULL;
}
else

View File

@@ -467,20 +467,18 @@ thread_get_recent_cpu (void)
/* Reinsert thread t into the ready list at its correct position
in descending order of priority. Used when this thread's priority
may have changed. */
may have changed. Must be called with interrupts disabled. */
void
ready_list_reinsert (struct thread *t)
{
enum intr_level old_level = intr_disable ();
ASSERT (intr_get_level () == INTR_OFF);
/* If the thread isn't ready to run, do nothing. */
if (t->status == THREAD_READY)
{
list_remove (&t->elem);
list_insert_ordered (&ready_list, &t->elem, priority_more, NULL);
}
if (t->status != THREAD_READY)
return;
intr_set_level (old_level);
list_remove (&t->elem);
list_insert_ordered (&ready_list, &t->elem, priority_more, NULL);
}
/* Idle thread. Executes when no other thread is ready to run.