itron.h

ITRON仕様共通規定のデータ型・定数・マクロ [詳細]

#include <tool_defs.h>
#include <stddef.h>

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

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

ソースコードを見る。

マクロ定義

#define _bool_   int
 コンパイラ依存のデータ型のデフォルト定義
一般
#define NULL   0
 無効ポインタ
#define TRUE   1
 
#define FALSE   0
 
エラーコード
μITRON4.0仕様書に定義されているメインエラーコードの中で,スタンダードプロファイルの機能では発生しないものや, JSPカーネルの実装上発生しないものがある.

JSPカーネルでは,サブエラーコードは用いていない.サブエラーコードには常に -1 が返る.

#define E_OK   0
 正常終了
#define E_SYS   (-5)
 システムエラー
#define E_NOSPT   (-9)
 未サポート機能
#define E_RSFN   (-10)
 予約機能コード
#define E_RSATR   (-11)
 予約属性
#define E_PAR   (-17)
 パラメータエラー
#define E_ID   (-18)
 不正ID番号
#define E_CTX   (-25)
 コンテキストエラー
#define E_MACV   (-26)
 メモリアクセス違反
#define E_OACV   (-27)
 オブジェクトアクセス違反
#define E_ILUSE   (-28)
 サービスコール不正使用
#define E_NOMEM   (-33)
 メモリ不足
#define E_NOID   (-34)
 ID番号不足
#define E_OBJ   (-41)
 オブジェクト状態エラー
#define E_NOEXS   (-42)
 オブジェクト未生成
#define E_QOVR   (-43)
 キューイングオーバーフロー
#define E_RLWAI   (-49)
 待ち状態の強制解除
#define E_TMOUT   (-50)
 ポーリング失敗またはタイムアウト
#define E_DLT   (-51)
 待ちオブジェクトの削除
#define E_CLS   (-52)
 待ちオブジェクトの状態変化
#define E_WBLK   (-57)
 ノンブロッキング受付け
#define E_BOVR   (-58)
 バッファオーバーフロー
オブジェクト属性
#define TA_NULL   0u
 オブジェクト属性を指定しない
タイムアウト指定
#define TMO_POL   0
 ポーリング
#define TMO_FEVR   (-1)
 永久待ち
#define TMO_NBLK   (-2)
 ノンブロッキング
ITRON仕様共通マクロ
#define ERCD(mercd, sercd)   (((sercd) << 8) | ((mercd) & 0xff))
 エラーコード生成マクロ
#define MERCD(ercd)   ((ER)((B)(ercd)))
 メインエラーコードの取り出し
#define SERCD(ercd)   ((ER)((B)((ercd) >> 8)))
 サブエラーコードの取り出し

型定義

ITRON仕様共通データ型
typedef signed _int8_ B
 符号付き8ビット整数
typedef unsigned _int8_ UB
 符号無し8ビット整数
typedef _int8_ VB
 型が定まらない8ビットの値
typedef signed _int16_ H
 符号付き16ビット整数
typedef unsigned _int16_ UH
 符号無し16ビット整数
typedef _int16_ VH
 型が定まらない16ビットの値
typedef signed _int32_ W
 符号付き32ビット整数
typedef unsigned _int32_ UW
 符号無し32ビット整数
typedef _int32_ VW
 型が定まらない32ビットの値
typedef signed _int64_ D
 符号付き64ビット整数
typedef unsigned _int64_ UD
 符号無し64ビット整数
typedef _int64_ VD
 型が定まらない64ビットの値
typedef void * VP
 型が定まらないものへのポインタ
typedef void(*) FP ()
 プログラムの起動番地 (ポインタ)
typedef signed int INT
 自然なサイズの符号付き整数
typedef unsigned int UINT
 自然なサイズの符号無し整数
typedef _bool_ BOOL
 真偽値
typedef INT FN
 機能コード
typedef INT ER
 エラーコード
typedef INT ID
 オブジェクトのID番号
typedef UINT ATR
 オブジェクトの属性
typedef UINT STAT
 オブジェクトの状態
typedef UINT MODE
 サービスコールの動作モード
typedef INT PRI
 優先度
typedef size_t SIZE
 メモリ領域のサイズ
typedef INT TMO
 タイムアウト指定
typedef UINT RELTIM
 相対時間
typedef UW SYSTIM
 システム時刻
typedef VP VP_INT
 VP または INT
typedef INT ER_BOOL
 ER または BOOL
typedef INT ER_ID
 ER または ID
typedef INT ER_UINT
 ER または UINT


説明

ITRON仕様共通規定のデータ型・定数・マクロ

このファイルには,スタンダードプロファイルには必要ない定義も含んでいる.データ型の定義は,スタンダードプロファイルを満たすちょうどの長さにはしていない.

アセンブリ言語のソースファイルやシステムコンフィギュレーションファイルからこのファイルをインクルードする時は,_MACRO_ONLY を定義しておくことで,マクロ定義以外の記述を除くことができる.

このインクルードファイルは, kernel.hsil.h でインクルードされる.また,ITRON仕様共通規定に準拠するソフトウェア部品のインクルードファイルは,このファイルを直接インクルードしてもよい.この例外を除いて,他のファイルから直接インクルードされることはない.

このファイルをインクルードする前に t_stddef.h をインクルードしておくことが必要である.

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


マクロ定義

#define _bool_   int

コンパイラ依存のデータ型のデフォルト定義

#define E_BOVR   (-58)

バッファオーバーフロー

参照:
ER

参照元 itron_strerror().

#define E_CLS   (-52)

待ちオブジェクトの状態変化

参照:
ER

参照元 itron_strerror().

#define E_CTX   (-25)

#define E_DLT   (-51)

待ちオブジェクトの削除

参照:
ER

参照元 itron_strerror().

#define E_ID   (-18)

#define E_ILUSE   (-28)

サービスコール不正使用

参照:
ER

参照元 itron_strerror()pol_flg()twai_flg()wai_flg().

#define E_MACV   (-26)

メモリアクセス違反

JSPカーネルでは,メインエラーコードとして E_MACV を返すエラーの検出を省略している.

参照:
ER

参照元 itron_strerror().

#define E_NOEXS   (-42)

オブジェクト未生成

参照:
ER

参照元 itron_strerror().

#define E_NOID   (-34)

ID番号不足

参照:
ER

参照元 itron_strerror().

#define E_NOMEM   (-33)

メモリ不足

参照:
ER

参照元 itron_strerror().

#define E_NOSPT   (-9)

未サポート機能

参照:
ER

参照元 itron_strerror().

#define E_OACV   (-27)

オブジェクトアクセス違反

参照:
ER

参照元 itron_strerror().

#define E_PAR   (-17)

パラメータエラー

ポインタの値が不正な場合のパラメータエラー (E_PAR) の検出も省略している. メモリアクセス違反 (E_MACV) の検出も省略しているため,引数にポインタを渡すサービスコールに対して, 存在しないメモリ番地を差すポインタなど,不正なアクセスを引き起こすポインタを渡した場合, プロセッサがバエラーなどのCPU例外を起こす場合がある(具体的な動作はターゲットプロセッサに依存).

参照:
ER

参照元 itron_strerror().

#define E_QOVR   (-43)

キューイングオーバーフロー

参照:
ER

参照元 act_tsk()iact_tsk()isig_sem()itron_strerror()iwup_tsk()sig_sem()sus_tsk()wup_tsk().

#define E_RLWAI   (-49)

待ち状態の強制解除

参照:
ER

参照元 itron_strerror()wait_release().

#define E_RSATR   (-11)

予約属性

参照:
ER

参照元 itron_strerror().

#define E_RSFN   (-10)

予約機能コード

参照:
ER

参照元 itron_strerror().

#define E_SYS   (-5)

システムエラー

JSPカーネルでは,メインエラーコードとして E_SYS を返すエラーの検出を省略している.

参照:
ER

参照元 itron_strerror().

#define E_TMOUT   (-50)

ポーリング失敗またはタイムアウト

参照:
ER

参照元 ipsnd_dtq()itron_strerror()pget_mpf()pol_flg()pol_sem()prcv_dtq()prcv_mbx()psnd_dtq()tget_mpf()trcv_dtq()trcv_mbx()tslp_tsk()tsnd_dtq()twai_flg()twai_sem()wait_tmout().

#define E_WBLK   (-57)

ノンブロッキング受付け

参照:
ER

参照元 itron_strerror().

#define ERCD ( mercd,
sercd   )     (((sercd) << 8) | ((mercd) & 0xff))

エラーコード生成マクロ

#define MERCD ( ercd   )     ((ER)((B)(ercd)))

メインエラーコードの取り出し

参照元 itron_strerror().

#define NULL   0

無効ポインタ

_MACRO_ONLY の時には,NULL を定義しない.これは,_MACRO_ONLY の時は stddef.h をインクルードしないため,そうでない時と NULL の定義が食い違う可能性があるためである.また,システムコンフィギュレーションファイルを処理する場合には NULL を定義してはならないため,その点からも定義しない方が都合がよい.

参照元 dis_tex()ena_tex()enqueue_msg_pri()fsnd_dtq()ifsnd_dtq()iget_tid()ipsnd_dtq()iras_tex()mailbox_initialize()make_non_runnable()make_runnable()make_wait()make_wait_tmout()mempfix_get_block()mempfix_initialize()prcv_dtq()prcv_mbx()psnd_dtq()ras_tex()rcv_dtq()rcv_mbx()receive_data_swait()send_data_rwait()snd_dtq()snd_mbx()sns_tex()syslog_terminate()task_initialize()trcv_dtq()trcv_mbx()tsnd_dtq()vxsns_tex()wait_cancel()wait_complete().

#define SERCD ( ercd   )     ((ER)((B)((ercd) >> 8)))

サブエラーコードの取り出し

ANSI C言語の規格では,右シフト演算子(>>)が符号拡張されることを保証していないため,SERCDマクロの定義を単に ((ercd) >> 8) とすると,右シフト演算子を符号拡張しないコンパイラでは,SERCD の返値が正の値になってしまう.

#define TA_NULL   0u

オブジェクト属性を指定しない

#define TMO_FEVR   (-1)

永久待ち

参照元 make_wait_tmout().

#define TMO_NBLK   (-2)

ノンブロッキング

#define TMO_POL   0

ポーリング

参照元 tget_mpf()trcv_dtq()trcv_mbx()tslp_tsk()tsnd_dtq()twai_flg()twai_sem().


型定義

typedef UINT ATR

オブジェクトの属性

itron.h128 行で定義されています。

typedef signed _int8_ B

符号付き8ビット整数

itron.h96 行で定義されています。

typedef _bool_ BOOL

真偽値

参照:
TRUE, FALSE

itron.h123 行で定義されています。

typedef signed _int64_ D

符号付き64ビット整数

itron.h112 行で定義されています。

typedef INT ER

エラーコード

itron.h126 行で定義されています。

typedef INT ER_BOOL

ER または BOOL

itron.h144 行で定義されています。

typedef INT ER_ID

ER または ID

itron.h145 行で定義されています。

typedef INT ER_UINT

ER または UINT

itron.h146 行で定義されています。

typedef INT FN

機能コード

itron.h125 行で定義されています。

typedef void(* FP)()

プログラムの起動番地 (ポインタ)

itron.h118 行で定義されています。

typedef signed _int16_ H

符号付き16ビット整数

itron.h102 行で定義されています。

typedef INT ID

オブジェクトのID番号

オブジェクトの ID 番号には,1 から連続した正の値を用いる.オブジェクトの ID 番号に抜けがある場合 (例えば,ID=1とID=3のオブジェクトが登録され, ID = 2 のオブジェクトが登録されない場合) には, コンフィギュレータがエラーを報告する. 負の ID 番号を用いたシステムオブジェクトとユーザオブジェクトの区別はサポートしていない.

生成できるオブジェクトの最大数は,カーネルのコード上は, ID 番号が ID 型 (signed int 型に定義している) で表現できる範囲内であるが,実際にはメモリ容量によって制限される. なお,JSPカーネルでは,オブジェクトを生成するためのサービスコールはサポートしていない.

itron.h127 行で定義されています。

typedef signed int INT

自然なサイズの符号付き整数

itron.h120 行で定義されています。

typedef UINT MODE

サービスコールの動作モード

itron.h130 行で定義されています。

typedef INT PRI

優先度

タスクとメッセージの優先度には,1〜16 の正の値を用いる. 優先度は 1 が最高であり,16 が最低である.

itron.h131 行で定義されています。

typedef UINT RELTIM

相対時間

RELTIM 型の時間単位は,スタンダードプロファイルの規定に従い,すべて 1 ミリ秒としている.

RELTIM 型の有効ビット数は 31 ビットを越えることはない. すなわち,unsigned int 型のサイズが 32 ビットの場合には, RELTIM 型の有効ビット数は 31 ビットであり, (2^31 - 1) を越える値を RELTIM 型のパラメータに渡した場合, E_PAR エラーとなる. unsigned int 型のサイズが 16 ビットの場合には, RELTIM 型の有効ビット数も 16 ビットである. スタンダードプロファイルでは, RELTIM 型は 16 ビット以上と規定しており,この仕様でスタンダードプロファイル規定に準拠している.

itron.h135 行で定義されています。

typedef size_t SIZE

メモリ領域のサイズ

itron.h132 行で定義されています。

typedef UINT STAT

オブジェクトの状態

itron.h129 行で定義されています。

typedef UW SYSTIM

システム時刻

SYSTIM 型の時間単位は,スタンダードプロファイルの規定に従い,すべて 1 ミリ秒としている.

SYSTIM 型は,32ビットの符号無し整数型に定義しており,構造体として定義する方法は用いていない.

itron.h136 行で定義されています。

typedef INT TMO

タイムアウト指定

TMO 型の時間単位は,スタンダードプロファイルの規定に従い,すべて 1 ミリ秒としている.

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

typedef unsigned _int8_ UB

符号無し8ビット整数

itron.h97 行で定義されています。

typedef unsigned _int64_ UD

符号無し64ビット整数

itron.h113 行で定義されています。

typedef unsigned _int16_ UH

符号無し16ビット整数

itron.h103 行で定義されています。

typedef unsigned int UINT

自然なサイズの符号無し整数

itron.h121 行で定義されています。

typedef unsigned _int32_ UW

符号無し32ビット整数

itron.h108 行で定義されています。

typedef _int8_ VB

型が定まらない8ビットの値

itron.h98 行で定義されています。

typedef _int64_ VD

型が定まらない64ビットの値

itron.h114 行で定義されています。

typedef _int16_ VH

型が定まらない16ビットの値

itron.h104 行で定義されています。

typedef void * VP

型が定まらないものへのポインタ

itron.h117 行で定義されています。

typedef VP VP_INT

VP または INT

itron.h141 行で定義されています。

typedef _int32_ VW

型が定まらない32ビットの値

itron.h109 行で定義されています。

typedef signed _int32_ W

符号付き32ビット整数

itron.h107 行で定義されています。


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