diff --git a/src/threads/thread.c b/src/threads/thread.c index 0a66d65..e34d23e 100644 --- a/src/threads/thread.c +++ b/src/threads/thread.c @@ -336,8 +336,11 @@ thread_yield (void) ASSERT (!intr_context ()); old_level = intr_disable (); + + /* Insert the thread back into the ready list in priority order. */ if (cur != idle_thread) - list_push_back (&ready_list, &cur->elem); + list_insert_ordered(&ready_list, &cur->elem, priority_more, NULL); + cur->status = THREAD_READY; schedule (); intr_set_level (old_level);