Enclose kernel command line arguments that contain spaces in quotes
[pintos-anon] / src / threads / init.c
index c6917e224b393b5299dddabd40d1541fbeeef33c..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"
@@ -46,7 +46,7 @@ uint32_t *base_page_dir;
 bool enable_mlfqs;
 
 #ifdef FILESYS
-/* -f: Format the filesystem? */
+/* -f: Format the file system? */
 static bool format_filesys;
 #endif
 
@@ -90,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 ();
@@ -101,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 ();
@@ -119,7 +119,7 @@ main (void)
   timer_calibrate ();
 
 #ifdef FILESYS
-  /* Initialize filesystem. */
+  /* Initialize file system. */
   disk_init ();
   filesys_init (format_filesys);
 #endif
@@ -188,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)));
 }
 
@@ -218,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;