Update semaphore code to wake highest priority thread, and run if required

This commit is contained in:
Themis Demetriades
2024-10-15 13:53:48 +01:00
parent 79061fcb9b
commit 6855a48603

View File

@@ -68,7 +68,8 @@ sema_down (struct semaphore *sema)
old_level = intr_disable ();
while (sema->value == 0)
{
list_push_back (&sema->waiters, &thread_current ()->elem);
list_insert_ordered (&sema->waiters, &thread_current ()->elem,
&thread_priority_greater, NULL);
thread_block ();
}
sema->value--;
@@ -118,6 +119,7 @@ sema_up (struct semaphore *sema)
struct thread, elem));
sema->value++;
intr_set_level (old_level);
thread_yield ();
}
static void sema_test_helper (void *sema_);