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

📄 mexe_dsp.c

📁 itron
💻 C
字号:
/* ------------------------------------------------------------------------ */
/*  Hyper Operating System V4  μITRON4.0慌屯 Real-Time OS                  */
/*    μカ〖ネル タスク扩告                                                 */
/*                                                                          */
/*                                  Copyright (C) 1998-2002 by Project HOS  */
/*                                  http://sourceforge.jp/projects/hos/     */
/* ------------------------------------------------------------------------ */


#include "mknl.h"
#include "dsp_hok.h"



/* タスクディスパッチの悸乖 */
ER_UINT mknl_exe_dsp(void)
{
	T_HOSPAC_CTXINF *ctxinf_top;
	T_HOSPAC_CTXINF *ctxinf_run;
	T_MKNL_TCB *mtcb_top;
	T_MKNL_TCB *mtcb_run;

	/* コンテキストチェック */
	if ( mknl_ctx_stat & (MKNL_TSS_INDP | MKNL_TSS_DDSP | MKNL_TSS_DINT) )
	{
		/* ディスパッチ悸乖材墙觉轮で痰ければ瘦伪する */
		mknl_ctx_stat |= MKNL_TSS_DDLY;	/* ディスパッチ觅变フラグをセット */
		return E_OK;
	}

	/* 呵光庭黎刨の悸乖材墙タスクを玫す */
	mtcb_top = mknl_srh_top();

	mtcb_run = mknl_run_mtcb;	/* 附哼のタスクをロ〖カルに锣闰 */

	/* 悸乖面タスクが票じなら部もしない(アイドルからアイドルも崔む∷ */
	if ( mtcb_top == mtcb_run )
	{
		if ( mtcb_run == NULL )
		{
			return E_OK;
		}
		return mtcb_run->ercd;
	}

	/* アイドルタスク悸乖面でないかチェック */
	if ( mtcb_run == NULL )
	{
		/* アイドルならアイドルコンテキストを肋年 */
		ctxinf_run = &mknl_idlctx;
	}
	else
	{
		/* 悸乖面のコンテキストを肋年 */
		ctxinf_run = &mtcb_run->ctxinf;
	}

	/* 肌に悸乖するタスクがあるかどうかチェック */
	if ( mtcb_top == NULL )
	{
		/* 悸乖黎が痰ければアイドルコンテキストを肋年 */
		mknl_run_mtcb = NULL;
		ctxinf_top    = &mknl_idlctx;
	}
	else
	{
		/* 悸乖黎のタスクを悸乖面タスクとして判峡 */
		mknl_run_mtcb     = mtcb_top;
		mtcb_top->tskstat = TTS_RDY;
		
		/* 悸乖黎のコンテキストを肋年 */
		ctxinf_top = &mtcb_top->ctxinf;
	}

	/* タスクコンテキストスイッチ悸乖 */
	hospac_swi_ctx(ctxinf_run, ctxinf_top);

	_HOS_TSW_HOK();		/* コンテキストスイッチのフック */

	if ( mtcb_run == NULL )
	{
		return E_OK;
	}

	return mtcb_run->ercd;
}


/* ------------------------------------------------------------------------ */
/*  Copyright (C) 1998-2002 by Project HOS                                  */
/* ------------------------------------------------------------------------ */

⌨️ 快捷键说明

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