3 * Toyohashi Open Platform for Embedded Real-Time Systems/
4 * Just Standard Profile Kernel
6 * Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
7 * Toyohashi Univ. of Technology, JAPAN
8 * Copyright (C) 2004 by Embedded and Real-Time Systems Laboratory
9 * Graduate School of Information Science, Nagoya Univ., JAPAN
11 * 上記著作権者は,以下の (1)〜(4) の条件か,Free Software Foundation
12 * によって公表されている GNU General Public License の Version 2 に記
13 * 述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
14 * を改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下,
16 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
17 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
19 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
20 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
21 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
23 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
24 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
26 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
27 * 作権表示,この利用条件および下記の無保証規定を掲載すること.
28 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
30 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
31 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
33 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
34 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
35 * 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
36 * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
38 * @(#) $Id: itron.h,v 1.1 2009/01/31 05:27:37 suikan Exp $
42 * ITRON仕様共通規定のデータ型・定数・マクロ
44 * このファイルには,スタンダードプロファイルには必要ない定義も含んで
45 * いる.データ型の定義は,スタンダードプロファイルを満たすちょうどの
48 * アセンブリ言語のソースファイルやシステムコンフィギュレーションファ
49 * イルからこのファイルをインクルードする時は,_MACRO_ONLY を定義して
50 * おくことで,マクロ定義以外の記述を除くことができる.
52 * このインクルードファイルは,kernel.h と sil.h でインクルードされる.
53 * また,ITRON仕様共通規定に準拠するソフトウェア部品のインクルードファ
54 * イルは,このファイルを直接インクルードしてもよい.この例外を除いて,
55 * 他のファイルから直接インクルードされることはない.
57 * このファイルをインクルードする前に,t_stddef.h をインクルードして
71 #include <tool_defs.h>
74 * 開発環境の標準インクルードファイル(NULL と size_t の定義が必要)
76 * C++/EC++ では,標準仕様上は stddef.h がサポートされているとは限らな
77 * いが,ほとんどの処理系でサポートされている.
81 #endif /* _MACRO_ONLY */
84 * コンパイラ依存のデータ型のデフォルト定義
87 #define _bool_ int /* ブール型 */
96 typedef signed _int8_ B; /* 符号付き8ビット整数 */
97 typedef unsigned _int8_ UB; /* 符号無し8ビット整数 */
98 typedef _int8_ VB; /* 型が定まらない8ビットの値 */
102 typedef signed _int16_ H; /* 符号付き16ビット整数 */
103 typedef unsigned _int16_ UH; /* 符号無し16ビット整数 */
104 typedef _int16_ VH; /* 型が定まらない16ビットの値 */
107 typedef signed _int32_ W; /* 符号付き32ビット整数 */
108 typedef unsigned _int32_ UW; /* 符号無し32ビット整数 */
109 typedef _int32_ VW; /* 型が定まらない32ビットの値 */
112 typedef signed _int64_ D; /* 符号付き64ビット整数 */
113 typedef unsigned _int64_ UD; /* 符号無し64ビット整数 */
114 typedef _int64_ VD; /* 型が定まらない64ビットの値 */
117 typedef void *VP; /* 型が定まらないものへのポインタ */
118 typedef void (*FP)(); /* プログラムの起動番地(ポインタ) */
120 typedef signed int INT; /* 自然なサイズの符号付き整数 */
121 typedef unsigned int UINT; /* 自然なサイズの符号無し整数 */
123 typedef _bool_ BOOL; /* 真偽値 */
125 typedef INT FN; /* 機能コード */
126 typedef INT ER; /* エラーコード */
127 typedef INT ID; /* オブジェクトのID番号 */
128 typedef UINT ATR; /* オブジェクトの属性 */
129 typedef UINT STAT; /* オブジェクトの状態 */
130 typedef UINT MODE; /* サービスコールの動作モード */
131 typedef INT PRI; /* 優先度 */
132 typedef size_t SIZE; /* メモリ領域のサイズ */
134 typedef INT TMO; /* タイムアウト指定 */
135 typedef UINT RELTIM; /* 相対時間 */
136 typedef UW SYSTIM; /* システム時刻 */
139 typedef _vp_int_ VP_INT; /* VP または INT */
141 typedef VP VP_INT; /* VP または INT */
142 #endif /* _vp_int_ */
144 typedef INT ER_BOOL; /* ER または BOOL */
145 typedef INT ER_ID; /* ER または ID */
146 typedef INT ER_UINT; /* ER または UINT */
148 #endif /* _MACRO_ONLY */
157 * _MACRO_ONLY の時には,NULL を定義しない.これは,_MACRO_ONLY の時
158 * はstddef.h をインクルードしないため,そうでない時と NULL の定義が
159 * 食い違う可能性があるためである.また,システムコンフィギュレーショ
160 * ンファイルを処理する場合には NULL を定義してはならないため,その点
164 #ifndef NULL /* stddef.h に含まれているはず */
165 #define NULL 0 /* 無効ポインタ */
167 #endif /* _MACRO_ONLY */
169 #define TRUE 1 /* 真 */
170 #define FALSE 0 /* 偽 */
171 #define E_OK 0 /* 正常終了 */
176 #define E_SYS (-5) /* システムエラー */
177 #define E_NOSPT (-9) /* 未サポート機能 */
178 #define E_RSFN (-10) /* 予約機能コード */
179 #define E_RSATR (-11) /* 予約属性 */
180 #define E_PAR (-17) /* パラメータエラー */
181 #define E_ID (-18) /* 不正ID番号 */
182 #define E_CTX (-25) /* コンテキストエラー */
183 #define E_MACV (-26) /* メモリアクセス違反 */
184 #define E_OACV (-27) /* オブジェクトアクセス違反 */
185 #define E_ILUSE (-28) /* サービスコール不正使用 */
186 #define E_NOMEM (-33) /* メモリ不足 */
187 #define E_NOID (-34) /* ID番号不足 */
188 #define E_OBJ (-41) /* オブジェクト状態エラー */
189 #define E_NOEXS (-42) /* オブジェクト未生成 */
190 #define E_QOVR (-43) /* キューイングオーバーフロー */
191 #define E_RLWAI (-49) /* 待ち状態の強制解除 */
192 #define E_TMOUT (-50) /* ポーリング失敗またはタイムアウト */
193 #define E_DLT (-51) /* 待ちオブジェクトの削除 */
194 #define E_CLS (-52) /* 待ちオブジェクトの状態変化 */
195 #define E_WBLK (-57) /* ノンブロッキング受付け */
196 #define E_BOVR (-58) /* バッファオーバーフロー */
201 #define TA_NULL 0u /* オブジェクト属性を指定しない */
206 #define TMO_POL 0 /* ポーリング */
207 #define TMO_FEVR (-1) /* 永久待ち */
208 #define TMO_NBLK (-2) /* ノンブロッキング */
217 * ANSI C言語の規格では,右シフト演算子(>>)が符号拡張されることを保
218 * 証していないため,SERCDマクロの定義を単に ((ercd) >> 8) とすると,
219 * 右シフト演算子を符号拡張しないコンパイラでは,SERCD の返値が正の値
222 #define ERCD(mercd,sercd) (((sercd) << 8) | ((mercd) & 0xff))
225 #define MERCD(ercd) ((ER)((B)(ercd)))
226 #define SERCD(ercd) ((ER)((B)((ercd) >> 8)))
228 #define MERCD(ercd) (((ercd) & 0x80) == 0 ? ((ercd) & 0xff) \
230 #define SERCD(ercd) ((~((~0) >> 8)) | ((ercd) >> 8))
237 #endif /* _ITRON_H_ */