Merge complete code base into master #15

Merged
ed1223 merged 4 commits from merged-complete into master 2024-10-23 19:05:46 +00:00
2 changed files with 72 additions and 74 deletions
Showing only changes of commit d8c843f16a - Show all commits

View File

@@ -251,6 +251,10 @@ lock_acquire (struct lock *lock)
ASSERT (!lock_held_by_current_thread (lock)); ASSERT (!lock_held_by_current_thread (lock));
struct thread *t = thread_current (); struct thread *t = thread_current ();
if(!thread_mlfqs)
{
enum intr_level old_level = intr_disable (); enum intr_level old_level = intr_disable ();
if (lock->holder != NULL) if (lock->holder != NULL)
@@ -260,9 +264,13 @@ lock_acquire (struct lock *lock)
} }
intr_set_level (old_level); intr_set_level (old_level);
}
sema_down (&lock->semaphore); sema_down (&lock->semaphore);
lock->holder = thread_current (); lock->holder = thread_current ();
if (!thread_mlfqs)
t->waiting_lock = NULL; t->waiting_lock = NULL;
} }
@@ -297,6 +305,8 @@ lock_release (struct lock *lock)
ASSERT (lock != NULL); ASSERT (lock != NULL);
ASSERT (lock_held_by_current_thread (lock)); ASSERT (lock_held_by_current_thread (lock));
if (!thread_mlfqs)
{
struct thread *current_thread = thread_current (); struct thread *current_thread = thread_current ();
struct thread *max_donor = NULL; struct thread *max_donor = NULL;
@@ -341,6 +351,7 @@ lock_release (struct lock *lock)
/* Removal of donors to this thread may change its effective priority, /* Removal of donors to this thread may change its effective priority,
so recalculate. */ so recalculate. */
thread_recalculate_priority (); thread_recalculate_priority ();
}
lock->holder = NULL; lock->holder = NULL;
sema_up (&lock->semaphore); sema_up (&lock->semaphore);

View File

@@ -474,6 +474,12 @@ thread_recalculate_priority (void)
{ {
struct thread *t = thread_current (); struct thread *t = thread_current ();
if (thread_mlfqs)
{
t->priority = calculate_bsd_priority (t->recent_cpu, t->nice);
return;
}
enum intr_level old_level = intr_disable (); enum intr_level old_level = intr_disable ();
t->priority = t->base_priority; t->priority = t->base_priority;