#include "time_event.h"
データ構造 | |
struct | cyclic_handler_initialization_block |
struct | cyclic_handler_control_block |
型定義 | |
typedef struct cyclic_handler_initialization_block | CYCINIB |
typedef struct cyclic_handler_control_block | CYCCB |
関数 | |
void | initialize_cyclic (void) |
void | call_cychdr (CYCCB *p_cyccb) |
変数 | |
const ID | tmax_cycid |
const CYCINIB | cycinib_table [] |
CYCCB | cyccb_table [] |
typedef struct cyclic_handler_control_block CYCCB |
typedef struct cyclic_handler_initialization_block CYCINIB |
void call_cychdr | ( | CYCCB * | p_cyccb | ) |
参照先 cyclic_handler_initialization_block::cychdr, cyclic_handler_initialization_block::cyctim, cyclic_handler_control_block::evttim, cyclic_handler_initialization_block::exinf, i_get_ipm, i_lock_cpu, i_sense_lock, i_set_ipm, i_unlock_cpu, LOG_CYC_ENTER, LOG_CYC_LEAVE, cyclic_handler_control_block::p_cycinib, と tmevtb_enqueue_cyc().
00239 { 00240 PRI saved_ipm; 00241 00242 /* 00243 * 次回の起動のためのタイムイベントブロックを登録する. 00244 * 00245 * 同じタイムティックで周期ハンドラを再度起動すべき場合には,この 00246 * 関数からsignal_timeに戻った後に,再度この関数が呼ばれることにな 00247 * る. 00248 */ 00249 tmevtb_enqueue_cyc(p_cyccb, p_cyccb->evttim + p_cyccb->p_cycinib->cyctim); 00250 00251 /* 00252 * 周期ハンドラを,CPUロック解除状態で呼び出す. 00253 */ 00254 saved_ipm = i_get_ipm(); 00255 i_unlock_cpu(); 00256 00257 LOG_CYC_ENTER(p_cyccb); 00258 (*((CYCHDR)(p_cyccb->p_cycinib->cychdr)))(p_cyccb->p_cycinib->exinf); 00259 LOG_CYC_LEAVE(p_cyccb); 00260 00261 if (!i_sense_lock()) { 00262 i_lock_cpu(); 00263 } 00264 i_set_ipm(saved_ipm); 00265 }
void initialize_cyclic | ( | void | ) |
参照先 cyclic_handler_initialization_block::cycatr, cyccb_table, cycinib_table, cyclic_handler_initialization_block::cycphs, cyclic_handler_control_block::cycsta, cyclic_handler_control_block::p_cycinib, TA_STA, tmevtb_enqueue_cyc(), と tnum_cyc.
00115 { 00116 uint_t i; 00117 CYCCB *p_cyccb; 00118 00119 for (p_cyccb = cyccb_table, i = 0; i < tnum_cyc; p_cyccb++, i++) { 00120 p_cyccb->p_cycinib = &(cycinib_table[i]); 00121 if ((p_cyccb->p_cycinib->cycatr & TA_STA) != 0U) { 00122 p_cyccb->cycsta = true; 00123 tmevtb_enqueue_cyc(p_cyccb, (EVTTIM)(p_cyccb->p_cycinib->cycphs)); 00124 } 00125 else { 00126 p_cyccb->cycsta = false; 00127 } 00128 } 00129 }
const CYCINIB cycinib_table[] |
const ID tmax_cycid |
Copyright © 2008 by Kijineko Inc.