00001 /* 00002 * TOPPERS/ASP Kernel 00003 * Toyohashi Open Platform for Embedded Real-Time Systems/ 00004 * Advanced Standard Profile Kernel 00005 * 00006 * Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory 00007 * Toyohashi Univ. of Technology, JAPAN 00008 * Copyright (C) 2004-2008 by Embedded and Real-Time Systems Laboratory 00009 * Graduate School of Information Science, Nagoya Univ., JAPAN 00010 * 00011 * 上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ 00012 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 00013 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 00014 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 00015 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 00016 * スコード中に含まれていること. 00017 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 00018 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 00019 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 00020 * の無保証規定を掲載すること. 00021 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 00022 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 00023 * と. 00024 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 00025 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 00026 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 00027 * 報告すること. 00028 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 00029 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 00030 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 00031 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 00032 * 免責すること. 00033 * 00034 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 00035 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 00036 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 00037 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 00038 * の責任を負わない. 00039 * 00040 * @(#) $Id: kernel_impl.h 748 2008-03-07 17:18:06Z hiro $ 00041 */ 00042 00043 /* 00044 * TOPPERS/ASPカーネル内部向け標準ヘッダファイル 00045 * 00046 * このヘッダファイルは,カーネルを構成するプログラムのソースファイル 00047 * で必ずインクルードするべき標準ヘッダファイルである. 00048 * 00049 * アセンブリ言語のソースファイルからこのファイルをインクルードする時 00050 * は,TOPPERS_MACRO_ONLYを定義しておく.これにより,マクロ定義以外を 00051 * 除くようになっている. 00052 */ 00053 00054 #ifndef TOPPERS_KERNEL_IMPL_H 00055 #define TOPPERS_KERNEL_IMPL_H 00056 00057 /* 00058 * カーネルの内部識別名のリネーム 00059 */ 00060 #include "kernel_rename.h" 00061 00062 /* 00063 * アプリケーションと共通のヘッダファイル 00064 */ 00065 #include <kernel.h> 00066 00067 /* 00068 * システムログ機能のための定義 00069 */ 00070 #include <t_syslog.h> 00071 00072 /* 00073 * 型キャストを行うマクロの定義 00074 */ 00075 #ifndef CAST 00076 #define CAST(type, val) ((type)(val)) 00077 #endif /* CAST */ 00078 00079 /* 00080 * ターゲット依存情報の定義 00081 */ 00082 #include "target_config.h" 00083 00084 /* 00085 * すべての関数をコンパイルするための定義 00086 */ 00087 #ifdef ALLFUNC 00088 #include "allfunc.h" 00089 #endif /* ALLFUNC */ 00090 00091 /* 00092 * ビットフィールドでの符号無し整数型 00093 * 00094 * 8ビット以下の幅のビットフィールドで,符号無し整数値を保持したい場合 00095 * に用いるべきデータ型.ANSI Cでは,ビットフィールドのデータ型には 00096 * intとunsigned intしか許されないため,デフォルトの定義はunsigned 00097 * intとしているが,ターゲットおよびツール依存で,unsigned charまたは 00098 * unsigned shortに定義した方が効率が良い場合がある. 00099 */ 00100 #ifndef BIT_FIELD_UINT 00101 #define BIT_FIELD_UINT unsigned int 00102 #endif /* BIT_FIELD_UINT */ 00103 00104 /* 00105 * ビットフィールドでのブール型 00106 * 00107 * 1ビット幅のビットフィールドで,ブール値を保持したい場合に用いるべき 00108 * データ型.デフォルトではBIT_FIELD_UINTと同一に定義しているが,ブー 00109 * ル値を保持することを明示するために別の名称としている. 00110 */ 00111 #ifndef BIT_FIELD_BOOL 00112 #define BIT_FIELD_BOOL BIT_FIELD_UINT 00113 #endif /* BIT_FIELD_BOOL */ 00114 00115 /* 00116 * オブジェクトIDの最小値の定義 00117 */ 00118 #define TMIN_TSKID 1 /* タスクIDの最小値 */ 00119 #define TMIN_SEMID 1 /* セマフォIDの最小値 */ 00120 #define TMIN_FLGID 1 /* フラグIDの最小値 */ 00121 #define TMIN_DTQID 1 /* データキューIDの最小値 */ 00122 #define TMIN_PDQID 1 /* 優先度データキューIDの最小値 */ 00123 #define TMIN_MBXID 1 /* メールボックスIDの最小値 */ 00124 #define TMIN_MPFID 1 /* 固定長メモリプールIDの最小値 */ 00125 #define TMIN_CYCID 1 /* 周期ハンドラIDの最小値 */ 00126 #define TMIN_ALMID 1 /* アラームハンドラIDの最小値 */ 00127 00128 /* 00129 * 優先度の段階数の定義 00130 */ 00131 #define TNUM_TPRI (TMAX_TPRI - TMIN_TPRI + 1) 00132 #define TNUM_MPRI (TMAX_MPRI - TMIN_MPRI + 1) 00133 #define TNUM_INTPRI (TMAX_INTPRI - TMIN_INTPRI + 1) 00134 00135 /* 00136 * ヘッダファイルを持たないモジュールの関数・変数の宣言 00137 */ 00138 #ifndef TOPPERS_MACRO_ONLY 00139 00140 /* 00141 * 各モジュールの初期化(kernel_cfg.c) 00142 */ 00143 extern void initialize_object(void); 00144 00145 /* 00146 * 初期化ルーチンの実行(kernel_cfg.c) 00147 */ 00148 extern void call_inirtn(void); 00149 00150 /* 00151 * 終了処理ルーチンの実行(kernel_cfg.c) 00152 */ 00153 extern void call_terrtn(void); 00154 00155 /* 00156 * 非タスクコンテキスト用のスタック領域(kernel_cfg.c) 00157 */ 00158 extern const SIZE istksz; /* スタック領域のサイズ(丸めた値) */ 00159 extern STK_T *const istk; /* スタック領域の先頭番地 */ 00160 #ifdef TOPPRES_ISTKPT 00161 extern STK_T *const istkpt; /* スタックポインタの初期値 */ 00162 #endif /* TOPPERS_ISTKPT */ 00163 00164 /* 00165 * カーネル動作状態フラグ(startup.c) 00166 */ 00167 extern bool_t kerflg; 00168 00169 /* 00170 * カーネルの起動(startup.c) 00171 */ 00172 extern void sta_ker(void); 00173 00174 /* 00175 * カーネルの終了処理(startup.c) 00176 */ 00177 extern void exit_kernel(void); 00178 00179 #endif /* TOPPERS_MACRO_ONLY */ 00180 #endif /* TOPPERS_KERNEL_IMPL_H */
Copyright © 2008 by Kijineko Inc.