Enclose kernel command line arguments that contain spaces in quotes
[pintos-anon] / src / threads / init.c
index e2f6379b19a916ea305291bb119f075c626b4ccb..8af05ece005e629237e3cd459560369e4cab4ca7 100644 (file)
@@ -16,8 +16,8 @@
 #include "threads/io.h"
 #include "threads/loader.h"
 #include "threads/malloc.h"
-#include "threads/mmu.h"
 #include "threads/palloc.h"
+#include "threads/pte.h"
 #include "threads/thread.h"
 #ifdef USERPROG
 #include "userprog/process.h"
@@ -45,15 +45,8 @@ uint32_t *base_page_dir;
    If true, use multi-level feedback queue scheduler. */
 bool enable_mlfqs;
 
-#ifdef VM
-/* -rndpg:
-   If false (default), use LRU page replacement policy.
-   If true, use random page replacement policy. */
-bool enable_random_paging;
-#endif
-
 #ifdef FILESYS
-/* -f: Format the filesystem? */
+/* -f: Format the file system? */
 static bool format_filesys;
 #endif
 
@@ -97,6 +90,9 @@ main (void)
   argv = read_command_line ();
   argv = parse_options (argv);
 
+  /* Set random seed if parse_options() didn't. */
+  random_init (0);
+
   /* Initialize memory system. */
   palloc_init ();
   malloc_init ();
@@ -108,9 +104,6 @@ main (void)
   gdt_init ();
 #endif
 
-  /* Set random seed if parse_options() didn't. */
-  random_init (0);
-
   /* Initialize interrupt handlers. */
   intr_init ();
   timer_init ();
@@ -126,7 +119,7 @@ main (void)
   timer_calibrate ();
 
 #ifdef FILESYS
-  /* Initialize filesystem. */
+  /* Initialize file system. */
   disk_init ();
   filesys_init (format_filesys);
 #endif
@@ -195,7 +188,8 @@ paging_init (void)
   /* 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. */
+     to/from Control Registers" and [IA32-v3a] 3.7.5 "Base Address
+     of the Page Directory". */
   asm volatile ("movl %0, %%cr3" :: "r" (vtop (base_page_dir)));
 }
 
@@ -225,7 +219,10 @@ read_command_line (void)
   /* Print kernel command line. */
   printf ("Kernel command line:");
   for (i = 0; i < argc; i++)
-    printf (" %s", argv[i]);
+    if (strchr (argv[i], ' ') == NULL)
+      printf (" %s", argv[i]);
+    else
+      printf (" '%s'", argv[i]);
   printf ("\n");
 
   return argv;
@@ -257,14 +254,9 @@ parse_options (char **argv)
 #ifdef USERPROG
       else if (!strcmp (name, "-ul"))
         user_page_limit = atoi (value);
-#endif
-#ifdef VM
-      else if (!strcmp (name, "-rndpg"))
-        enable_random_paging = true;
 #endif
       else
         PANIC ("unknown option `%s' (use -h for help)", name);
-
     }
   
   return argv;
@@ -366,9 +358,6 @@ usage (void)
           "  -mlfqs             Use multi-level feedback queue scheduler.\n"
 #ifdef USERPROG
           "  -ul=COUNT          Limit user memory to COUNT pages.\n"
-#endif
-#ifdef VM
-          "  -rndpg             Use random page replacement policy.\n"
 #endif
           );
   power_off ();