第 2章 ITRON 仕様共通規定 21
2.3 ITRON 仕様共通定義
2.3.2 ITRON 仕様共通定数
ヘッダファイルitron.hは,以下のすべてのITRON仕様共通定数の定義を含まな ければならない.
(1) 一般
NULL 0 無効ポインタ
TRUE 1 真
FALSE 0 偽
E_OK 0 正常終了
【µITRON3.0仕様との相違】
無効ポインタを,C言語との整合性を重視して,NADR(=–1)からNULL(=
0)に変更した.
(2) メインエラーコード
(A) 内部エラークラス(EC_SYS,–5〜–8)
カーネルやソフトウェア部品の内部エラーのクラス.このエラークラスに属す るエラーの検出は,実装依存で省略することができる.
E_SYS –5 システムエラー
カーネルやソフトウェア部品の内部で発生した原因不明のエラー.
(B) 未サポートエラークラス(EC_NOSPT,–9〜–16)
ITRON仕様で規定されていないか,実装でサポートされていない機能であるこ
とを示すエラーのクラス.このエラークラスに属するエラーの検出は,実装定 義で省略することができる.
E_NOSPT –9 未サポート機能
ITRON仕様では規定されているが,実装ではサポートされていない機能
であることを示すエラー.サービスコールの一部ないしは全部の機能を サポートしていない場合に,このエラーを返す.E_RSFN,E_RSATRに 該当する場合を除く.
E_RSFN –10 予約機能コード
ITRON仕様で規定されていないか,実装でサポートしていない機能コー
ドが指定されたことを示すエラー.ソフトウェア割込みによりサービス コールを呼び出す場合に発生する.
E_RSATR –11 予約属性
ITRON仕様で規定されていないか,実装でサポートしていない属性値で
あることを示すエラー.
(C) パラメータエラークラス(EC_PAR,–17〜–24)
パラメータの値の不正を示すエラーで,ほぼ静的に検出できるもののクラス.
このエラークラスに属するエラーの検出は,実装定義で省略することができ る.
E_PAR –17 パラメータエラー
パラメータの値の不正を示すエラーで,ほぼ静的に検出できるもの.
E_IDに該当する場合を除く.
E_ID –18 不正ID番号
オブジェクトのID番号が使用できる範囲外であることを示すエラー.ID 番号で識別されるオブジェクトに対してのみ発生する.
(D) 呼出しコンテキストエラークラス(EC_CTX,–25〜–32)
サービスコールを呼び出したコンテキストに依存して発生するエラーのクラ ス.このエラークラスに属するエラーの検出は,実装定義で省略することがで
きる.
E_CTX –25 コンテキストエラー
サービスコールを呼び出したコンテキストが,そのサービスコールを呼 び出せる状態にないことを示すエラー.E_MACV,E_OACV,E_ILUSE に該当する場合を除く.
E_MACV –26 メモリアクセス違反
サービスコール内でアクセスするメモリ領域として,サービスコールを 呼び出したコンテキストからはアクセスできない領域が指定されたこ とを示すエラー.メモリのない領域が指定された場合にも,このエラー を返す.
E_OACV –27 オブジェクトアクセス違反
サービスコールでアクセスするオブジェクトとして,サービスコールを 呼び出したコンテキストからはアクセスできないオブジェクトが指定 されたことを示すエラー.オブジェクトをユーザオブジェクトとシステ ムオブジェクトに分類している場合に,システムオブジェクトにアクセ スできないコンテキストからシステムオブジェクトをアクセスしよう とした時,このエラーを返す.
E_ILUSE –28 サービスコール不正使用
サービスコールの使用方法が正しくないことを示すエラーで,サービス コールを呼び出したコンテキストや操作対象のオブジェクトの状態に 依存して発生するもの.
(E) 資源不足エラークラス(EC_NOMEM,–33〜–40)
サービスコールの実行に必要な資源が不足していることを示すエラーのクラ ス.このエラークラスに属するエラーの検出は,省略することができない.
E_NOMEM –33 メモリ不足
内部で動的にメモリ領域の確保を行うサービスコールで,必要なメモリ 領域を確保できなかったことを示すエラー.
E_NOID –34 ID番号不足
ID番号の自動割付けを行うオブジェクト生成のサービスコールで,割付 け可能なID番号がないことを示すエラー.
(F) オブジェクト状態エラークラス(EC_OBJ,–41〜–48)
操作対象のオブジェクトの状態に依存して,サービスコールを実行できないこ とを示すエラーのクラス.操作対象のオブジェクトの状態によっては,同じ サービスコール呼び出しでもエラーとなるとは限らないため,動的にチェック することが必要である.このエラークラスに属するエラーの検出は,省略する ことができない.
E_OBJ –41 オブジェクト状態エラー
操作対象のオブジェクトの状態に依存するエラーで,E_NOEXS と
E_QOVRに該当しないもの.
E_NOEXS –42 オブジェクト未生成
操作対象のオブジェクトが生成されていないために,アクセスできない ことを示すエラー.このエラーが返るのは,オブジェクトのID番号が使 用できる範囲内である場合に限られるため,このエラーが返ったID番号 を指定して,オブジェクトの生成を行うことができる.
E_QOVR –43 キューイングオーバフロー
キューイングまたはネスト可能なサービスコールで,その上限回数を超 えたことを示すエラー.
(G) 待ち解除エラークラス(EC_RLWAI,–49〜–56)
サービスコールの中で一旦待ち状態に入った後,待ち状態が解除されたことを 示すエラーのクラス.このエラークラスに属するエラーの検出は,省略するこ とができない.
E_RLWAI –49 待ち状態の強制解除
待ち状態が強制解除された,または待ち状態にある処理がキャンセルさ れたことを示すエラー.
E_TMOUT –50 ポーリング失敗またはタイムアウト
タイムアウトが発生した,またはポーリングに失敗したことを示すエ ラー.
E_DLT –51 待ちオブジェクトの削除
待つ対象となっているオブジェクトが削除されたことを示すエラー.
E_CLS –52 待ちオブジェクトの状態変化
待つ対象となっているオブジェクトの状態変化により,そのサービス コールを実行できない状態となったことを示すエラー.同様のオブジェ クトの状態変化がサービスコール呼出し前に起こっていた場合,サービ スコール中で待ち状態に入らずに,このエラーを返すことがある.
【補足説明】
E_CLSは,通信回線からのデータ受信を行うサービスコールで,受信待ちの間
に回線が異常切断されたことを知らせる場合などに用いる.サービスコールを 呼び出す前に回線が異常切断されていた場合にも,同じメインエラーコードを 用いることができる.
(H) 警告クラス(EC_WARN,–57〜–64)
処理を実行したが,注意すべき状況(警告を発すべき状況)が発生したことを 示すエラーのクラス.このエラークラスに属するエラーは,「サービスコール
でエラーが発生した場合には,サービスコールを呼び出したことによる副作用 はない」という原則の例外となっている.このエラークラスに属するエラーの 検出は,省略することができない.
E_WBLK –57 ノンブロッキング受付け
ノンブロッキング指定で呼び出したサービスコールの処理が継続して いることを示すメインエラーコード.
E_BOVR –58 バッファオーバフロー
データをバッファに受け取ったが,バッファ領域に入らない部分を捨て たことを示すメインエラーコード.
(I) 予約エラーコード(–5〜–96で上に定義のないもの)
ITRON仕様の将来の拡張のために予約されているメインエラーコード.
(J) 実装独自エラーコード(–97〜–128)
実装独自に定義するためのメインエラーコード.メインエラーコードの名称を
EV_XXXXXの形としなければならない.
【µITRON3.0仕様との相違】
カーネル仕様の新機能のためのメインエラーコード(E_ILUSE,E_NOID)と ソ フ ト ウ ェ ア 部 品 仕 様 の た め の メ イ ン エ ラ ー コ ー ド(E_CLS,E_WBLK,
E_BOVR)を追加し,接続機能用のエラーコード(EN_XXXXX)とITRON/FILE
仕様専用のエラーコード(E_INOSPT)を削除した.メインエラーコードのエ ラークラスへの分類を一部見直し,値を割り付けなおした.この際に,メイン エラーコードを下位8ビットとしたことから,8ビットの符号付き整数として 見た場合も負の値となるようにしている.また,エラー番号(errno)は廃止した.
(3) オブジェクト属性
TA_NULL 0 オブジェクト属性を指定しない
(4) タイムアウト指定
TMO_POL 0 ポーリング
TMO_FEVR –1 永久待ち
TMO_NBLK –2 ノンブロッキング