madd_tmo.c

来自「Hyper Operating System。基于ITRON接口的实时操作系统。」· C语言 代码 · 共 82 行

C
82
字号
/* ------------------------------------------------------------------------ *//*  Hyper Operating System V4  μITRON4.0慌屯 Real-Time OS                  *//*    μカ〖ネル タイムアウトキュ〖瓷妄                                     *//*                                                                          *//*                                  Copyright (C) 1998-2002 by Project HOS  *//*                                  http://sourceforge.jp/projects/hos/     *//* ------------------------------------------------------------------------ */#include "mknl.h"/* タイムアウト略ち乖误にタスクを纳裁 */ER mknl_add_tmout(		T_MKNL_TCB *mtcb,	/* 略ち乖误に裁えるタスク */		RELTIM     tmout)	/* タイムアウトまでの箕粗 */{	T_MKNL_TCB* mtcb_tmp;	/* 呵介の1つなら */	if ( mknl_timout_head == NULL )	{		/* 呵介の1つをキュ〖に判峡 */		mtcb->tm_next    = mtcb;		mtcb->tm_prev    = mtcb;		mknl_timout_head = mtcb;		/* タイムアウト箕癸を肋年 */		mtcb->diftim = tmout;		return E_OK;	}		/* 赁掐眷疥を浮瑚 */	mtcb_tmp = mknl_timout_head;	do	{		/* 箕粗孺秤 */		if ( tmout < mtcb_tmp->diftim )		{			/* 箕粗の汗尸を肋年 */			mtcb_tmp->diftim -= tmout;			mtcb->diftim      = tmout;			/* リストに赁掐 */			mtcb->tm_next          = mtcb_tmp;			mtcb->tm_prev          = mtcb_tmp->tm_prev;			mtcb->tm_next->tm_prev = mtcb;			mtcb->tm_prev->tm_next = mtcb;						/* 黎片なら */			if ( mtcb_tmp == mknl_timout_head )			{				mknl_timout_head = mtcb;	/* 黎片ポインタ构糠 */			}						return E_OK;		}				tmout -= mtcb_tmp->diftim;		/* 汗尸を负换 */				mtcb_tmp = mtcb_tmp->tm_next;	/* 肌のTCBへ渴む */	} while ( mtcb_tmp != mknl_timout_head );	/* リストを办件するまでル〖プ */		/* 琐萨に纳裁 */	mtcb->tm_next          = mtcb_tmp;	mtcb->tm_prev          = mtcb_tmp->tm_prev;	mtcb->tm_next->tm_prev = mtcb;	mtcb->tm_prev->tm_next = mtcb;	/* 荒った汗尸を肋年 */	mtcb->diftim = tmout;	return E_OK;}/* ------------------------------------------------------------------------ *//*  Copyright (C) 1998-2002 by Project HOS                                  *//* ------------------------------------------------------------------------ */

⌨️ 快捷键说明

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