static tid_t allocate_tid (void);
 
 /* Initializes the threading system by transforming the code
-   that's currently running into a thread.  Note that this is
-   possible only because the loader was careful to put the bottom
-   of the stack at a page boundary; it won't work in general.
-   Also initializes the run queue.
+   that's currently running into a thread.  This can't work in
+   general and it is possible in this case only because loader.S
+   was careful to put the bottom of the stack at a page boundary.
+
+   Also initializes the run queue and the tid lock.
 
    After calling this function, be sure to initialize the page
    allocator before trying to create any threads with
 
              |                                 |
              |                                 |
              +---------------------------------+
-             |             magic               |
-             |               :                 |
-             |               :                 |
-             |              name               |
-             |             status              |
+             |              magic              |
+             |                :                |
+             |                :                |
+             |               name              |
+             |              status             |
         0 kB +---------------------------------+
 
    The upshot of this is twofold:
          large.  If a stack overflows, it will corrupt the thread
          state.  Thus, kernel functions should not allocate large
          structures or arrays as non-static local variables.  Use
-         dynamic allocation with malloc() or palloc_get()
+         dynamic allocation with malloc() or palloc_get_page()
          instead.
 
    The first symptom of either of these problems will probably be
     uint32_t *pagedir;                  /* Page directory. */
 #endif
 
-    /* Owned by thread.c */
+    /* Owned by thread.c. */
     unsigned magic;                     /* Detects stack overflow. */
   };
 
 struct thread *thread_current (void);
 tid_t thread_tid (void);
 const char *thread_name (void);
+
 void thread_exit (void) NO_RETURN;
 void thread_yield (void);
 void thread_block (void);