time_event.h

タイムイベント管理モジュール [詳細]

#include "task.h"
#include "class.h"

time_event.hのインクルード依存関係図

このグラフは、どのファイルから直接、間接的にインクルードされているかを示しています。

ソースコードを見る。

データ構造

struct  time_event_block
struct  time_event_node
 タイムイベントヒープ中のノードのデータ型の定義 [詳細]

マクロ定義

#define TMAX_RELTIM   ((((EVTTIM) 1) << (sizeof(EVTTIM) * CHAR_BIT - 1)) - 1)
 相対時間(RELTIM)に指定できる最大値
#define base_time   ((EVTTIM)(next_time + (next_subtime > 0 ? 1 : 0)))

型定義

typedef time_event_node TMEVTN
 前方参照
typedef time_event_block TMEVTB
typedef UW EVTTIM
 イベント発生時刻のデータ型の定義
typedef void(* CBACK )(VP)
 タイムイベントブロックのデータ型の定義

関数

void tmevt_initialize (void)
 タイムイベント管理モジュールの初期化
UINT tmevt_up (CCB *ccb, UINT index, EVTTIM time)
 タイムイベントの挿入位置の探索
UINT tmevt_down (CCB *ccb, UINT index, EVTTIM time)
void tmevtb_insert (CCB *ccb, TMEVTB *tmevtb, EVTTIM time)
 タイムイベントヒープへの登録と削除
void tmevtb_delete (CCB *ccb, TMEVTB *tmevtb)
Inline void tmevtb_enqueue (CCB *ccb, TMEVTB *tmevtb, RELTIM time, CBACK callback, VP arg)
 タイムイベントブロックの登録(相対時間指定)
Inline void tmevtb_enqueue_evttim (CCB *ccb, TMEVTB *tmevtb, EVTTIM time, CBACK callback, VP arg)
 タイムイベントブロックの登録(イベント発生時刻指定)
Inline void tmevtb_dequeue (CCB *ccb, TMEVTB *tmevtb)
 タイムイベントブロックの登録解除

変数

TMEVTN tmevt_heap []
 タイムイベントヒープ(kernel_cfg.c)
SYSTIM systim_offset
 システム時刻のオフセット
SYSTIM current_time
 現在のシステム時刻(単位: ミリ秒)
SYSTIM next_time
 次のタイムティックのシステム時刻(単位: 1ミリ秒)
UINT next_subtime
UINT last_index
 タイムイベントヒープの最後の使用領域のインデックス


説明

タイムイベント管理モジュール

time_event.h で定義されています。


マクロ定義

#define base_time   ((EVTTIM)(next_time + (next_subtime > 0 ? 1 : 0)))
 

time_event.h134 行で定義されています。

参照元 tmevtb_enqueue().

#define TMAX_RELTIM   ((((EVTTIM) 1) << (sizeof(EVTTIM) * CHAR_BIT - 1)) - 1)
 

相対時間(RELTIM)に指定できる最大値

time_event.h71 行で定義されています。

参照元 tmevtb_enqueue().


型定義

typedef void(* CBACK)(VP)
 

タイムイベントブロックのデータ型の定義

time_event.h76 行で定義されています。

typedef UW EVTTIM
 

イベント発生時刻のデータ型の定義

EVTTIM は,RELTIM として指定できる範囲よりも広い範囲を表現できる必 要がある.スタンダードプロファイルでは,RELTIM が 16bit 以上でなけ ればならないため,EVTTIM は 17bit 以上であることが必要である.その ため,16bit の場合がある UINT ではなく,UW に定義している.

time_event.h66 行で定義されています。

typedef struct time_event_block TMEVTB
 

time_event.h53 行で定義されています。

typedef struct time_event_node TMEVTN
 

前方参照

time_event.h52 行で定義されています。


関数

UINT tmevt_down CCB ccb,
UINT  index,
EVTTIM  time
 

void tmevt_initialize void   ) 
 

タイムイベント管理モジュールの初期化

UINT tmevt_up CCB ccb,
UINT  index,
EVTTIM  time
 

タイムイベントの挿入位置の探索

void tmevtb_delete CCB ccb,
TMEVTB tmevtb
 

Inline void tmevtb_dequeue CCB ccb,
TMEVTB tmevtb
 

タイムイベントブロックの登録解除

time_event.h197 行で定義されています。

参照先 tmevtb_delete.

00198 {
00199     tmevtb_delete(ccb, tmevtb);
00200 }

Inline void tmevtb_enqueue CCB ccb,
TMEVTB tmevtb,
RELTIM  time,
CBACK  callback,
VP  arg
 

タイムイベントブロックの登録(相対時間指定)

time で指定した相対時間が経過後に,arg を引数として callback が呼 び出されるように,タイムイベントブロック tmevtb を登録する.

time_event.h169 行で定義されています。

参照先 time_event_block::argassertbase_timetime_event_block::callbackTMAX_RELTIMtmevtb_insert.

00170 {
00171     assert(time <= TMAX_RELTIM);
00172 
00173     tmevtb->callback = callback;
00174     tmevtb->arg = arg;
00175     tmevtb_insert(ccb, tmevtb, base_time + time);
00176 }

Inline void tmevtb_enqueue_evttim CCB ccb,
TMEVTB tmevtb,
EVTTIM  time,
CBACK  callback,
VP  arg
 

タイムイベントブロックの登録(イベント発生時刻指定)

time で指定したイベント発生時刻に,arg を引数として callback が呼 び出されるように,タイムイベントブロック tmevtb を登録する.

time_event.h185 行で定義されています。

参照先 time_event_block::argtime_event_block::callbacktmevtb_insert.

00186 {
00187     tmevtb->callback = callback;
00188     tmevtb->arg = arg;
00189     tmevtb_insert(ccb, tmevtb, time);
00190 }

void tmevtb_insert CCB ccb,
TMEVTB tmevtb,
EVTTIM  time
 

タイムイベントヒープへの登録と削除


変数

SYSTIM current_time
 

現在のシステム時刻(単位: ミリ秒)

システム起動時に 0 に初期化され,以降,isig_tim が呼ばれる度に単調 に増加する.set_tim によって変更されない.

UINT last_index
 

タイムイベントヒープの最後の使用領域のインデックス

タイムイベントヒープに登録されているタイムイベントの数に一致する.

UINT next_subtime
 

SYSTIM next_time
 

次のタイムティックのシステム時刻(単位: 1ミリ秒)

SYSTIM systim_offset
 

システム時刻のオフセット

TMEVTN tmevt_heap[]
 

タイムイベントヒープ(kernel_cfg.c)


Copyright © 2006 by TAKAGI Nobuhisa.
このページは Mon Apr 3 23:49:19 2006 に Doxygen によって生成されました。