📄 isig_tim.c
字号:
/* ------------------------------------------------------------------------ */
/* Hyper Operating System V4 μITRON4.0慌屯 Real-Time OS */
/* ITRONカ〖ネル システム箕粗瓷妄 */
/* */
/* Copyright (C) 1998-2002 by Project HOS */
/* http://sourceforge.jp/projects/hos/ */
/* ------------------------------------------------------------------------ */
#include "knl_tim.h"
/* タイマリスト瓷妄 */
T_KERNEL_TIM *kernel_tml_head; /* タイマリスト黎片疤弥 */
T_KERNEL_TIM *kernel_tml_ptr; /* タイマリストポインタ */
/* タイムティックの丁惦 */
ER isig_tim(void)
{
UW prev_tim;
RELTIM tic;
/* 裁换するタイムティックを换叫 */
/* 毋えば 10/3 ms 件袋なら 3, 3, 4, 3, 3, 4, ... とカウントしていく */
kernel_tic_cnt--;
if ( kernel_tic_cnt < kernel_tic_mod )
{
tic = kernel_tic_div + 1; /* 充り磊れない尸を输赖 */
}
else
{
tic = kernel_tic_div;
}
if ( kernel_tic_cnt == 0 )
{
kernel_tic_cnt = kernel_tic_deno;
}
mknl_loc_sys(); /* システムのロック */
/* システムタイムに裁换 */
prev_tim = kernel_systim.ltime;
kernel_systim.ltime += tic;
if ( kernel_systim.ltime < prev_tim ) /* 峰惧がりがあるなら */
{
kernel_systim.utime++;
}
/* タイマオブジェクトのハンドラ钙び叫し */
if ( kernel_tml_head != NULL )
{
/* 浮瑚ポインタ肋年 */
kernel_tml_ptr = kernel_tml_head;
do /* リスト琐萨まで帆り手し */
{
/* タイマハンドラ钙び叫し */
kernel_tml_ptr->timhdr(kernel_tml_ptr, tic);
/* ハンドラ柒で猴近された眷圭 */
if ( kernel_tml_ptr == NULL )
{
break;
}
/* ポインタを黎に渴める */
kernel_tml_ptr = kernel_tml_ptr->next;
} while ( kernel_tml_ptr != kernel_tml_head );
/* 浮瑚ポインタのクリア */
kernel_tml_ptr = NULL;
}
/* タイムアウト略ち乖误のタスク弹静 */
mknl_tic_tmout(tic); /* タイムアウトキュ〖にタイムティックを丁惦 */
mknl_unl_sys(); /* システムのロック豺近 */
return E_OK;
}
/* ------------------------------------------------------------------------ */
/* Copyright (C) 1998-2002 by Project HOS */
/* ------------------------------------------------------------------------ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -