Refactor sema_up to add comments for clarity, w/ T

This commit is contained in:
sBubshait
2024-10-22 21:04:14 +01:00
parent 48104b3a41
commit 78c6fd36e3

View File

@@ -115,6 +115,8 @@ sema_up (struct semaphore *sema)
old_level = intr_disable (); old_level = intr_disable ();
if (!list_empty (&sema->waiters)) if (!list_empty (&sema->waiters))
{ {
/* Enforces wake-up of the highest priority thread waiting for the
semaphore. */
struct list_elem *e = list_min (&sema->waiters, priority_more, NULL); struct list_elem *e = list_min (&sema->waiters, priority_more, NULL);
list_remove (e); list_remove (e);
thread_unblock (list_entry (e, struct thread, elem)); thread_unblock (list_entry (e, struct thread, elem));
@@ -122,6 +124,9 @@ sema_up (struct semaphore *sema)
sema->value++; sema->value++;
intr_set_level (old_level); intr_set_level (old_level);
/* Yields the CPU in case the thread that has been woken up has a higher
priority that the current running thread, including the case when called
within an interrupt handler. */
if (intr_context ()) if (intr_context ())
intr_yield_on_return (); intr_yield_on_return ();
else else