/* * Stop system */ EXPORT void shutdown_system( INT fin ) { /* Stop subsystem */ finish_subsystems(); /* Platform dependent finalize sequence */ finish_device(); /* Stop library (libtk) */ _FinishLibtk(); /* Shutdown message output */ #if USE_KERNEL_MESSAGE if ( fin >= 0 ) { tm_putstring((UB*)"\n<< SYSTEM SHUTDOWN >>\n"); } #endif /* Stop T-Kernel/SM */ SystemManager(-1, NULL); /* Stop memory manager */ finish_memmgr(); /* Stop segment manager */ finish_segmgr(); if ( fin < 0 ) { /* Re-start sequence (platform dependent) */ restart_device(fin); } /* Stop system */ t_kernel_exit(); }
int Master::Run(int argc, char ** argv) { _HookSignals(); (gcnew SystemManager())->Run(); _UnhookSignals(); return 0; }
/* * Start system */ EXPORT void start_system( void ) { ER ercd; /* Initialize segment manager */ DispProgress(0x30); ercd = start_segmgr(); if ( ercd < E_OK ) { goto err_ret; } /* Start memory manager */ DispProgress(0x31); ercd = start_memmgr(); if ( ercd < E_OK ) { goto err_ret; } /* Initialize system manager */ DispProgress(0x32); ercd = SystemManager(0, NULL); if ( ercd < E_OK ) { goto err_ret; } /* Initialize library (libtk) V/K/Smalloc is available after this. */ DispProgress(0x33); _InitLibtk(); /* Lower the initial task priority to initialize sequence for the subsystem task at first. */ tk_chg_pri(TSK_SELF, InitTaskPri); /* Start system dependent sequence */ DispProgress(0x34); ercd = start_device(); if ( ercd < E_OK ) { goto err_ret; } /* Start subsystem */ DispProgress(0x35); ercd = start_subsystems(); if ( ercd < E_OK ) { goto err_ret; } return; err_ret: #if USE_KERNEL_MESSAGE tm_putstring((UB*)"!ERROR! start_system\n"); #endif tm_monitor(); /* Stop */ }