|
|
itron.h説明を見る。00001 /* 00002 * TOPPERS/FDMP Kernel 00003 * Toyohashi Open Platform for Embedded Real-Time Systems/ 00004 * Function Distributed Multiprocessor Kernel 00005 * 00006 * Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory 00007 * Toyohashi Univ. of Technology, JAPAN 00008 * Copyright (C) 2004 by Embedded and Real-Time Systems Laboratory 00009 * Graduate School of Information Science, Nagoya Univ., JAPAN 00010 * 00011 * 上記著作権者は,以下の (1)〜(4) の条件か,Free Software Foundation 00012 * によって公表されている GNU General Public License の Version 2 に記 00013 * 述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア 00014 * を改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下, 00015 * 利用と呼ぶ)することを無償で許諾する. 00016 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 00017 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 00018 * スコード中に含まれていること. 00019 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 00020 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 00021 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 00022 * の無保証規定を掲載すること. 00023 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 00024 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 00025 * と. 00026 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 00027 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 00028 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 00029 * 報告すること. 00030 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 00031 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 00032 * 00033 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 00034 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も 00035 * 含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直 00036 * 接的または間接的に生じたいかなる損害に関しても,その責任を負わない. 00037 * 00038 * @(#) $Id: itron.h,v 1.1 2005/04/03 13:33:19 honda Exp $ 00039 */ 00040 00041 /* 00042 * ITRON仕様共通規定のデータ型・定数・マクロ 00043 * 00044 * このファイルには,スタンダードプロファイルには必要ない定義も含んで 00045 * いる.データ型の定義は,スタンダードプロファイルを満たすちょうどの 00046 * 長さにはしていない. 00047 * 00048 * アセンブリ言語のソースファイルやシステムコンフィギュレーションファ 00049 * イルからこのファイルをインクルードする時は,_MACRO_ONLY を定義して 00050 * おくことで,マクロ定義以外の記述を除くことができる. 00051 * 00052 * このインクルードファイルは,kernel.h と sil.h でインクルードされる. 00053 * また,ITRON仕様共通規定に準拠するソフトウェア部品のインクルードファ 00054 * イルは,このファイルを直接インクルードしてもよい.この例外を除いて, 00055 * 他のファイルから直接インクルードされることはない. 00056 * 00057 * このファイルをインクルードする前に,t_stddef.h をインクルードして 00058 * おくことが必要である. 00059 */ 00060 00061 #ifndef _ITRON_H_ 00062 #define _ITRON_H_ 00063 00064 #ifdef __cplusplus 00065 extern "C" { 00066 #endif 00067 00068 /* 00069 * 開発環境に依存する定義 00070 */ 00071 #include <tool_defs.h> 00072 00073 /* 00074 * 開発環境の標準インクルードファイル(NULL と size_t の定義が必要) 00075 * 00076 * C++/EC++ では,標準仕様上は stddef.h がサポートされているとは限らな 00077 * いが,ほとんどの処理系でサポートされている. 00078 */ 00079 #ifndef _MACRO_ONLY 00080 #include <stddef.h> 00081 #endif /* _MACRO_ONLY */ 00082 00083 /* 00084 * コンパイラ依存のデータ型のデフォルト定義 00085 */ 00086 #ifndef _bool_ 00087 #define _bool_ int /* ブール型 */ 00088 #endif /* _bool_ */ 00089 00090 /* 00091 * ITRON仕様共通データ型 00092 */ 00093 #ifndef _MACRO_ONLY 00094 00095 #ifdef _int8_ 00096 typedef signed _int8_ B; /* 符号付き8ビット整数 */ 00097 typedef unsigned _int8_ UB; /* 符号無し8ビット整数 */ 00098 typedef _int8_ VB; /* 型が定まらない8ビットの値 */ 00099 #endif /* _int8_ */ 00100 00101 #ifdef _int16_ 00102 typedef signed _int16_ H; /* 符号付き16ビット整数 */ 00103 typedef unsigned _int16_ UH; /* 符号無し16ビット整数 */ 00104 typedef _int16_ VH; /* 型が定まらない16ビットの値 */ 00105 #endif /* _int16_ */ 00106 00107 typedef signed _int32_ W; /* 符号付き32ビット整数 */ 00108 typedef unsigned _int32_ UW; /* 符号無し32ビット整数 */ 00109 typedef _int32_ VW; /* 型が定まらない32ビットの値 */ 00110 00111 #ifdef _int64_ 00112 typedef signed _int64_ D; /* 符号付き64ビット整数 */ 00113 typedef unsigned _int64_ UD; /* 符号無し64ビット整数 */ 00114 typedef _int64_ VD; /* 型が定まらない64ビットの値 */ 00115 #endif /* _int64_ */ 00116 00117 typedef void *VP; /* 型が定まらないものへのポインタ */ 00118 typedef void (*FP)(); /* プログラムの起動番地(ポインタ) */ 00119 00120 typedef signed int INT; /* 自然なサイズの符号付き整数 */ 00121 typedef unsigned int UINT; /* 自然なサイズの符号無し整数 */ 00122 00123 typedef _bool_ BOOL; /* 真偽値 */ 00124 00125 typedef INT FN; /* 機能コード */ 00126 typedef INT ER; /* エラーコード */ 00127 typedef INT ID; /* オブジェクトのID番号 */ 00128 typedef UINT ATR; /* オブジェクトの属性 */ 00129 typedef UINT STAT; /* オブジェクトの状態 */ 00130 typedef UINT MODE; /* サービスコールの動作モード */ 00131 typedef INT PRI; /* 優先度 */ 00132 typedef size_t SIZE; /* メモリ領域のサイズ */ 00133 00134 typedef INT TMO; /* タイムアウト指定 */ 00135 typedef UINT RELTIM; /* 相対時間 */ 00136 typedef UW SYSTIM; /* システム時刻 */ 00137 00138 #ifdef _vp_int_ 00139 typedef _vp_int_ VP_INT; /* VP または INT */ 00140 #else /* _vp_int_ */ 00141 typedef VP VP_INT; /* VP または INT */ 00142 #endif /* _vp_int_ */ 00143 00144 typedef INT ER_BOOL; /* ER または BOOL */ 00145 typedef INT ER_ID; /* ER または ID */ 00146 typedef INT ER_UINT; /* ER または UINT */ 00147 00148 #endif /* _MACRO_ONLY */ 00149 00150 /* 00151 * ITRON仕様共通定数 00152 */ 00153 00154 /* 00155 * 一般 00156 * 00157 * _MACRO_ONLY の時には,NULL を定義しない.これは,_MACRO_ONLY の時 00158 * はstddef.h をインクルードしないため,そうでない時と NULL の定義が 00159 * 食い違う可能性があるためである.また,システムコンフィギュレーショ 00160 * ンファイルを処理する場合には NULL を定義してはならないため,その点 00161 * からも定義しない方が都合がよい. 00162 */ 00163 #ifndef _MACRO_ONLY 00164 #ifndef NULL /* stddef.h に含まれているはず */ 00165 #define NULL 0 /* 無効ポインタ */ 00166 #endif /* NULL */ 00167 #endif /* _MACRO_ONLY */ 00168 00169 #define TRUE 1 /* 真 */ 00170 #define FALSE 0 /* 偽 */ 00171 #define E_OK 0 /* 正常終了 */ 00172 00173 /* 00174 * エラーコード 00175 */ 00176 #define E_SYS (-5) /* システムエラー */ 00177 #define E_NOSPT (-9) /* 未サポート機能 */ 00178 #define E_RSFN (-10) /* 予約機能コード */ 00179 #define E_RSATR (-11) /* 予約属性 */ 00180 #define E_PAR (-17) /* パラメータエラー */ 00181 #define E_ID (-18) /* 不正ID番号 */ 00182 #define E_CTX (-25) /* コンテキストエラー */ 00183 #define E_MACV (-26) /* メモリアクセス違反 */ 00184 #define E_OACV (-27) /* オブジェクトアクセス違反 */ 00185 #define E_ILUSE (-28) /* サービスコール不正使用 */ 00186 #define E_NOMEM (-33) /* メモリ不足 */ 00187 #define E_NOID (-34) /* ID番号不足 */ 00188 #define E_OBJ (-41) /* オブジェクト状態エラー */ 00189 #define E_NOEXS (-42) /* オブジェクト未生成 */ 00190 #define E_QOVR (-43) /* キューイングオーバーフロー */ 00191 #define E_RLWAI (-49) /* 待ち状態の強制解除 */ 00192 #define E_TMOUT (-50) /* ポーリング失敗またはタイムアウト */ 00193 #define E_DLT (-51) /* 待ちオブジェクトの削除 */ 00194 #define E_CLS (-52) /* 待ちオブジェクトの状態変化 */ 00195 #define E_WBLK (-57) /* ノンブロッキング受付け */ 00196 #define E_BOVR (-58) /* バッファオーバーフロー */ 00197 00198 /* 00199 * オブジェクト属性 00200 */ 00201 #define TA_NULL 0u /* オブジェクト属性を指定しない */ 00202 00203 /* 00204 * タイムアウト指定 00205 */ 00206 #define TMO_POL 0 /* ポーリング */ 00207 #define TMO_FEVR (-1) /* 永久待ち */ 00208 #define TMO_NBLK (-2) /* ノンブロッキング */ 00209 00210 /* 00211 * ITRON仕様共通マクロ 00212 */ 00213 00214 /* 00215 * エラーコード生成・分解マクロ 00216 * 00217 * ANSI C言語の規格では,右シフト演算子(>>)が符号拡張されることを保 00218 * 証していないため,SERCDマクロの定義を単に ((ercd) >> 8) とすると, 00219 * 右シフト演算子を符号拡張しないコンパイラでは,SERCD の返値が正の値 00220 * になってしまう. 00221 */ 00222 #define ERCD(mercd,sercd) (((sercd) << 8) | ((mercd) & 0xff)) 00223 00224 #ifdef _int8_ 00225 #define MERCD(ercd) ((ER)((B)(ercd))) 00226 #define SERCD(ercd) ((ER)((B)((ercd) >> 8))) 00227 #else /* _int8_ */ 00228 #define MERCD(ercd) (((ercd) & 0x80) == 0 ? ((ercd) & 0xff) \ 00229 : ((ercd) | ~0xff)) 00230 #define SERCD(ercd) ((~((~0) >> 8)) | ((ercd) >> 8)) 00231 #endif /* _int8_ */ 00232 00233 #ifdef __cplusplus 00234 } 00235 #endif 00236 00237 #endif /* _ITRON_H_ */ Copyright © 2006 by TAKAGI Nobuhisa. このページは Mon Apr 3 23:49:12 2006 に Doxygen によって生成されました。 |