From 3f521b71eaf97c531bfa671b3aa2b9b971a37499 Mon Sep 17 00:00:00 2001 From: Ben Pfaff Date: Tue, 20 Dec 2005 20:03:51 +0000 Subject: [PATCH] Comment idle thread more thoroughly. Thanks to "Kevin Hart" for asking questions. --- src/threads/thread.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/threads/thread.c b/src/threads/thread.c index 196ffaf..5229aef 100644 --- a/src/threads/thread.c +++ b/src/threads/thread.c @@ -329,10 +329,24 @@ thread_get_recent_cpu (void) return 0; } -/* Idle thread. Executes when no other thread is ready to run. */ +/* Idle thread. Executes when no other thread is ready to run. + + The idle thread is initially put on the ready list by + thread_start(). It will be scheduled once initially, at which + point it initializes idle_thread and immediately blocks. + After that, the idle thread never appears in the ready list. + It is returned by next_thread_to_run() as a special case when + the ready list is empty. */ static void idle (void *aux UNUSED) { + /* Initialize idle_thread. + + Until we run for the first time, idle_thread remains a null + pointer. That's okay because we know that, at that point, + the ready list has at least one element (the idle thread), + so next_thread_to_run() will not attempt to return the idle + thread. */ idle_thread = thread_current (); for (;;) -- 2.30.2