int Kernel::run() { NOTICE(""); // Load boot image programs loadBootImage(); // Start the scheduler m_procs->schedule(); // Never actually returns. return 0; }
Kernel::Kernel(Memory *memory, ProcessManager *procs) : Singleton<Kernel>(this) { DEBUG(""); /* Initialize members */ m_memory = memory; m_procs = procs; /* Register generic API handlers */ m_apis.fill(ZERO); m_apis.insert(IPCMessageNumber, (APIHandler *) IPCMessageHandler); m_apis.insert(PrivExecNumber, (APIHandler *) PrivExecHandler); m_apis.insert(ProcessCtlNumber, (APIHandler *) ProcessCtlHandler); m_apis.insert(SystemInfoNumber, (APIHandler *) SystemInfoHandler); m_apis.insert(VMCopyNumber, (APIHandler *) VMCopyHandler); m_apis.insert(VMCtlNumber, (APIHandler *) VMCtlHandler); m_apis.insert(IOCtlNumber, (APIHandler *) IOCtlHandler); /* Load boot image programs */ loadBootImage(); }