Break GDT, TSS out of init.c, mmu.h.
[pintos-anon] / src / threads / thread.c
index 540041d4d0c57eb476ff0d9eecd3c950913866a3..fed6b841aded48864edee8307fec6fb6090c87ae 100644 (file)
@@ -4,6 +4,7 @@
 #include "interrupt.h"
 #include "intr-stubs.h"
 #include "lib.h"
+#include "gdt.h"
 #include "mmu.h"
 #include "palloc.h"
 #include "random.h"
@@ -43,7 +44,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);
@@ -135,7 +136,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 +221,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 +238,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 ();
@@ -357,7 +358,7 @@ 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) 
@@ -378,7 +379,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));