📄 mexe_dsp.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 + -