Refactor donate_priority to only allow for the current thread to donate its priority
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user