thread_join() the -ex process if THREAD_JOIN_IMPLEMENTED.
[pintos-anon] / src / threads / init.c
index 1025172727e1682bc0a350c9dc52630986fa621f..855afa0340fcb66788aa03a00cc70666b17bbbae 100644 (file)
@@ -21,7 +21,7 @@
 #include "threads/test.h"
 #include "threads/thread.h"
 #ifdef USERPROG
-#include "userprog/addrspace.h"
+#include "userprog/process.h"
 #include "userprog/exception.h"
 #include "userprog/gdt.h"
 #include "userprog/syscall.h"
@@ -112,8 +112,13 @@ main (void)
   /* Run a user program. */
   if (initial_program != NULL)
     {
+      tid_t tid;
       printf ("\nExecuting '%s':\n", initial_program);
-      addrspace_execute (initial_program); 
+      tid = process_execute (initial_program);
+#ifdef THREAD_JOIN_IMPLEMENTED
+      if (tid != TID_ERROR)
+        thread_join (tid);
+#endif
     }
 #else
   test ();
@@ -278,6 +283,8 @@ power_off (void)
 #endif
 
   printf ("Powering off...\n");
+  serial_flush ();
+
   for (p = s; *p != '\0'; p++)
     outb (0x8900, *p);
   for (;;);