Comments.
authorBen Pfaff <blp@cs.stanford.edu>
Tue, 28 Sep 2004 07:40:15 +0000 (07:40 +0000)
committerBen Pfaff <blp@cs.stanford.edu>
Tue, 28 Sep 2004 07:40:15 +0000 (07:40 +0000)
src/threads/thread.c
src/threads/thread.h

index afb2006bc1aa8a51ebffc002f80d29e766470e96..b1d25db83da7ecbae5e14d1a8c8451f2932b5f8d 100644 (file)
@@ -59,10 +59,11 @@ void schedule_tail (struct thread *prev);
 static tid_t allocate_tid (void);
 
 /* Initializes the threading system by transforming the code
 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
 
    After calling this function, be sure to initialize the page
    allocator before trying to create any threads with
index c0551273d80b5927ad0f41f76f94ca598a9de9b7..55ac2324d14568ae53e17ae6b00332d829babe77 100644 (file)
@@ -47,11 +47,11 @@ typedef int tid_t;
              |                                 |
              |                                 |
              +---------------------------------+
              |                                 |
              |                                 |
              +---------------------------------+
-             |             magic               |
-             |                               |
-             |                               |
-             |              name               |
-             |             status              |
+             |              magic              |
+             |                :                |
+             |                :                |
+             |               name              |
+             |              status             |
         0 kB +---------------------------------+
 
    The upshot of this is twofold:
         0 kB +---------------------------------+
 
    The upshot of this is twofold:
@@ -66,7 +66,7 @@ typedef int tid_t;
          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
          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
          instead.
 
    The first symptom of either of these problems will probably be
@@ -97,7 +97,7 @@ struct thread
     uint32_t *pagedir;                  /* Page directory. */
 #endif
 
     uint32_t *pagedir;                  /* Page directory. */
 #endif
 
-    /* Owned by thread.c */
+    /* Owned by thread.c. */
     unsigned magic;                     /* Detects stack overflow. */
   };
 
     unsigned magic;                     /* Detects stack overflow. */
   };
 
@@ -114,6 +114,7 @@ void thread_unblock (struct thread *);
 struct thread *thread_current (void);
 tid_t thread_tid (void);
 const char *thread_name (void);
 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);
 void thread_exit (void) NO_RETURN;
 void thread_yield (void);
 void thread_block (void);