⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sysstartup.c

📁 日本著名的的嵌入式实时操作系统T-Kernel的源码及用户手册。
💻 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 + -