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

📄 system.c

📁 T-kernel 的extension源代码
💻 C
字号:
/* *---------------------------------------------------------------------- *    T-Kernel / Standard Extension * *    Copyright (C) 2006 by Ken Sakamura. All rights reserved. *    T-Kernel / Standard Extension is distributed  *      under the T-License for T-Kernel / Standard Extension. *---------------------------------------------------------------------- * *    Version:   1.00.00 *    Released by T-Engine Forum(http://www.t-engine.org) at 2006/8/11. * *---------------------------------------------------------------------- *//* *	system.c (proc) * *	System management function */#include "prcmgr.h"#define TSD_TGV_VAL_1		1#define TSD_TGV_VAL_2		2#define TSD_TGV_VAL_3		3#define TSD_TGV_VAL_4		4#define TSD_TGV_VAL_5		5#define TSD_TGV_POS_0		0#define TSD_TGV_POS_1		1#define TSD_TGV_POS_2		2#define TSD_TGV_POS_3		3#define TSD_TGV_POS_4		4#define TSD_TGV_MAK_0X0000	(UH)0x0000#define TSD_TGV_ID_0X0000	(UH)0x0000#define TSD_TGV_SPV_0X0000	(UH)0x0000#define TSD_TGV_VAR_0X0000	(UH)0x0000#define TSD_TGV_PRV_0X0000	(UH)0x0000#define TSD_TGV_PRN_0X0000	(UH)0x0000/* * Obtain OS version information */EXPORT ER _tkse_get_ver( T_VER *version ){	W	w[L_SYSCONF_VAL], n;	ER	err;	/* Parameter check */	err = CheckSpaceRW(version, sizeof(T_VER));	if ( err < E_OK ) {		goto err_ret;	}	version->maker	= TSD_TGV_MAK_0X0000;	/* Manufacturer */	version->id	= TSD_TGV_ID_0X0000;	/* Model number */	version->spver	= TSD_TGV_SPV_0X0000;	/* Specification version */	version->var	= TSD_TGV_VAR_0X0000;	/* Variation descriptor */	/* Product version */	n = GetSysConf((UB*)"OS-Ver", w);	version->prver = ( n >= TSD_TGV_VAL_1 )? (UH)w[TSD_TGV_POS_0]: TSD_TGV_PRV_0X0000;	/* Product management information */	version->prno[TSD_TGV_POS_0] = ( n >= TSD_TGV_VAL_2 )? (UH)w[TSD_TGV_POS_1] : TSD_TGV_PRN_0X0000;	version->prno[TSD_TGV_POS_1] = ( n >= TSD_TGV_VAL_3 )? (UH)w[TSD_TGV_POS_2] : TSD_TGV_PRN_0X0000;	version->prno[TSD_TGV_POS_2] = ( n >= TSD_TGV_VAL_4 )? (UH)w[TSD_TGV_POS_3] : TSD_TGV_PRN_0X0000;	version->prno[TSD_TGV_POS_3] = ( n >= TSD_TGV_VAL_5 )? (UH)w[TSD_TGV_POS_4] : TSD_TGV_PRN_0X0000;	/* CPU information */	version->cpu = TCPU_MYTYPE;	return E_OK;err_ret:	DEBUG_PRINT(("_tkse_get_ver err = %d\n", err));	return err;}/* * Loading of system program */EXPORT ER _tkse_lod_spg2( LINK *lnk, TC *arg, VW info[N_SPG_INFO] ){	W	progid;	ID	oldrid;	ER	err;	POBJ_HDR	pohdr;	/* Parameter check */	err = CheckSpaceR(lnk, sizeof(LINK));	if ( err < E_OK ) {		goto err_ret1;	}	err = CheckStrSpaceR(arg, 0);	if ( err < E_OK ) {		goto err_ret1;	}	err = CheckSpaceRW(info, sizeof(VW) * N_SPG_INFO);	if ( err < E_OK ) {		goto err_ret1;	}	/* Switch to INIT process */	oldrid = tk_set_rid(TSK_SELF, INIT_PINFO->resid);	if ( oldrid < E_OK ) {		err = ERtoERR(oldrid);		goto err_ret1;	}	/* Loading of system program */	pohdr.type = TMA_LINK;	pohdr.src.lnk = lnk;	progid = LoadSysProg(&pohdr, arg, (VP*)info);	if ( progid < E_OK ) {		err = progid;		goto err_ret2;	}	/* Turn back process */	tk_set_rid(TSK_SELF, oldrid);	return progid;err_ret2:	tk_set_rid(TSK_SELF, oldrid);err_ret1:	DEBUG_PRINT(("_tkse_lod_spg2 err = %d\n", err));	return err;}/* * Loading of system program (from SEIO) */EXPORT ER _tkse_lod_spg( T_LSPG *pk_sysprg, TC *arg, VW info[N_SPG_INFO] ){	W	progid;	ID	oldrid;	ATR	atr;	ER	err;	POBJ_HDR	pohdr;	/* Parameter check */	err = CheckSpaceR(pk_sysprg, sizeof(T_LSPG));	if ( err < E_OK ) {		goto err_ret1;	}	err = CheckStrSpaceR(arg, 0);	if ( err < E_OK ) {		goto err_ret1;	}	err = CheckSpaceRW(info, sizeof(VW) * N_SPG_INFO);	if ( err < E_OK ) {		goto err_ret1;	}	atr = pk_sysprg->spgatr;	if ((atr & ~TMA_INPUTMASK) != 0) {		err = E_PAR;		goto err_ret1;	}	/* Switch to INIT process */	oldrid = tk_set_rid(TSK_SELF, INIT_PINFO->resid);	if ( oldrid < E_OK ) {		err = ERtoERR(oldrid);		goto err_ret1;	}	/* Loading of system program */	pohdr.type = (W)(atr & TMA_INPUTMASK);	switch (pohdr.type) {	  case TMA_LINK:		pohdr.src.lnk = (LINK*)pk_sysprg->spghdr;		break;	  case TMA_SEIO:		pohdr.src.path = (B*)pk_sysprg->spghdr;		break;	  case TMA_PTR:		pohdr.src.buf = (VP)pk_sysprg->spghdr;		break;	  default:		err = E_PAR;		goto err_ret2;	}	progid = LoadSysProg(&pohdr, (TC *)arg, (VP*)info);	if ( progid < E_OK ) {		err = progid;		goto err_ret2;	}	/* Turn back process */	tk_set_rid(TSK_SELF, oldrid);	return progid;err_ret2:	tk_set_rid(TSK_SELF, oldrid);err_ret1:	DEBUG_PRINT(("_tkse_lod_spg err = %d\n", err));	return err;}/* * Unloading of system program */EXPORT ER _tkse_unl_spg( ID progid ){	ID	oldrid;	ER	err;	/* Switch to INIT process */	oldrid = tk_set_rid(TSK_SELF, INIT_PINFO->resid);	if ( oldrid < E_OK ) {		err = ERtoERR(oldrid);		goto err_ret1;	}	/* Unloading of system program */	err = UnloadSysProg(progid);	if ( err < E_OK ) {		goto err_ret2;	}	/* Turn back process */	tk_set_rid(TSK_SELF, oldrid);	return E_OK;err_ret2:	tk_set_rid(TSK_SELF, oldrid);err_ret1:	DEBUG_PRINT(("_tkse_unl_spg err = %d\n", err));	return err;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -