📄 mtic_tmo.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"
/* グロ〖バル恃眶 */
T_MKNL_TCB *mknl_timout_head; /* タイムアウトキュ〖の黎片 */
/* タイムアウトにタイムティック丁惦 */
void mknl_tic_tmout(
RELTIM tictim) /* 纳裁するタイムティック */
{
register T_MKNL_TCB *mtcb;
/* ロ〖カルにコピ〖 */
mtcb = mknl_timout_head;
/* タイムアウトキュ〖が鄂ならリタ〖ン */
if ( mtcb == NULL )
{
return;
}
/* タイムアウトキュ〖の借妄 */
for ( ; ; )
{
/* タイムアウトに茫しないなら */
if ( tictim < mtcb->diftim )
{
mtcb->diftim -= tictim; /* タイムアウト箕粗を负换 */
break;
}
tictim -= mtcb->diftim; /* タイムティックを负换 */
mknl_wup_tsk(mtcb, E_TMOUT); /* タイムアウト弹静 */
mknl_exe_dsp(); /* 觅变ディスパッチ徒腆を乖う */
/* キュ〖から嘲す */
if ( mtcb->tm_next == mtcb ) /* 呵稿の1つなら */
{
/* キュ〖を鄂にする */
mtcb->tm_prev = NULL;
mtcb = NULL;
break;
}
else
{
/* キュ〖から艰り嘲す */
mtcb->tm_next->tm_prev = mtcb->tm_prev;
mtcb->tm_prev->tm_next = mtcb->tm_next;
mtcb->tm_prev = NULL;
mtcb = mtcb->tm_next;
}
/* ここで办刨、驴脚充り哈みの怠柴を涂える */
mknl_unl_sys(); /* システムのロック豺近 */
mknl_loc_sys(); /* システムのロック */
}
/* メモリに今き提す */
mknl_timout_head = mtcb;
}
/* ------------------------------------------------------------------------ */
/* Copyright (C) 1998-2002 by Project HOS */
/* ------------------------------------------------------------------------ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -