Remove lots of unused #define's from mmu.h.
[pintos-anon] / src / threads / thread.c
index 36f33daa3fc69cddb16be2341414bf9f2cdc8137..13b0b7e7f37367db09e5b8f30f0bda6b0ae57488 100644 (file)
@@ -43,7 +43,7 @@ void schedule_tail (struct thread *prev);
 void
 thread_init (void) 
 {
-  ASSERT (intr_get_level () == IF_OFF);
+  ASSERT (intr_get_level () == INTR_OFF);
 
   /* Initialize run queue. */
   list_init (&run_queue);
@@ -126,7 +126,7 @@ thread_execute (const char *filename)
   if (t == NULL)
     return false;
   
-  if (!addrspace_load (&t->addrspace, filename, &start)) 
+  if (!addrspace_load (t, filename, &start)) 
     PANIC ("%s: program load failed", filename);
 
   /* Interrupt frame. */
@@ -135,7 +135,7 @@ thread_execute (const char *filename)
   if_->ds = SEL_UDSEG;
   if_->eip = start;
   if_->cs = SEL_UCSEG;
-  if_->eflags = FLAG_IF | 2;
+  if_->eflags = FLAG_IF | FLAG_MBS;
   if_->esp = PHYS_BASE;
   if_->ss = SEL_UDSEG;
 
@@ -220,7 +220,7 @@ void
 thread_yield (void) 
 {
   struct thread *cur = thread_current ();
-  enum if_level old_level;
+  enum intr_level old_level;
   
   ASSERT (!intr_context ());
 
@@ -237,7 +237,7 @@ void
 thread_sleep (void) 
 {
   ASSERT (!intr_context ());
-  ASSERT (intr_get_level () == IF_OFF);
+  ASSERT (intr_get_level () == INTR_OFF);
 
   thread_current ()->status = THREAD_BLOCKED;
   schedule ();
@@ -336,6 +336,7 @@ destroy_thread (struct thread *t)
   ASSERT (t->status == THREAD_DYING);
   ASSERT (t != thread_current ());
 
+  addrspace_destroy (t);
   palloc_free (t);
 }
 
@@ -356,14 +357,14 @@ schedule_tail (struct thread *prev)
 {
   struct thread *cur = thread_current ();
   
-  ASSERT (intr_get_level () == IF_OFF);
+  ASSERT (intr_get_level () == INTR_OFF);
 
   cur->status = THREAD_RUNNING;
   if (prev != NULL && prev->status == THREAD_DYING) 
     destroy_thread (prev);
 
 #ifdef USERPROG
-  addrspace_activate (&cur->addrspace);
+  addrspace_activate (cur);
 #endif
 }
 
@@ -377,7 +378,7 @@ schedule (void)
   struct thread *cur = thread_current ();
   struct thread *next = next_thread_to_run ();
 
-  ASSERT (intr_get_level () == IF_OFF);
+  ASSERT (intr_get_level () == INTR_OFF);
   ASSERT (cur->status != THREAD_RUNNING);
   ASSERT (is_thread (next));