周期ハンドラ機能


関数

SYSCALL ER sta_cyc (ID cycid)
 周期ハンドラの動作開始
SYSCALL ER stp_cyc (ID cycid)
 周期ハンドラの動作停止

説明

静的API
        CRE_CYC(ID cycid, { ATR cycatr, VP_INT exinf, FP cychdr });

関数

ER sta_cyc ( ID  cycid  ) 

周期ハンドラの動作開始

引数:
[in] cycid 動作開始対象の周期ハンドラのID番号
戻り値:
E_OK 成功
E_ID 不正ID番号 (cycidが不正あるいは使用できない)
E_CTX コンテキストエラー (非タスクコンテキストまたはCPUロック状態)

cyclic.c124 行で定義されています。

参照先 base_timeCHECK_CYCIDCHECK_TSKCTX_UNLcyclic_handler_control_block::cycinibcyclic_handler_control_block::cycstacyclic_handler_initialization_block::cyctimE_OKget_cyccbLOG_STA_CYC_ENTERLOG_STA_CYC_LEAVEt_lock_cpu()t_unlock_cpu()cyclic_handler_control_block::tmevtbtmevtb_dequeue()tmevtb_enqueue_cyc()TRUE.

00125 {
00126         CYCCB   *cyccb;
00127         ER      ercd;
00128 
00129         LOG_STA_CYC_ENTER(cycid);
00130         CHECK_TSKCTX_UNL();
00131         CHECK_CYCID(cycid);
00132         cyccb = get_cyccb(cycid);
00133 
00134         t_lock_cpu();
00135         if (cyccb->cycsta) {
00136                 tmevtb_dequeue(&(cyccb->tmevtb));
00137         }
00138         else {
00139                 cyccb->cycsta = TRUE;
00140         }
00141         tmevtb_enqueue_cyc(cyccb, base_time + cyccb->cycinib->cyctim);
00142         ercd = E_OK;
00143         t_unlock_cpu();
00144 
00145     exit:
00146         LOG_STA_CYC_LEAVE(ercd);
00147         return(ercd);
00148 }

関数の呼び出しグラフ:

ER stp_cyc ( ID  cycid  ) 

周期ハンドラの動作停止

引数:
[in] cycid 動作停止対象の周期ハンドラのID番号
戻り値:
E_OK 成功
E_ID 不正ID番号 (cycidが不正あるいは使用できない)
E_CTX コンテキストエラー (非タスクコンテキストまたはCPUロック状態)

cyclic.c158 行で定義されています。

参照先 CHECK_CYCIDCHECK_TSKCTX_UNLcyclic_handler_control_block::cycstaE_OKFALSEget_cyccbLOG_STP_CYC_ENTERLOG_STP_CYC_LEAVEt_lock_cpu()t_unlock_cpu()cyclic_handler_control_block::tmevtbtmevtb_dequeue().

00159 {
00160         CYCCB   *cyccb;
00161         ER      ercd;
00162 
00163         LOG_STP_CYC_ENTER(cycid);
00164         CHECK_TSKCTX_UNL();
00165         CHECK_CYCID(cycid);
00166         cyccb = get_cyccb(cycid);
00167 
00168         t_lock_cpu();
00169         if (cyccb->cycsta) {
00170                 cyccb->cycsta = FALSE;
00171                 tmevtb_dequeue(&(cyccb->tmevtb));
00172         }
00173         ercd = E_OK;
00174         t_unlock_cpu();
00175 
00176     exit:
00177         LOG_STP_CYC_LEAVE(ercd);
00178         return(ercd);
00179 }

関数の呼び出しグラフ:


Copyright © 2006 by TAKAGI Nobuhisa.
Copyright © 2006 by Kijineko Inc..
このページは Mon Dec 18 17:23:36 2006 に Doxygen によって生成されました。
データ入力からプログラム開発まで!様々なスキルを持ったメンバーが登録しています【@SOHO】