00001
00002
00003
00004
00005
00006
00007
00008 #ifndef __initializer_h
00009 #define __initializer_h
00010
00011 #include <system/config.h>
00012
00013
00014 #define __LAST_INIT (Initializer::Dispatcher *)-1
00015 #define INIT_TABLE {\
00016 &CPU::init, \
00017 &TSC::init, \
00018 &MMU::init, \
00019 &Machine::init, \
00020 &PCI::init, \
00021 &IC::init, \
00022 &Timer::init, \
00023 &RTC::init, \
00024 &Display::init, \
00025 &Address_Space::init, \
00026 &Segment::init, \
00027 &Mutex::init, \
00028 &Semaphore::init, \
00029 &Condition::init, \
00030 &Alarm::init, \
00031 &Clock::init, \
00032 &Chronometer::init, \
00033 __LAST_INIT \
00034 }
00035
00036 __BEGIN_SYS
00037
00038 class Initializer
00039 {
00040 private:
00041 typedef int (Dispatcher) (System_Info * );
00042 typedef void (Function)(void);
00043
00044 public:
00045 Initializer(System_Info * si);
00046
00047 private:
00048 static Dispatcher * init_table[];
00049 };
00050
00051 __END_SYS
00052
00053 #endif