第 3 章 µITRON4.0 仕様の概念と共通定義 51
3.11 カーネル共通定義
3.11.1 カーネル共通定数
(1) オブジェクト属性
TA_HLNG 0x00 高級言語用のインタフェースで処理単位を起動
TA_ASM 0x01 アセンブリ言語用のインタフェースで処理単位
を起動
TA_TFIFO 0x00 タスクの待ち行列を FIFO順に
TA_TPRI 0x01 タスクの待ち行列をタスクの優先度順に
TA_MFIFO 0x00 メッセージのキューを FIFO順に
TA_MPRI 0x02 メッセージのキューをメッセージの優先度順に
【 µITRON3.0仕様との相違】
TA_HLNGと TA_ASMの値を逆にした.
(2) カーネルで用いるメインエラーコード
カーネルでは, 2.3.2節に規定されているメインエラーコードの中で, E_CLS,
E_WBLK, E_BOVRの 3つを除いたメインエラーコードを用いる.
【スタンダードプロファイル】
スタンダードプロファイルで発生し,検出しなければならないメインエラー コードは次の通りである.
E_OBJ オブジェクト状態エラー
E_QOVR キューイングオーバフロー
E_RLWAI 待ち状態の強制解除
E_TMOUT ポーリング失敗またはタイムアウト
スタンダードプロファイルに準拠したカーネル上でポータビリティを確保し たいアプリケーションは,上に挙げた以外のメインエラーコードが検出される ことに依存してはならない.
【補足説明】
スタンダードプロファイルで発生しないか,検出を省略することができるメイ ンエラーコードは,次の通りである.
(a) カーネルでは使用しないもの E_CLS, E_WBLK, E_BOVR
(b)スタンダードプロファイルの機能では発生しないもの E_OACV, E_NOID, E_NOEXS, E_DLT
(c) 発生するかどうかは実装に依存するもの E_SYS, E_RSFN, E_NOMEM (d)検出を省略することができるもの
E_NOSPT, E_RSATR, E_PAR, E_ID, E_CTX, E_MACV, E_ILUSE (3) サービスコールの機能コード
カーネルのサービスコールには, (–0xe0)〜 (–0x05)の範囲の機能コードを割り 付ける.ただし, cal_svcには機能コードを割り付けない.機能コードの具体 的な割付けは,第 4章において機能単位毎に規定する.
(–0xe0)〜 (–0x05)の範囲の機能コードで,この仕様で割り付けられていないも
のは,将来のカーネルの機能拡張のために予約されている. (–0x100)〜 (–0xe1) の範囲の機能コードは,実装独自のサービスコールに用いることができる. (–
0x200)〜 (–0x101)の範囲の機能コードは,将来のカーネルの機能拡張のために
予約されているが,必要であれば実装独自のサービスコールに用いてもよいも のとする.
【 µITRON3.0仕様との相違】
機能コードの値を割り付けなおした.
【仕様決定の理由】
スタンダードプロファイルに含まれるサービスコールの機能コードを (–0x80)
〜 (–0x05)の範囲としているが,これは, 8ビットで表現できるようにするため である.
(4) その他のカーネル共通定数
TSK_SELF 0 自タスク指定
TSK_NONE 0 該当するタスクが無い
【 µITRON3.0仕様との相違】
TSK_NONEを新たに導入した. µITRON3.0仕様では.該当するタスクが無い 場合には FALSE(= 0)を用いている.
3.11.2 カーネル共通構成定数
(1) 優先度の範囲
TMIN_TPRI タスク優先度の最小値(= 1)
TMAX_TPRI タスク優先度の最大値
TMIN_MPRI メッセージ優先度の最小値(= 1)
TMAX_MPRI メッセージ優先度の最大値
【スタンダードプロファイル】
スタンダードプロファイルでは,これらのカーネル構成定数を定義しなければ ならない.また, TMAX_TPRIは 16以上, TMAX_MPRIは TMAX_TPRI以上で なければならない.
【補足説明】
TMIN_TPRIと TMIN_MPRIは,この仕様上は 1に固定されているが,実装独自 の拡張として, 1以外の値でカーネルを構成できるようにすることは許される.
(2) バージョン情報
TKERNEL_MAKER カーネルのメーカコード
TKERNEL_PRID カーネルの識別番号
TKERNEL_SPVER ITRON仕様のバージョン番号
TKERNEL_PRVER カーネルのバージョン番号
【スタンダードプロファイル】
スタンダードプロファイルでは,これらのカーネル構成定数を定義しなければ ならない.
【補足説明】
バージョン情報をあらわす定数値の意味については, ref_verの機能説明を参 照すること.