Merge 'task1/priority-donation' into 'master' #14

Merged
sb3923 merged 66 commits from task1/priority-donation into master 2024-10-23 16:15:45 +00:00
4 changed files with 265 additions and 16 deletions
Showing only changes of commit 2cd4da17a4 - Show all commits

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);