📄 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){ T_KERNEL_TIM* tim_ptr; 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 /* リスト琐萨まで帆り手し */ { /* 肌のポインタを祸涟に肋年 */ tim_ptr = kernel_tml_ptr; kernel_tml_ptr = tim_ptr->next; /* タイマハンドラ钙び叫し */ tim_ptr->timhdr(tim_ptr, tic); /* ハンドラ柒で猴近された眷圭 */ if ( kernel_tml_ptr == NULL ) { break; } } 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 + -