Update message.
[pintos-anon] / src / threads / init.c
index 741f0e42e4339b8824f16646aae237de0f365dc0..55a8cbb5f363f9f140149bedc7fd90f8a74a3178 100644 (file)
@@ -105,6 +105,7 @@ main (void)
   /* Start thread scheduler and enable interrupts. */
   thread_start ();
   serial_init_queue ();
+  timer_calibrate ();
 
 #ifdef FILESYS
   /* Initialize filesystem. */
@@ -119,13 +120,8 @@ main (void)
   /* Run a user program. */
   if (initial_program != NULL)
     {
-      tid_t tid;
       printf ("\nExecuting '%s':\n", initial_program);
-      tid = process_execute (initial_program);
-#ifdef THREAD_JOIN_IMPLEMENTED
-      if (tid != TID_ERROR)
-        thread_join (tid);
-#endif
+      process_wait (process_execute (initial_program));
     }
 #else
   /* Run the compiled-in test function. */
@@ -189,7 +185,11 @@ paging_init (void)
       pt[pte_idx] = pte_create_kernel (vaddr, true);
     }
 
-  asm volatile ("movl %0,%%cr3" :: "r" (vtop (base_page_dir)));
+  /* Store the physical address of the page directory into CR3
+     aka PDBR (page directory base register).  This activates our
+     new page tables immediately.  See [IA32-v2a] "MOV--Move
+     to/from Control Registers" and [IA32-v3] 3.7.5. */
+  asm volatile ("mov %%cr3, %0" :: "r" (vtop (base_page_dir)));
 }
 
 /* Parses the command line. */
@@ -222,8 +222,6 @@ argv_init (void)
   for (i = 0; i < argc; i++)
     if (!strcmp (argv[i], "-rs")) 
       random_init (atoi (argv[++i]));
-    else if (!strcmp (argv[i], "-d")) 
-      debug_enable (argv[++i]);
     else if (!strcmp (argv[i], "-q"))
       power_off_when_done = true;
 #ifdef USERPROG
@@ -248,15 +246,12 @@ argv_init (void)
       fsutil_remove_file = argv[++i];
     else if (!strcmp (argv[i], "-ls"))
       fsutil_list_files = true;
-    else if (!strcmp (argv[i], "-D"))
-      fsutil_dump_filesys = true;
 #endif
     else if (!strcmp (argv[i], "-u"))
       {
         printf (
           "Kernel options:\n"
-          " -rs SEED            Seed random seed to SEED.\n"
-          " -d CLASS[,...]      Enable the given classes of debug messages.\n"
+          " -rs SEED            Set random seed to SEED.\n"
 #ifdef USERPROG
           " -ex 'PROG [ARG...]' Run PROG, passing the optional arguments.\n"
           " -ul USER_MAX        Limit user memory to USER_MAX pages.\n"
@@ -264,13 +259,12 @@ argv_init (void)
 #ifdef FILESYS
           " -f                  Format the filesystem disk (hdb or hd0:1).\n"
           " -ci FILENAME SIZE   Copy SIZE bytes from the scratch disk (hdc\n"
-          "                     or hd1:0) into the filesystem as FILENAME\n"
+          "                     or hd1:0) into the filesystem as FILENAME.\n"
           " -co FILENAME        Copy FILENAME to the scratch disk, with\n"
-          "                     size at start of sector 0 and data afterward\n"
-          " -p FILENAME         Print the contents of FILENAME\n"
-          " -r FILENAME         Delete FILENAME\n"
-          " -ls                 List the files in the filesystem\n"
-          " -D                  Dump complete filesystem contents\n"
+          "                     size at start of sector 0 and data after.\n"
+          " -p FILENAME         Print the contents of FILENAME.\n"
+          " -r FILENAME         Delete FILENAME.\n"
+          " -ls                 List files in the root directory.\n"
 #endif
           " -q                  Power off after doing requested actions.\n"
           " -u                  Print this help message and power off.\n"