]> rtime.felk.cvut.cz Git - l4.git/blobdiff - kernel/fiasco/src/kern/context_base.cpp
update
[l4.git] / kernel / fiasco / src / kern / context_base.cpp
index aeb5f4e143801bb8b11b298ee6795f02f406be46..0c8517fcd16984c90452f64d3309a7e83c25ce71 100644 (file)
@@ -18,33 +18,11 @@ public:
   virtual ~Context_base() = 0;
 
 protected:
+  friend Cpu_number &__cpu_of(const void *);
   Mword _state;
+  Cpu_number _cpu;
 };
 
-//---------------------------------------------------------------------------
-INTERFACE [mp]:
-
-EXTENSION class Context_base
-{
-protected:
-  friend unsigned &__cpu_of(const void *);
-  unsigned _cpu;
-};
-
-//---------------------------------------------------------------------------
-IMPLEMENTATION [!mp]:
-
-inline
-void set_cpu_of(const void *ptr, unsigned cpu)
-{ (void)ptr; (void)cpu; }
-
-inline
-unsigned cpu_of(const void *)
-{ return 0; }
-
-inline
-unsigned current_cpu()
-{ return 0; }
 
 //---------------------------------------------------------------------------
 IMPLEMENTATION:
@@ -65,25 +43,30 @@ inline NEEDS [context_of, "processor.h"]
 Context *current()
 { return context_of((void *)Proc::stack_pointer()); }
 
-//---------------------------------------------------------------------------
-IMPLEMENTATION [mp]:
-
-#include "config.h"
-
 inline NEEDS ["config.h"]
-unsigned &__cpu_of(const void *ptr)
+Cpu_number &__cpu_of(const void *ptr)
 { return reinterpret_cast<Context_base*>(context_of(ptr))->_cpu; }
 
 inline NEEDS [__cpu_of]
-void set_cpu_of(const void *ptr, unsigned cpu)
+void set_cpu_of(const void *ptr, Cpu_number cpu)
 { __cpu_of(ptr) = cpu; }
 
 
 inline NEEDS [__cpu_of]
-unsigned cpu_of(const void *ptr)
+Cpu_number cpu_of(const void *ptr)
 { return __cpu_of(ptr); }
 
+//---------------------------------------------------------------------------
+IMPLEMENTATION [!mp]:
+
+inline
+Cpu_number current_cpu()
+{ return Cpu_number::boot_cpu(); }
+
+//---------------------------------------------------------------------------
+IMPLEMENTATION [mp]:
+
 inline NEEDS [current, cpu_of]
-unsigned current_cpu()
+Cpu_number current_cpu()
 { return cpu_of(current()); }