#include "queue.h" #include "lock.h" #include "task.h" #include "time_event.h"
#include "queue.h"
#include "lock.h"
#include "task.h"
#include "time_event.h"
class.hのインクルード依存関係図
このグラフは、どのファイルから直接、間接的にインクルードされているかを示しています。
ソースコードを見る。
class.h で定義されています。
値:
{ \ if (!(VALID_CLSID(clsid) || (clsid) == TCLS_SELF)) { \ ercd = E_ID; \ goto exit; \ } \ }
class.h の 229 行で定義されています。
オブジェクトID の範囲(最大値以内か)をチェックする.
class.h の 90 行で定義されています。
クラスID の定義
本カーネルはローカルクラスのみサポートしているため, ローカルクラスのID = プロセッサID(PROCID) とする.
class.h の 73 行で定義されています。
クラスID から CCB を取り出す.
class.h の 210 行で定義されています。
ID をクラスID とその他の部分に分解するためのマクロ
32bit 整数値を,H (16bit符号付き整数) にキャストした後,ID (32bit符 号付き整数) にキャストすることで,下位 16bit を 32bit に符号拡張する.
class.h の 204 行で定義されています。
クラスIDからEXCCBを取り出す
class.h の 136 行で定義されています。
({ \ ID clsid = get_clsid(id); \ CHECK_CLSID_SELF(clsid); \ i_get_ccb_self(clsid); \ })
class.h の 246 行で定義されています。
class.h の 220 行で定義されています。
クラスの数の定義
本カーネルは,それぞれのプロセッサのローカルクラスのみサポートして いるため, NUM_CLASS = プロセッサ数 とする.
class.h の 64 行で定義されています。
class.h の 205 行で定義されています。
実行中タスクのCCB (task.c)
現時点ではローカルタスクしかないため,my_local_ccb に define する
class.h の 193 行で定義されています。
参照元 make_wait().
({ \ ID clsid = get_clsid(id); \ CHECK_CLSID_SELF(clsid); \ t_get_ccb_self(clsid); \ })
class.h の 239 行で定義されています。
クラスID から CCB を取り出す(自ID対応)
非タスクコンテキストにいた場合は my_local_ccb に飛ぶ扱いとする
class.h の 217 行で定義されています。
クラスID のチェック(自ID対応)
class.h の 226 行で定義されています。
CB Table Control Block(CBTCB)
CCBへタスクやオブジェクト(セマフォやイベントフラグなど)のID情報を登 録する構造体.cb_tableにはタスクや各オブジェクトの管理ブロックを登録 する.
class.h の 49 行で定義されています。
Exported Class Control Block(EXCCB)
各プロセッサにおいて,他のプロセッサに公開する資源に関する情報を 登録するための構造体. 共有メモリ上の ex_ccb_table としてPE毎に領域を確保する. 実行時は,EXCCBから各プロセッサ上での実行時に使い易い形に整理した CCBにコピーする
CCB のエリア
CCB のエリアは,PE毎に,通常はそのPEのローカルメモリ上に用意する.
EXCCBのエリア EXCCBのエリアはシステム全体で1つ EXCCBの領域はターゲット依存部で確保する
CCB を効率良くアクセスするためのポインタ変数
EXCCB を効率良くアクセスするためのポインタ変数