Changeset 318 for asp3_gr_sakura/trunk/kernel/kernel_impl.h
- Timestamp:
- Aug 3, 2017, 10:46:41 PM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
asp3_gr_sakura/trunk/kernel/kernel_impl.h
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr; charset=UTF-8
r317 r318 9 9 * Graduate School of Information Science, Nagoya Univ., JAPAN 10 10 * 11 * ä¸è¨èä½æ¨©è 12 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 13 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 14 * å¤ã»åé 15 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 16 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 17 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 18 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 19 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 20 * ç¨ã§ããå½¢ã§åé 21 å¸ããå ´åã«ã¯ï¼åé 22 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 23 * è 24 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 25 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 26 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 27 * ç¨ã§ããªãå½¢ã§åé 28 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 29 * ã¨ï¼ 30 * (a) åé 31 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 32 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 33 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 34 * (b) åé 35 å¸ã®å½¢æ 36 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 37 * å ±åãããã¨ï¼ 38 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 39 * 害ãããï¼ä¸è¨èä½æ¨©è 40 ããã³TOPPERSããã¸ã§ã¯ããå 41 責ãããã¨ï¼ 42 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 43 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 44 ããã³TOPPERSããã¸ã§ã¯ãã 45 * å 46 責ãããã¨ï¼ 47 * 48 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 49 ã 50 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 51 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 52 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 53 * ã®è²¬ä»»ãè² ããªãï¼ 11 * 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 12 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 13 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 14 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 15 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 16 * スコード中に含まれていること. 17 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 18 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 19 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 20 * の無保証規定を掲載すること. 21 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 22 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 23 * と. 24 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 25 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 26 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 27 * 報告すること. 28 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 29 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 30 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 31 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 32 * 免責すること. 33 * 34 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 35 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 36 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 37 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 38 * の責任を負わない. 54 39 * 55 40 * $Id$ … … 57 42 58 43 /* 59 * TOPPERS/ASPã«ã¼ãã«å 60 é¨åãæ¨æºããããã¡ã¤ã« 61 * 62 * ãã®ããããã¡ã¤ã«ã¯ï¼ã«ã¼ãã«ãæ§æããããã°ã©ã ã®ã½ã¼ã¹ãã¡ã¤ã« 63 * ã§å¿ 64 ãã¤ã³ã¯ã«ã¼ãããã¹ãæ¨æºããããã¡ã¤ã«ã§ããï¼ 65 * 66 * ã¢ã»ã³ããªè¨èªã®ã½ã¼ã¹ãã¡ã¤ã«ãããã®ãã¡ã¤ã«ãã¤ã³ã¯ã«ã¼ãããæ 67 * ã¯ï¼TOPPERS_MACRO_ONLYãå®ç¾©ãã¦ããï¼ããã«ããï¼ãã¯ãå®ç¾©ä»¥å¤ã 68 * é¤ãããã«ãªã£ã¦ããï¼ 44 * TOPPERS/ASPカーネル内部向け標準ヘッダファイル 45 * 46 * このヘッダファイルは,カーネルを構成するプログラムのソースファイル 47 * で必ずインクルードするべき標準ヘッダファイルである. 48 * 49 * アセンブリ言語のソースファイルからこのファイルをインクルードする時 50 * は,TOPPERS_MACRO_ONLYを定義しておく.これにより,マクロ定義以外を 51 * 除くようになっている. 69 52 */ 70 53 … … 73 56 74 57 /* 75 * ã«ã¼ãã«ã®å 76 é¨èå¥åã®ãªãã¼ã 58 * カーネルの内部識別名のリネーム 77 59 */ 78 60 #include "kernel_rename.h" 79 61 80 62 /* 81 * ã¢ããªã±ã¼ã·ã§ã³ã¨å 82 ±éã®ããããã¡ã¤ã« 63 * アプリケーションと共通のヘッダファイル 83 64 */ 84 65 #include <kernel.h> 85 66 86 67 /* 87 * ã·ã¹ãã ãã°æ©è½ã®ããã®å®ç¾©68 * システムログ機能のための定義 88 69 */ 89 70 #include <t_syslog.h> 90 71 91 72 /* 92 * ã¿ã¼ã²ããä¾åæ 93 å ±ã®å®ç¾© 73 * ターゲット依存情報の定義 94 74 */ 95 75 #include "target_kernel_impl.h" 96 76 97 77 /* 98 * ãã¹ã¦ã®é¢æ°ãã³ã³ãã¤ã«ããããã®å®ç¾©78 * すべての関数をコンパイルするための定義 99 79 */ 100 80 #ifdef ALLFUNC … … 103 83 104 84 /* 105 * ããããã£ã¼ã«ãã§ã®ç¬¦å·ç¡ãæ´æ°å 106 * 107 * 8ããã以ä¸ã®å¹ 108 ã®ããããã£ã¼ã«ãã§ï¼ç¬¦å·ç¡ãæ´æ°å¤ãä¿æãããå ´å 109 * ã«ç¨ããã¹ããã¼ã¿åï¼ANSI Cã§ã¯ï¼ããããã£ã¼ã«ãã®ãã¼ã¿åã«ã¯ 110 * intã¨unsigned intãã許ãããªãããï¼ããã©ã«ãã®å®ç¾©ã¯unsigned 111 * intã¨ãã¦ãããï¼ã¿ã¼ã²ããããã³ãã¼ã«ä¾åã§ï¼unsigned charã¾ã㯠112 * unsigned shortã«å®ç¾©ããæ¹ãå¹çãè¯ãå ´åãããï¼ 85 * ビットフィールドでの符号無し整数型 86 * 87 * 8ビット以下の幅のビットフィールドで,符号無し整数値を保持したい場合 88 * に用いるべきデータ型.ANSI Cでは,ビットフィールドのデータ型には 89 * intとunsigned intしか許されないため,デフォルトの定義はunsigned 90 * intとしているが,ターゲットおよびツール依存で,unsigned charまたは 91 * unsigned shortに定義した方が効率が良い場合がある. 113 92 */ 114 93 #ifndef BIT_FIELD_UINT … … 117 96 118 97 /* 119 * ããããã£ã¼ã«ãã§ã®ãã¼ã«å 120 * 121 * 1ãããå¹ 122 ã®ããããã£ã¼ã«ãã§ï¼ãã¼ã«å¤ãä¿æãããå ´åã«ç¨ããã¹ã 123 * ãã¼ã¿åï¼ããã©ã«ãã§ã¯BIT_FIELD_UINTã¨åä¸ã«å®ç¾©ãã¦ãããï¼ãã¼ 124 * ã«å¤ãä¿æãããã¨ãæ示ããããã«å¥ã®å称ã¨ãã¦ããï¼ 98 * ビットフィールドでのブール型 99 * 100 * 1ビット幅のビットフィールドで,ブール値を保持したい場合に用いるべき 101 * データ型.デフォルトではBIT_FIELD_UINTと同一に定義しているが,ブー 102 * ル値を保持することを明示するために別の名称としている. 125 103 */ 126 104 #ifndef BIT_FIELD_BOOL … … 129 107 130 108 /* 131 * ãªãã¸ã§ã¯ãIDã®æå°å¤ã®å®ç¾© 132 */ 133 #define TMIN_TSKID 1 /* ã¿ã¹ã¯IDã®æå°å¤ */ 134 #define TMIN_SEMID 1 /* ã»ããã©IDã®æå°å¤ */ 135 #define TMIN_FLGID 1 /* ãã©ã°IDã®æå°å¤ */ 136 #define TMIN_DTQID 1 /* ãã¼ã¿ãã¥ã¼IDã®æå°å¤ */ 137 #define TMIN_PDQID 1 /* åªå 138 度ãã¼ã¿ãã¥ã¼IDã®æå°å¤ */ 139 #define TMIN_MTXID 1 /* ãã¥ã¼ããã¯ã¹IDã®æå°å¤ */ 140 #define TMIN_MPFID 1 /* åºå®é·ã¡ã¢ãªãã¼ã«IDã®æå°å¤ */ 141 #define TMIN_CYCID 1 /* å¨æéç¥IDã®æå°å¤ */ 142 #define TMIN_ALMID 1 /* ã¢ã©ã¼ã éç¥IDã®æå°å¤ */ 143 #define TMIN_ISRID 1 /* å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³IDã®æå°å¤ */ 144 145 /* 146 * åªå 147 度ã®æ®µéæ°ã®å®ç¾© 109 * オブジェクトIDの最小値の定義 110 */ 111 #define TMIN_TSKID 1 /* タスクIDの最小値 */ 112 #define TMIN_SEMID 1 /* セマフォIDの最小値 */ 113 #define TMIN_FLGID 1 /* フラグIDの最小値 */ 114 #define TMIN_DTQID 1 /* データキューIDの最小値 */ 115 #define TMIN_PDQID 1 /* 優先度データキューIDの最小値 */ 116 #define TMIN_MTXID 1 /* ミューテックスIDの最小値 */ 117 #define TMIN_MPFID 1 /* 固定長メモリプールIDの最小値 */ 118 #define TMIN_CYCID 1 /* 周期通知IDの最小値 */ 119 #define TMIN_ALMID 1 /* アラーム通知IDの最小値 */ 120 #define TMIN_ISRID 1 /* 割込みサービスルーチンIDの最小値 */ 121 122 /* 123 * 優先度の段階数の定義 148 124 */ 149 125 #define TNUM_TPRI (TMAX_TPRI - TMIN_TPRI + 1) … … 152 128 153 129 /* 154 * ã«ã¼ãã«å 155 é¨ã§ä½¿ç¨ããå±æ§ã®å®ç¾© 156 */ 157 #define TA_NOEXS ((ATR)(-1)) /* æªç»é²ç¶æ 158 */ 130 * カーネル内部で使用する属性の定義 131 */ 132 #define TA_NOEXS ((ATR)(-1)) /* 未登録状態 */ 159 133 160 134 #ifndef TA_MEMALLOC 161 #define TA_MEMALLOC UINT_C(0x8000) /* ã¡ã¢ãªé åãã«ã¼ãã«ã§ç¢ºä¿*/135 #define TA_MEMALLOC UINT_C(0x8000) /* メモリ領域をカーネルで確保 */ 162 136 #endif /* TA_MEMALLOC */ 163 137 #ifndef TA_MBALLOC 164 #define TA_MBALLOC UINT_C(0x4000) /* 管çé åãã«ã¼ãã«ã§ç¢ºä¿*/138 #define TA_MBALLOC UINT_C(0x4000) /* 管理領域をカーネルで確保 */ 165 139 #endif /* TA_MBALLOC */ 166 140 167 141 /* 168 * ã¿ã¼ã²ããå®ç¾©ã®ã¨ã©ã¼ãã§ãã¯ãã¯ãã®ããã©ã«ãå¤ã®å®ç¾©142 * ターゲット定義のエラーチェックマクロのデフォルト値の定義 169 143 */ 170 144 #ifndef TARGET_TSKATR 171 #define TARGET_TSKATR 0U /* ã¿ã¼ã²ããå®ç¾©ã®ã¿ã¹ã¯å±æ§*/145 #define TARGET_TSKATR 0U /* ターゲット定義のタスク属性 */ 172 146 #endif /* TARGET_TSKATR */ 173 147 174 148 #ifndef TARGET_ISRATR 175 #define TARGET_ISRATR 0U /* ã¿ã¼ã²ããå®ç¾©ã®ISRå±æ§*/149 #define TARGET_ISRATR 0U /* ターゲット定義のISR属性 */ 176 150 #endif /* TARGET_ISRATR */ 177 151 178 152 /* 179 * ããããã¡ã¤ã«ãæããªãã¢ã¸ã¥ã¼ã«ã®é¢æ°ã»å¤æ°ã®å®£è¨153 * ヘッダファイルを持たないモジュールの関数・変数の宣言 180 154 */ 181 155 #ifndef TOPPERS_MACRO_ONLY 182 156 183 157 /* 184 * TECS ã®åæåï¼init_tecs.cï¼158 * TECSの初期化(init_tecs.c) 185 159 */ 186 160 extern void initialize_tecs(void); 187 161 188 162 /* 189 * åã¢ã¸ã¥ã¼ã«ã®åæåï¼kernel_cfg.cï¼163 * 各モジュールの初期化(kernel_cfg.c) 190 164 */ 191 165 extern void initialize_object(void); 192 166 193 167 /* 194 * åæåã«ã¼ãã³ã®å®è¡ï¼kernel_cfg.cï¼168 * 初期化ルーチンの実行(kernel_cfg.c) 195 169 */ 196 170 extern void call_inirtn(void); 197 171 198 172 /* 199 * çµäºå¦çã«ã¼ãã³ã®å®è¡ï¼kernel_cfg.cï¼173 * 終了処理ルーチンの実行(kernel_cfg.c) 200 174 */ 201 175 extern void call_terrtn(void); 202 176 203 177 /* 204 * éã¿ã¹ã¯ã³ã³ããã¹ãç¨ã®ã¹ã¿ãã¯é åï¼kernel_cfg.cï¼ 205 */ 206 extern const size_t istksz; /* ã¹ã¿ãã¯é åã®ãµã¤ãºï¼ä¸¸ããå¤ï¼ */ 207 extern STK_T *const istk; /* ã¹ã¿ãã¯é åã®å 208 é çªå° */ 178 * 非タスクコンテキスト用のスタック領域(kernel_cfg.c) 179 */ 180 extern const size_t istksz; /* スタック領域のサイズ(丸めた値) */ 181 extern STK_T *const istk; /* スタック領域の先頭番地 */ 209 182 #ifdef TOPPERS_ISTKPT 210 extern STK_T *const istkpt; /* ã¹ã¿ãã¯ãã¤ã³ã¿ã®åæå¤*/183 extern STK_T *const istkpt; /* スタックポインタの初期値 */ 211 184 #endif /* TOPPERS_ISTKPT */ 212 185 213 186 /* 214 * ã«ã¼ãã«ãå²ãä»ããã¡ã¢ãªé åï¼kernel_cfg.cï¼ 215 */ 216 extern const size_t kmmsz; /* ã«ã¼ãã«ãå²ãä»ããã¡ã¢ãªé åã®ãµã¤ãº */ 217 extern MB_T *const kmm; /* ã«ã¼ãã«ãå²ãä»ããã¡ã¢ãªé åã®å 218 é çªå° */ 219 220 /* 221 * ã«ã¼ãã«åä½ç¶æ 222 ãã©ã°ï¼startup.cï¼ 187 * カーネルが割り付けるメモリ領域(kernel_cfg.c) 188 */ 189 extern const size_t kmmsz; /* カーネルが割り付けるメモリ領域のサイズ */ 190 extern MB_T *const kmm; /* カーネルが割り付けるメモリ領域の先頭番地 */ 191 192 /* 193 * カーネル動作状態フラグ(startup.c) 223 194 */ 224 195 extern bool_t kerflg; 225 196 226 197 /* 227 * ã«ã¼ãã«ã®èµ·åï¼startup.cï¼198 * カーネルの起動(startup.c) 228 199 */ 229 200 extern void sta_ker(void); 230 201 231 202 /* 232 * ã«ã¼ãã«ã®çµäºå¦çï¼startup.cï¼203 * カーネルの終了処理(startup.c) 233 204 */ 234 205 extern void exit_kernel(void); 235 206 236 207 /* 237 * ã«ã¼ãã«ã®å²ãä»ããã¡ã¢ãªé åã®ç®¡çï¼startup.cï¼208 * カーネルの割り付けるメモリ領域の管理(startup.c) 238 209 */ 239 210 extern void initialize_kmm(void); … … 242 213 243 214 /* 244 * éç¥ãã³ãã©ã®åå®ç¾©215 * 通知ハンドラの型定義 245 216 */ 246 217 typedef void (*NFYHDR)(intptr_t exinf); 247 218 248 219 /* 249 * éç¥æ¹æ³ã®ã¨ã©ã¼ãã§ãã¯220 * 通知方法のエラーチェック 250 221 */ 251 222 extern ER check_nfyinfo(const T_NFYINFO *p_nfyinfo); 252 223 253 224 /* 254 * éç¥ãã³ãã©225 * 通知ハンドラ 255 226 */ 256 227 extern void notify_handler(intptr_t exinf);
Note:
See TracChangeset
for help on using the changeset viewer.