📄 sysstartup.c
字号:
/* *---------------------------------------------------------------------- * T-Kernel * * Copyright (C) 2004 by Ken Sakamura. All rights reserved. * T-Kernel is distributed under the T-License. *---------------------------------------------------------------------- * * Version: 1.01.00 * Released by T-Engine Forum(http://www.t-engine.org) at 2004/6/28. * *---------------------------------------------------------------------- *//* * sysstartup.c (sysinit) * Start/Stop System */#include "sysinit.h"/* * Subsystem */IMPORT ER init_subsystems( void );IMPORT ER start_subsystems( void );IMPORT ER finish_subsystems( void );/* * Manager/Driver */IMPORT ER init_segmgr( void ); /* Segment management */IMPORT ER start_segmgr( void ); /* Segment management */IMPORT ER finish_segmgr( void ); /* Segment management */IMPORT ER init_memmgr( void ); /* Memory management */IMPORT ER start_memmgr( void ); /* Memory management */IMPORT ER finish_memmgr( void ); /* Memory management */IMPORT ER SystemManager( INT ac, UB *av[] ); /* T-Kernel/SM */IMPORT ER init_Imalloc( void ); /* T-Kernel/SM */IMPORT void _InitLibtk(void); /* libtk */IMPORT void _FinishLibtk(void); /* libtk */IMPORT void t_kernel_exit( void ); /* T-Kernel/OS *//* * Initial task priority */#define InitTaskPri (138)/* * Initialize sequence before T-Kernel starts */EXPORT void init_system( void ){ ER err; /* Platform dependent initialize sequence */ DispProgress(0x10); err = init_device(); if ( err < E_OK ) goto err_ret; /* Initialize subsystem */ DispProgress(0x11); err = init_subsystems(); if ( err < E_OK ) goto err_ret; /* Initialize segment manager */ DispProgress(0x12); err = init_segmgr(); if ( err < E_OK ) goto err_ret; /* Initialize memory manager */ DispProgress(0x13); err = init_memmgr(); if ( err < E_OK ) goto err_ret; /* Initialize Imalloc */ DispProgress(0x14); err = init_Imalloc(); if ( err < E_OK ) goto err_ret; return;err_ret:#ifndef NO_KERNEL_MESSAGE tm_putstring("!ERROR! init_kernel\n");#endif tm_monitor(); /* Stop */}/* * Start system */EXPORT void start_system( void ){ ER err; /* Initialize segment manager */ DispProgress(0x30); err = start_segmgr(); if ( err < E_OK ) goto err_ret; /* Start memory manager */ DispProgress(0x31); err = start_memmgr(); if ( err < E_OK ) goto err_ret; /* Initialize system manager */ DispProgress(0x32); err = SystemManager(0, NULL); if ( err < 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); err = start_device(); if ( err < E_OK ) goto err_ret; /* Start subsystem */ DispProgress(0x35); err = start_subsystems(); if ( err < E_OK ) goto err_ret; return;err_ret:#ifndef NO_KERNEL_MESSAGE tm_putstring("!ERROR! start_system\n");#endif tm_monitor(); /* Stop */}/* * 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 */#ifndef NO_KERNEL_MESSAGE if ( fin >= 0 ) { tm_putstring("\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();}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -