]> rtime.felk.cvut.cz Git - l4.git/blobdiff - kernel/fiasco/src/kern/globals.cpp
update
[l4.git] / kernel / fiasco / src / kern / globals.cpp
index 83f2e3ca81a5bd81186f430cc5b883ff4203d2c2..86a1d7471c8bbdb0f33e27ac9026296607d8d709 100644 (file)
@@ -42,6 +42,45 @@ extern unsigned boot_stack;
 extern Thread *nil_thread;
 static Thread *&kernel_thread = nil_thread;
 
+class Kobject_iface;
+
+class Initial_kobjects
+{
+public:
+  enum
+  {
+    Max = 5,
+    First_cap = 5,
+
+    End_cap = First_cap + Max,
+  };
+
+  void register_obj(Kobject_iface *o, unsigned cap)
+  {
+    assert (cap >= First_cap);
+    assert (cap < End_cap);
+
+    cap -= First_cap;
+
+    assert (!_v[cap]);
+
+    _v[cap] = o;
+  }
+
+  Kobject_iface *obj(unsigned cap) const
+  {
+    assert (cap >= First_cap);
+    assert (cap < End_cap);
+
+    cap -= First_cap;
+
+    return _v[cap];
+  }
+
+private:
+  Kobject_iface *_v[Max];
+};
+
 
 class Global_context_data
 {
@@ -52,6 +91,8 @@ protected:
   Mword _state;
 };
 
+extern Initial_kobjects initial_kobjects;
+
 
 //---------------------------------------------------------------------------
 INTERFACE [mp]:
@@ -75,6 +116,7 @@ Mem_space *sigma0_space;
 Thread *nil_thread;
 bool running = true;
 unsigned boot_stack;
+Initial_kobjects initial_kobjects;
 
 inline NEEDS ["config.h"]
 Context *context_of(const void *ptr)