Refactor donate_priority to only allow for the current thread to donate its priority

This commit is contained in:
Themis Demetriades
2024-10-23 13:42:36 +01:00
parent a875d5fcb4
commit 2cd4da17a4

View File

@@ -194,11 +194,12 @@ lock_init (struct lock *lock)
sema_init (&lock->semaphore, 1);
}
/* Allows for the donor to donate its priority to donee, iteratively
/* Current thread donates its priority to donee, iteratively
propagating the donation in the case of chains in the wait-for graph.
Also keeps track of the donation by updating the donors list. */
static void
donate_priority (struct thread *donor, struct thread *donee) {
donate_priority (struct thread *donee) {
struct thread *donor = thread_current ();
list_push_back (&donee->donors_list, &donor->donor_elem);
while (donee != NULL)
@@ -249,7 +250,7 @@ lock_acquire (struct lock *lock)
if (lock->holder != NULL)
{
t->waiting_lock = lock;
donate_priority (t, lock->holder);
donate_priority (lock->holder);
}
sema_down (&lock->semaphore);