diff --git a/src/threads/synch.c b/src/threads/synch.c index 374817f..d773824 100644 --- a/src/threads/synch.c +++ b/src/threads/synch.c @@ -120,7 +120,10 @@ sema_up (struct semaphore *sema) sema->value++; intr_set_level (old_level); - thread_yield (); + if (intr_context ()) + intr_yield_on_return (); + else + thread_yield (); } static void sema_test_helper (void *sema_);