From 949455aae581f6bee62c42365775a216d758d454 Mon Sep 17 00:00:00 2001 From: sBubshait Date: Thu, 17 Oct 2024 06:35:39 +0100 Subject: [PATCH] Update set priority to eliminate race condition when accessing ready list --- src/threads/thread.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/threads/thread.c b/src/threads/thread.c index 7366641..f364679 100644 --- a/src/threads/thread.c +++ b/src/threads/thread.c @@ -389,6 +389,8 @@ thread_set_priority (int new_priority) thread_current ()->priority = new_priority; + enum intr_level old_level = intr_disable (); + if (new_priority < old_priority && !list_empty (&ready_list)) { /* If the new priority is lower than the old priority, check if the current thread no longer has the highest priority. If it doesn't, yield the CPU. @@ -401,6 +403,8 @@ thread_set_priority (int new_priority) thread_yield(); } } + + intr_set_level (old_level); } /* Returns the current thread's priority. */