Changeset 318 for asp3_gr_sakura/trunk/include/kernel.h
- Timestamp:
- Aug 3, 2017, 10:46:41 PM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
asp3_gr_sakura/trunk/include/kernel.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 責ãããã¨ï¼ 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 * 免責すること. 47 33 * 48 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 49 ã 50 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 51 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 52 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 53 * ã®è²¬ä»»ãè² ããªãï¼ 34 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 35 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 36 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 37 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 38 * の責任を負わない. 54 39 * 55 40 * $Id$ … … 57 42 58 43 /* 59 * TOPPERS/ASP ã«ã¼ãã« æ¨æºããããã¡ã¤ã«44 * TOPPERS/ASPカーネル 標準ヘッダファイル 60 45 * 61 * TOPPERS/ASPã«ã¼ãã«ããµãã¼ããããµã¼ãã¹ã³ã¼ã«ã®å®£è¨ã¨ï¼å¿ 62 è¦ãªãã¼ 63 * ã¿åï¼å®æ°ï¼ãã¯ãã®å®ç¾©ãå«ãããããã¡ã¤ã«ï¼ 46 * TOPPERS/ASPカーネルがサポートするサービスコールの宣言と,必要なデー 47 * タ型,定数,マクロの定義を含むヘッダファイル. 64 48 * 65 * ã¢ã»ã³ããªè¨èªã®ã½ã¼ã¹ãã¡ã¤ã«ãããã®ãã¡ã¤ã«ãã¤ã³ã¯ã«ã¼ãããæ66 * ã¯ï¼TOPPERS_MACRO_ONLYãå®ç¾©ãã¦ããï¼ããã«ããï¼ãã¯ãå®ç¾©ä»¥å¤ã67 * é¤ãããã«ãªã£ã¦ããï¼49 * アセンブリ言語のソースファイルからこのファイルをインクルードする時 50 * は,TOPPERS_MACRO_ONLYを定義しておく.これにより,マクロ定義以外を 51 * 除くようになっている. 68 52 */ 69 53 … … 76 60 77 61 /* 78 * TOPPERSå 79 ±éã®ãã¼ã¿åã»å®æ°ã»ãã¯ã 62 * TOPPERS共通のデータ型・定数・マクロ 80 63 */ 81 64 #include <t_stddef.h> 82 65 83 66 /* 84 * ã¿ã¼ã²ããä¾åé¨67 * ターゲット依存部 85 68 */ 86 69 #include "target_kernel.h" 87 70 88 71 /* 89 * ãµãã¼ãããæ©è½72 * サポートする機能 90 73 */ 91 74 #ifdef TOPPERS_TARGET_SUPPORT_DIS_INT 92 #define TOPPERS_SUPPORT_DIS_INT /* dis_int ããµãã¼ãããã¦ãã*/75 #define TOPPERS_SUPPORT_DIS_INT /* dis_intがサポートされている */ 93 76 #endif /* TOPPERS_TARGET_SUPPORT_DIS_INT */ 94 77 95 78 #ifdef TOPPERS_TARGET_SUPPORT_ENA_INT 96 #define TOPPERS_SUPPORT_ENA_INT /* ena_int ããµãã¼ãããã¦ãã*/79 #define TOPPERS_SUPPORT_ENA_INT /* ena_intがサポートされている */ 97 80 #endif /* TOPPERS_TARGET_SUPPORT_ENA_INT */ 98 81 99 82 #ifdef TOPPERS_TARGET_SUPPORT_CLR_INT 100 #define TOPPERS_SUPPORT_CLR_INT /* clr_int ããµãã¼ãããã¦ãã*/83 #define TOPPERS_SUPPORT_CLR_INT /* clr_intがサポートされている */ 101 84 #endif /* TOPPERS_TARGET_SUPPORT_CLR_INT */ 102 85 103 86 #ifdef TOPPERS_TARGET_SUPPORT_RAS_INT 104 #define TOPPERS_SUPPORT_RAS_INT /* ras_int ããµãã¼ãããã¦ãã*/87 #define TOPPERS_SUPPORT_RAS_INT /* ras_intがサポートされている */ 105 88 #endif /* TOPPERS_TARGET_SUPPORT_RAS_INT */ 106 89 107 90 #ifdef TOPPERS_TARGET_SUPPORT_PRB_INT 108 #define TOPPERS_SUPPORT_PRB_INT /* prb_int ããµãã¼ãããã¦ãã*/91 #define TOPPERS_SUPPORT_PRB_INT /* prb_intがサポートされている */ 109 92 #endif /* TOPPERS_TARGET_SUPPORT_PRB_INT */ 110 93 111 94 #ifdef TOPPERS_TARGET_SUPPORT_OVRHDR 112 #define TOPPERS_SUPPORT_OVRHDR /* ãªã¼ãã©ã³ãã³ãã©æ©è½æ¡å¼µ*/95 #define TOPPERS_SUPPORT_OVRHDR /* オーバランハンドラ機能拡張 */ 113 96 #endif /* TOPPERS_TARGET_SUPPORT_OVRHDR */ 114 97 115 #define TOPPERS_SUPPORT_DYNAMIC_CRE /* åççææ©è½æ¡å¼µ*/98 #define TOPPERS_SUPPORT_DYNAMIC_CRE /* 動的生成機能拡張 */ 116 99 117 100 #ifndef TOPPERS_MACRO_ONLY 118 101 119 102 /* 120 * ãã¼ã¿åã®å®ç¾©121 */ 122 123 /* 124 * ããããã¿ã¼ã³ããªãã¸ã§ã¯ãçªå·ã®åå®ç¾©125 */ 126 typedef uint_t FLGPTN; /* ã¤ãã³ããã©ã°ã®ããããã¿ã¼ã³*/127 typedef uint_t INTNO; /* å²è¾¼ã¿çªå·*/128 typedef uint_t INHNO; /* å²è¾¼ã¿ãã³ãã©çªå·*/129 typedef uint_t EXCNO; /* CPU ä¾å¤ãã³ãã©çªå·*/130 131 /* 132 * å¦çåä½ã®åå®ç¾©103 * データ型の定義 104 */ 105 106 /* 107 * ビットパターンやオブジェクト番号の型定義 108 */ 109 typedef uint_t FLGPTN; /* イベントフラグのビットパターン */ 110 typedef uint_t INTNO; /* 割込み番号 */ 111 typedef uint_t INHNO; /* 割込みハンドラ番号 */ 112 typedef uint_t EXCNO; /* CPU例外ハンドラ番号 */ 113 114 /* 115 * 処理単位の型定義 133 116 */ 134 117 typedef void (*TASK)(intptr_t exinf); … … 142 125 143 126 /* 144 * ã¡ã¢ãªé å確ä¿ã®ããã®åå®ç¾©127 * メモリ領域確保のための型定義 145 128 */ 146 129 #ifndef TOPPERS_STK_T 147 130 #define TOPPERS_STK_T intptr_t 148 131 #endif /* TOPPERS_STK_T */ 149 typedef TOPPERS_STK_T STK_T; /* ã¹ã¿ãã¯é åã確ä¿ããããã®å*/132 typedef TOPPERS_STK_T STK_T; /* スタック領域を確保するための型 */ 150 133 151 134 #ifndef TOPPERS_MPF_T 152 135 #define TOPPERS_MPF_T intptr_t 153 136 #endif /* TOPPERS_MPF_T */ 154 typedef TOPPERS_MPF_T MPF_T; /* åºå®é·ã¡ã¢ãªãã¼ã«é åã確ä¿ããããã®å */ 155 156 /* 157 * ã¿ã¤ã ã¤ãã³ãã®éç¥æ¹æ³ã®ãã±ããå½¢å¼ã®å®ç¾© 158 */ 159 typedef struct { 160 intptr_t exinf; /* ã¿ã¤ã ã¤ãã³ããã³ãã©ã®æ¡å¼µæ 161 å ± */ 162 TMEHDR tmehdr; /* ã¿ã¤ã ã¤ãã³ããã³ãã©ã®å 163 é çªå° */ 137 typedef TOPPERS_MPF_T MPF_T; /* 固定長メモリプール領域を確保するための型 */ 138 139 /* 140 * タイムイベントの通知方法のパケット形式の定義 141 */ 142 typedef struct { 143 intptr_t exinf; /* タイムイベントハンドラの拡張情報 */ 144 TMEHDR tmehdr; /* タイムイベントハンドラの先頭番地 */ 164 145 } T_NFY_HDR; 165 146 166 147 typedef struct { 167 intptr_t *p_var; /* å¤æ°ã®çªå°*/168 intptr_t value; /* è¨å®ããå¤*/148 intptr_t *p_var; /* 変数の番地 */ 149 intptr_t value; /* 設定する値 */ 169 150 } T_NFY_VAR; 170 151 171 152 typedef struct { 172 intptr_t *p_var; /* å¤æ°ã®çªå°*/153 intptr_t *p_var; /* 変数の番地 */ 173 154 } T_NFY_IVAR; 174 155 175 156 typedef struct { 176 ID tskid; /* ã¿ã¹ã¯ID */157 ID tskid; /* タスクID */ 177 158 } T_NFY_TSK; 178 159 179 160 typedef struct { 180 ID semid; /* ã»ããã©ID */161 ID semid; /* セマフォID */ 181 162 } T_NFY_SEM; 182 163 183 164 typedef struct { 184 ID flgid; /* ã¤ãã³ããã©ã°ID */185 FLGPTN flgptn; /* ã»ããããããããã¿ã¼ã³*/165 ID flgid; /* イベントフラグID */ 166 FLGPTN flgptn; /* セットするビットパターン */ 186 167 } T_NFY_FLG; 187 168 188 169 typedef struct { 189 ID dtqid; /* ãã¼ã¿ãã¥ã¼ID */190 intptr_t data; /* éä¿¡ããå¤*/170 ID dtqid; /* データキューID */ 171 intptr_t data; /* 送信する値 */ 191 172 } T_NFY_DTQ; 192 173 193 174 typedef struct { 194 intptr_t *p_var; /* å¤æ°ã®çªå°*/175 intptr_t *p_var; /* 変数の番地 */ 195 176 } T_ENFY_VAR; 196 177 197 178 typedef struct { 198 ID dtqid; /* ãã¼ã¿ãã¥ã¼ID */179 ID dtqid; /* データキューID */ 199 180 } T_ENFY_DTQ; 200 181 201 182 typedef struct { 202 MODE nfymode; /* éç¥å¦çã¢ã¼ã */ 203 union { /* ã¿ã¤ã ã¤ãã³ãã®éç¥ã«é¢ããä»éæ 204 å ± */ 183 MODE nfymode; /* 通知処理モード */ 184 union { /* タイムイベントの通知に関する付随情報 */ 205 185 T_NFY_HDR handler; 206 186 T_NFY_VAR setvar; … … 212 192 T_NFY_DTQ snddtq; 213 193 } nfy; 214 union { /* ã¨ã©ã¼ã®éç¥ã«é¢ããä»éæ 215 å ± */ 194 union { /* エラーの通知に関する付随情報 */ 216 195 T_ENFY_VAR setvar; 217 196 T_NFY_IVAR incvar; … … 225 204 226 205 /* 227 * ãã±ããå½¢å¼ã®å®ç¾©206 * パケット形式の定義 228 207 */ 229 208 typedef struct t_ctsk { 230 ATR tskatr; /* ã¿ã¹ã¯å±æ§ */ 231 intptr_t exinf; /* ã¿ã¹ã¯ã®æ¡å¼µæ 232 å ± */ 233 TASK task; /* ã¿ã¹ã¯ã®ã¡ã¤ã³ã«ã¼ãã³ã®å 234 é çªå° */ 235 PRI itskpri; /* ã¿ã¹ã¯ã®èµ·åæåªå 236 度 */ 237 size_t stksz; /* ã¿ã¹ã¯ã®ã¹ã¿ãã¯é åã®ãµã¤ãº */ 238 STK_T *stk; /* ã¿ã¹ã¯ã®ã¹ã¿ãã¯é åã®å 239 é çªå° */ 209 ATR tskatr; /* タスク属性 */ 210 intptr_t exinf; /* タスクの拡張情報 */ 211 TASK task; /* タスクのメインルーチンの先頭番地 */ 212 PRI itskpri; /* タスクの起動時優先度 */ 213 size_t stksz; /* タスクのスタック領域のサイズ */ 214 STK_T *stk; /* タスクのスタック領域の先頭番地 */ 240 215 } T_CTSK; 241 216 242 217 typedef struct t_rtsk { 243 STAT tskstat; /* ã¿ã¹ã¯ç¶æ 244 */ 245 PRI tskpri; /* ã¿ã¹ã¯ã®ç¾å¨åªå 246 度 */ 247 PRI tskbpri; /* ã¿ã¹ã¯ã®ãã¼ã¹åªå 248 度 */ 249 STAT tskwait; /* å¾ 250 ã¡è¦å */ 251 ID wobjid; /* å¾ 252 ã¡å¯¾è±¡ã®ãªãã¸ã§ã¯ãã®ID */ 253 TMO lefttmo; /* ã¿ã¤ã ã¢ã¦ãããã¾ã§ã®æé */ 254 uint_t actcnt; /* èµ·åè¦æ±ãã¥ã¼ã¤ã³ã°æ° */ 255 uint_t wupcnt; /* èµ·åºè¦æ±ãã¥ã¼ã¤ã³ã°æ° */ 256 bool_t raster; /* ã¿ã¹ã¯çµäºè¦æ±ç¶æ 257 */ 258 bool_t dister; /* ã¿ã¹ã¯çµäºç¦æ¢ç¶æ 259 */ 218 STAT tskstat; /* タスク状態 */ 219 PRI tskpri; /* タスクの現在優先度 */ 220 PRI tskbpri; /* タスクのベース優先度 */ 221 STAT tskwait; /* 待ち要因 */ 222 ID wobjid; /* 待ち対象のオブジェクトのID */ 223 TMO lefttmo; /* タイムアウトするまでの時間 */ 224 uint_t actcnt; /* 起動要求キューイング数 */ 225 uint_t wupcnt; /* 起床要求キューイング数 */ 226 bool_t raster; /* タスク終了要求状態 */ 227 bool_t dister; /* タスク終了禁止状態 */ 260 228 } T_RTSK; 261 229 262 230 typedef struct t_csem { 263 ATR sematr; /* ã»ããã©å±æ§*/264 uint_t isemcnt; /* ã»ããã©ã®åæè³æºæ°*/265 uint_t maxsem; /* ã»ããã©ã®æ大è³æºæ°*/231 ATR sematr; /* セマフォ属性 */ 232 uint_t isemcnt; /* セマフォの初期資源数 */ 233 uint_t maxsem; /* セマフォの最大資源数 */ 266 234 } T_CSEM; 267 235 268 236 typedef struct t_rsem { 269 ID wtskid; /* ã»ããã©ã®å¾ 270 ã¡è¡åã®å 271 é ã®ã¿ã¹ã¯ã®IDçªå· */ 272 uint_t semcnt; /* ã»ããã©ã®ç¾å¨ã®è³æºæ° */ 237 ID wtskid; /* セマフォの待ち行列の先頭のタスクのID番号 */ 238 uint_t semcnt; /* セマフォの現在の資源数 */ 273 239 } T_RSEM; 274 240 275 241 typedef struct t_cflg { 276 ATR flgatr; /* ã¤ãã³ããã©ã°å±æ§*/277 FLGPTN iflgptn; /* ã¤ãã³ããã©ã°ã®åæããããã¿ã¼ã³*/242 ATR flgatr; /* イベントフラグ属性 */ 243 FLGPTN iflgptn; /* イベントフラグの初期ビットパターン */ 278 244 } T_CFLG; 279 245 280 246 typedef struct t_rflg { 281 ID wtskid; /* ã¤ãã³ããã©ã°ã®å¾ 282 ã¡è¡åã®å 283 é ã®ã¿ã¹ã¯ã®IDçªå· */ 284 FLGPTN flgptn; /* ã¤ãã³ããã©ã°ã®ç¾å¨ã®ããããã¿ã¼ã³ */ 247 ID wtskid; /* イベントフラグの待ち行列の先頭のタスクのID番号 */ 248 FLGPTN flgptn; /* イベントフラグの現在のビットパターン */ 285 249 } T_RFLG; 286 250 287 251 typedef struct t_cdtq { 288 ATR dtqatr; /* ãã¼ã¿ãã¥ã¼å±æ§ */ 289 uint_t dtqcnt; /* ãã¼ã¿ãã¥ã¼ç®¡çé åã«æ ¼ç´ã§ãããã¼ã¿æ° */ 290 void *dtqmb; /* ãã¼ã¿ãã¥ã¼ç®¡çé åã®å 291 é çªå° */ 252 ATR dtqatr; /* データキュー属性 */ 253 uint_t dtqcnt; /* データキュー管理領域に格納できるデータ数 */ 254 void *dtqmb; /* データキュー管理領域の先頭番地 */ 292 255 } T_CDTQ; 293 256 294 257 typedef struct t_rdtq { 295 ID stskid; /* ãã¼ã¿ãã¥ã¼ã®éä¿¡å¾ 296 ã¡è¡åã®å 297 é ã®ã¿ã¹ã¯ã®IDçªå· */ 298 ID rtskid; /* ãã¼ã¿ãã¥ã¼ã®åä¿¡å¾ 299 ã¡è¡åã®å 300 é ã®ã¿ã¹ã¯ã®IDçªå· */ 301 uint_t sdtqcnt; /* ãã¼ã¿ãã¥ã¼ç®¡çé åã«æ ¼ç´ããã¦ãããã¼ã¿ã®æ° */ 258 ID stskid; /* データキューの送信待ち行列の先頭のタスクのID番号 */ 259 ID rtskid; /* データキューの受信待ち行列の先頭のタスクのID番号 */ 260 uint_t sdtqcnt; /* データキュー管理領域に格納されているデータの数 */ 302 261 } T_RDTQ; 303 262 304 263 typedef struct t_cpdq { 305 ATR pdqatr; /* åªå 306 度ãã¼ã¿ãã¥ã¼å±æ§ */ 307 uint_t pdqcnt; /* åªå 308 度ãã¼ã¿ãã¥ã¼ç®¡çé åã«æ ¼ç´ã§ãããã¼ã¿æ° */ 309 PRI maxdpri; /* åªå 310 度ãã¼ã¿ãã¥ã¼ã«éä¿¡ã§ãããã¼ã¿åªå 311 度ã®æ 312 å¤§å¤ */ 313 void *pdqmb; /* åªå 314 度ãã¼ã¿ãã¥ã¼ç®¡çé åã®å 315 é çªå° */ 264 ATR pdqatr; /* 優先度データキュー属性 */ 265 uint_t pdqcnt; /* 優先度データキュー管理領域に格納できるデータ数 */ 266 PRI maxdpri; /* 優先度データキューに送信できるデータ優先度の最 267 大値 */ 268 void *pdqmb; /* 優先度データキュー管理領域の先頭番地 */ 316 269 } T_CPDQ; 317 270 318 271 typedef struct t_rpdq { 319 ID stskid; /* åªå 320 度ãã¼ã¿ãã¥ã¼ã®éä¿¡å¾ 321 ã¡è¡åã®å 322 é ã®ã¿ã¹ã¯ 323 ã®IDçªå· */ 324 ID rtskid; /* åªå 325 度ãã¼ã¿ãã¥ã¼ã®åä¿¡å¾ 326 ã¡è¡åã®å 327 é ã®ã¿ã¹ã¯ 328 ã®IDçªå· */ 329 uint_t spdqcnt; /* åªå 330 度ãã¼ã¿ãã¥ã¼ç®¡çé åã«æ ¼ç´ããã¦ãããã¼ 331 ã¿ã®æ° */ 272 ID stskid; /* 優先度データキューの送信待ち行列の先頭のタスク 273 のID番号 */ 274 ID rtskid; /* 優先度データキューの受信待ち行列の先頭のタスク 275 のID番号 */ 276 uint_t spdqcnt; /* 優先度データキュー管理領域に格納されているデー 277 タの数 */ 332 278 } T_RPDQ; 333 279 334 280 typedef struct t_cmtx { 335 ATR mtxatr; /* ãã¥ã¼ããã¯ã¹å±æ§ */ 336 PRI ceilpri; /* ãã¥ã¼ããã¯ã¹ã®ä¸éåªå 337 度 */ 281 ATR mtxatr; /* ミューテックス属性 */ 282 PRI ceilpri; /* ミューテックスの上限優先度 */ 338 283 } T_CMTX; 339 284 340 285 typedef struct t_rmtx { 341 ID htskid; /* ãã¥ã¼ããã¯ã¹ãããã¯ãã¦ããã¿ã¹ã¯ã®IDçªå· */ 342 ID wtskid; /* ãã¥ã¼ããã¯ã¹ã®å¾ 343 ã¡è¡åã®å 344 é ã®ã¿ã¹ã¯ã®IDçªå· */ 286 ID htskid; /* ミューテックスをロックしているタスクのID番号 */ 287 ID wtskid; /* ミューテックスの待ち行列の先頭のタスクのID番号 */ 345 288 } T_RMTX; 346 289 347 290 typedef struct t_cmpf { 348 ATR mpfatr; /* åºå®é·ã¡ã¢ãªãã¼ã«å±æ§ */ 349 uint_t blkcnt; /* ç²å¾ã§ããåºå®é·ã¡ã¢ãªãããã¯ã®æ° */ 350 uint_t blksz; /* åºå®é·ã¡ã¢ãªãããã¯ã®ãµã¤ãº */ 351 MPF_T *mpf; /* åºå®é·ã¡ã¢ãªãã¼ã«é åã®å 352 é çªå° */ 353 void *mpfmb; /* åºå®é·ã¡ã¢ãªãã¼ã«ç®¡çé åã®å 354 é çªå° */ 291 ATR mpfatr; /* 固定長メモリプール属性 */ 292 uint_t blkcnt; /* 獲得できる固定長メモリブロックの数 */ 293 uint_t blksz; /* 固定長メモリブロックのサイズ */ 294 MPF_T *mpf; /* 固定長メモリプール領域の先頭番地 */ 295 void *mpfmb; /* 固定長メモリプール管理領域の先頭番地 */ 355 296 } T_CMPF; 356 297 357 298 typedef struct t_rmpf { 358 ID wtskid; /* åºå®é·ã¡ã¢ãªãã¼ã«ã®å¾ 359 ã¡è¡åã®å 360 é ã®ã¿ã¹ã¯ã® 361 IDçªå· */ 362 uint_t fblkcnt; /* åºå®é·ã¡ã¢ãªãã¼ã«é åã®ç©ºãã¡ã¢ãªé åã«å²ã 363 ä»ãããã¨ãã§ããåºå®é·ã¡ã¢ãªãããã¯ã®æ° */ 299 ID wtskid; /* 固定長メモリプールの待ち行列の先頭のタスクの 300 ID番号 */ 301 uint_t fblkcnt; /* 固定長メモリプール領域の空きメモリ領域に割り 302 付けることができる固定長メモリブロックの数 */ 364 303 } T_RMPF; 365 304 366 305 typedef struct t_ccyc { 367 ATR cycatr; /* å¨æéç¥å±æ§*/368 T_NFYINFO nfyinfo; /* å¨æéç¥ã®éç¥æ¹æ³*/369 RELTIM cyctim; /* å¨æéç¥ã®éç¥å¨æ*/370 RELTIM cycphs; /* å¨æéç¥ã®éç¥ä½ç¸*/306 ATR cycatr; /* 周期通知属性 */ 307 T_NFYINFO nfyinfo; /* 周期通知の通知方法 */ 308 RELTIM cyctim; /* 周期通知の通知周期 */ 309 RELTIM cycphs; /* 周期通知の通知位相 */ 371 310 } T_CCYC; 372 311 373 312 typedef struct t_rcyc { 374 STAT cycstat; /* å¨æéç¥ã®åä½ç¶æ 375 */ 376 RELTIM lefttim; /* 次åéç¥æå»ã¾ã§ã®ç¸å¯¾æé */ 313 STAT cycstat; /* 周期通知の動作状態 */ 314 RELTIM lefttim; /* 次回通知時刻までの相対時間 */ 377 315 } T_RCYC; 378 316 379 317 typedef struct t_calm { 380 ATR almatr; /* ã¢ã©ã¼ã éç¥å±æ§*/381 T_NFYINFO nfyinfo; /* ã¢ã©ã¼ã éç¥ã®éç¥æ¹æ³*/318 ATR almatr; /* アラーム通知属性 */ 319 T_NFYINFO nfyinfo; /* アラーム通知の通知方法 */ 382 320 } T_CALM; 383 321 384 322 typedef struct t_ralm { 385 STAT almstat; /* ã¢ã©ã¼ã éç¥ã®åä½ç¶æ 386 */ 387 RELTIM lefttim; /* éç¥æå»ã¾ã§ã®ç¸å¯¾æé */ 323 STAT almstat; /* アラーム通知の動作状態 */ 324 RELTIM lefttim; /* 通知時刻までの相対時間 */ 388 325 } T_RALM; 389 326 390 327 typedef struct t_rovr { 391 STAT ovrstat; /* ãªã¼ãã©ã³ãã³ãã©ã®åä½ç¶æ 392 */ 393 PRCTIM leftotm; /* æ®ãããã»ããµæé */ 328 STAT ovrstat; /* オーバランハンドラの動作状態 */ 329 PRCTIM leftotm; /* 残りプロセッサ時間 */ 394 330 } T_ROVR; 395 331 396 332 typedef struct t_cisr { 397 ATR isratr; /* å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³å±æ§ */ 398 intptr_t exinf; /* å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³ã®æ¡å¼µæ 399 å ± */ 400 INTNO intno; /* å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³ãç»é²ããå²è¾¼ã¿çªå· */ 401 ISR isr; /* å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³ã®å 402 é çªå° */ 403 PRI isrpri; /* å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³åªå 404 度 */ 333 ATR isratr; /* 割込みサービスルーチン属性 */ 334 intptr_t exinf; /* 割込みサービスルーチンの拡張情報 */ 335 INTNO intno; /* 割込みサービスルーチンを登録する割込み番号 */ 336 ISR isr; /* 割込みサービスルーチンの先頭番地 */ 337 PRI isrpri; /* 割込みサービスルーチン優先度 */ 405 338 } T_CISR; 406 339 407 340 /* 408 * ãµã¼ãã¹ã³ã¼ã«ã®å®£è¨409 */ 410 411 /* 412 * ã¿ã¹ã¯ç®¡çæ©è½341 * サービスコールの宣言 342 */ 343 344 /* 345 * タスク管理機能 413 346 */ 414 347 extern ER_UINT acre_tsk(const T_CTSK *pk_ctsk) throw(); … … 423 356 424 357 /* 425 * ã¿ã¹ã¯ä»å±åææ©è½358 * タスク付属同期機能 426 359 */ 427 360 extern ER slp_tsk(void) throw(); … … 435 368 436 369 /* 437 * ã¿ã¹ã¯çµäºæ©è½370 * タスク終了機能 438 371 */ 439 372 extern ER ext_tsk(void) throw(); … … 445 378 446 379 /* 447 * åæã»éä¿¡æ©è½380 * 同期・通信機能 448 381 */ 449 382 extern ER_ID acre_sem(const T_CSEM *pk_csem) throw(); … … 504 437 505 438 /* 506 * ã¡ã¢ãªãã¼ã«ç®¡çæ©è½439 * メモリプール管理機能 507 440 */ 508 441 extern ER_ID acre_mpf(const T_CMPF *pk_cmpf) throw(); … … 516 449 517 450 /* 518 * æé管çæ©è½451 * 時間管理機能 519 452 */ 520 453 extern ER set_tim(SYSTIM systim) throw(); … … 540 473 541 474 /* 542 * ã·ã¹ãã ç¶æ 543 管çæ©è½ 475 * システム状態管理機能 544 476 */ 545 477 extern ER rot_rdq(PRI tskpri) throw(); … … 559 491 560 492 /* 561 * å²è¾¼ã¿ç®¡çæ©è½493 * 割込み管理機能 562 494 */ 563 495 extern ER_ID acre_isr(const T_CISR *pk_cisr) throw(); … … 572 504 573 505 /* 574 * CPU ä¾å¤ç®¡çæ©è½506 * CPU例外管理機能 575 507 */ 576 508 extern bool_t xsns_dpn(void *p_excinf) throw(); … … 579 511 580 512 /* 581 * éã¿ã¹ã¯ã³ã³ããã¹ãããå¼ã³åºãããµã¼ãã¹ã³ã¼ã«513 * 非タスクコンテキストから呼び出せるサービスコール 582 514 */ 583 515 #define iact_tsk(tskid) act_tsk(tskid) … … 613 545 614 546 /* 615 * ãªãã¸ã§ã¯ãå±æ§ã®å®ç¾© 616 */ 617 #define TA_ACT UINT_C(0x01) /* ã¿ã¹ã¯ãèµ·åãããç¶æ 618 ã§çæ */ 619 #define TA_NOACTQUE UINT_C(0x02) /* èµ·åè¦æ±ããã¥ã¼ã¤ã³ã°ããªã */ 620 621 #define TA_TPRI UINT_C(0x01) /* ã¿ã¹ã¯ã®å¾ 622 ã¡è¡åãåªå 623 度é ã« */ 624 625 #define TA_WMUL UINT_C(0x02) /* è¤æ°ã®å¾ 626 ã¡ã¿ã¹ã¯ */ 627 #define TA_CLR UINT_C(0x04) /* ã¤ãã³ããã©ã°ã®ã¯ãªã¢æå® */ 628 629 #define TA_CEILING UINT_C(0x03) /* åªå 630 度ä¸éãããã³ã« */ 631 632 #define TA_STA UINT_C(0x02) /* å¨æéç¥ãåä½ç¶æ 633 ã§çæ */ 634 635 #define TA_NONKERNEL UINT_C(0x02) /* ã«ã¼ãã«ç®¡çå¤ã®å²è¾¼ã¿ */ 636 637 #define TA_ENAINT UINT_C(0x01) /* å²è¾¼ã¿è¦æ±ç¦æ¢ãã©ã°ãã¯ãªã¢ */ 638 #define TA_EDGE UINT_C(0x02) /* ã¨ãã¸ããªã¬ */ 639 640 /* 641 * ãµã¼ãã¹ã³ã¼ã«ã®åä½ã¢ã¼ãã®å®ç¾© 642 */ 643 #define TWF_ORW UINT_C(0x01) /* ã¤ãã³ããã©ã°ã®ORå¾ 644 ã¡ */ 645 #define TWF_ANDW UINT_C(0x02) /* ã¤ãã³ããã©ã°ã®ANDå¾ 646 ã¡ */ 647 648 /* 649 * éç¥å¦çã¢ã¼ãã®å®ç¾© 650 */ 651 #define TNFY_HANDLER UINT_C(0x00) /* ã¿ã¤ã ã¤ãã³ããã³ãã©ã®å¼åºã */ 652 #define TNFY_SETVAR UINT_C(0x01) /* å¤æ°ã®è¨å® */ 653 #define TNFY_INCVAR UINT_C(0x02) /* å¤æ°ã®ã¤ã³ã¯ãªã¡ã³ã */ 654 #define TNFY_ACTTSK UINT_C(0x03) /* ã¿ã¹ã¯ã®èµ·å */ 655 #define TNFY_WUPTSK UINT_C(0x04) /* ã¿ã¹ã¯ã®èµ·åº */ 656 #define TNFY_SIGSEM UINT_C(0x05) /* ã»ããã©ã®è³æºã®è¿å´ */ 657 #define TNFY_SETFLG UINT_C(0x06) /* ã¤ãã³ããã©ã°ã®ã»ãã */ 658 #define TNFY_SNDDTQ UINT_C(0x07) /* ãã¼ã¿ãã¥ã¼ã¸ã®éä¿¡ */ 659 660 #define TENFY_SETVAR UINT_C(0x10) /* å¤æ°ã®è¨å® */ 661 #define TENFY_INCVAR UINT_C(0x20) /* å¤æ°ã®ã¤ã³ã¯ãªã¡ã³ã */ 662 #define TENFY_ACTTSK UINT_C(0x30) /* ã¿ã¹ã¯ã®èµ·å */ 663 #define TENFY_WUPTSK UINT_C(0x40) /* ã¿ã¹ã¯ã®èµ·åº */ 664 #define TENFY_SIGSEM UINT_C(0x50) /* ã»ããã©ã®è¿å´ */ 665 #define TENFY_SETFLG UINT_C(0x60) /* ã¤ãã³ããã©ã°ã®ã»ãã */ 666 #define TENFY_SNDDTQ UINT_C(0x70) /* ãã¼ã¿ãã¥ã¼ã¸ã®éä¿¡ */ 667 668 /* 669 * ãªãã¸ã§ã¯ãã®ç¶æ 670 ã®å®ç¾© 671 */ 672 #define TTS_RUN UINT_C(0x01) /* å®è¡ç¶æ 673 */ 674 #define TTS_RDY UINT_C(0x02) /* å®è¡å¯è½ç¶æ 675 */ 676 #define TTS_WAI UINT_C(0x04) /* å¾ 677 ã¡ç¶æ 678 */ 679 #define TTS_SUS UINT_C(0x08) /* å¼·å¶å¾ 680 ã¡ç¶æ 681 */ 682 #define TTS_WAS UINT_C(0x0c) /* äºéå¾ 683 ã¡ç¶æ 684 */ 685 #define TTS_DMT UINT_C(0x10) /* ä¼æ¢ç¶æ 686 */ 687 688 #define TTW_SLP UINT_C(0x0001) /* èµ·åºå¾ 689 ã¡ */ 690 #define TTW_DLY UINT_C(0x0002) /* æéçµéå¾ 691 ã¡ */ 692 #define TTW_SEM UINT_C(0x0004) /* ã»ããã©ã®è³æºç²å¾å¾ 693 ã¡ */ 694 #define TTW_FLG UINT_C(0x0008) /* ã¤ãã³ããã©ã°å¾ 695 ã¡ */ 696 #define TTW_SDTQ UINT_C(0x0010) /* ãã¼ã¿ãã¥ã¼ã¸ã®éä¿¡å¾ 697 ã¡ */ 698 #define TTW_RDTQ UINT_C(0x0020) /* ãã¼ã¿ãã¥ã¼ããã®åä¿¡å¾ 699 ã¡ */ 700 #define TTW_SPDQ UINT_C(0x0100) /* åªå 701 度ãã¼ã¿ãã¥ã¼ã¸ã®éä¿¡å¾ 702 ã¡ */ 703 #define TTW_RPDQ UINT_C(0x0200) /* åªå 704 度ãã¼ã¿ãã¥ã¼ããã®åä¿¡å¾ 705 ã¡ */ 706 #define TTW_MTX UINT_C(0x0080) /* ãã¥ã¼ããã¯ã¹ã®ããã¯å¾ 707 ã¡ç¶æ 708 */ 709 #define TTW_MPF UINT_C(0x2000) /* åºå®é·ã¡ã¢ãªãããã¯ã®ç²å¾å¾ 710 ã¡ */ 711 712 #define TCYC_STP UINT_C(0x01) /* å¨æéç¥ãåä½ãã¦ããªã */ 713 #define TCYC_STA UINT_C(0x02) /* å¨æéç¥ãåä½ãã¦ãã */ 714 715 #define TALM_STP UINT_C(0x01) /* ã¢ã©ã¼ã éç¥ãåä½ãã¦ããªã */ 716 #define TALM_STA UINT_C(0x02) /* ã¢ã©ã¼ã éç¥ãåä½ãã¦ãã */ 717 718 #define TOVR_STP UINT_C(0x01) /* ãªã¼ãã©ã³ãã³ãã©ãåä½ãã¦ããªã*/ 719 #define TOVR_STA UINT_C(0x02) /* ãªã¼ãã©ã³ãã³ãã©ãåä½ãã¦ãã */ 720 721 /* 722 * ãã®ä»ã®å®æ°ã®å®ç¾© 723 */ 724 #define TSK_SELF 0 /* èªã¿ã¹ã¯æå® */ 725 #define TSK_NONE 0 /* 該å½ããã¿ã¹ã¯ããªã */ 726 727 #define TPRI_SELF 0 /* èªã¿ã¹ã¯ã®ãã¼ã¹åªå 728 度 */ 729 #define TPRI_INI 0 /* ã¿ã¹ã¯ã®èµ·åæåªå 730 度 */ 731 732 #define TIPM_ENAALL 0 /* å²è¾¼ã¿åªå 733 度ãã¹ã¯å 734 ¨è§£é¤ */ 735 736 /* 737 * æ§æå®æ°ã¨ãã¯ã 738 */ 739 740 /* 741 * åªå 742 度ã®ç¯å² 743 */ 744 #define TMIN_TPRI 1 /* ã¿ã¹ã¯åªå 745 度ã®æå°å¤ï¼æé«å¤ï¼*/ 746 #define TMAX_TPRI 16 /* ã¿ã¹ã¯åªå 747 度ã®æ大å¤ï¼æä½å¤ï¼*/ 748 #define TMIN_DPRI 1 /* ãã¼ã¿åªå 749 度ã®æå°å¤ï¼æé«å¤ï¼*/ 750 #define TMAX_DPRI 16 /* ãã¼ã¿åªå 751 度ã®æ大å¤ï¼æä½å¤ï¼*/ 752 #define TMIN_ISRPRI 1 /* å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³åªå 753 度ã®æå°å¤ */ 754 #define TMAX_ISRPRI 16 /* å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³åªå 755 度ã®æå¤§å¤ */ 756 757 /* 758 * ãã¼ã¸ã§ã³æ 759 å ± 760 */ 761 #define TKERNEL_MAKER UINT_C(0x0118) /* ã«ã¼ãã«ã®ã¡ã¼ã«ã¼ã³ã¼ã */ 762 #define TKERNEL_PRID UINT_C(0x0007) /* ã«ã¼ãã«ã®èå¥çªå· */ 763 #define TKERNEL_SPVER UINT_C(0xf631) /* ã«ã¼ãã«ä»æ§ã®ãã¼ã¸ã§ã³çªå· */ 764 #define TKERNEL_PRVER UINT_C(0x3020) /* ã«ã¼ãã«ã®ãã¼ã¸ã§ã³çªå· */ 765 766 /* 767 * ãã¥ã¼ã¤ã³ã°åæ°ã®æå¤§å¤ 768 */ 769 #define TMAX_ACTCNT UINT_C(1) /* èµ·åè¦æ±ãã¥ã¼ã¤ã³ã°æ°ã®æå¤§å¤ */ 770 #define TMAX_WUPCNT UINT_C(1) /* èµ·åºè¦æ±ãã¥ã¼ã¤ã³ã°æ°ã®æå¤§å¤ */ 771 772 /* 773 * ããããã¿ã¼ã³ã®ãããæ° 774 */ 775 #ifndef TBIT_FLGPTN /* ã¤ãã³ããã©ã°ã®ãããæ° */ 547 * オブジェクト属性の定義 548 */ 549 #define TA_ACT UINT_C(0x01) /* タスクを起動された状態で生成 */ 550 #define TA_NOACTQUE UINT_C(0x02) /* 起動要求をキューイングしない */ 551 552 #define TA_TPRI UINT_C(0x01) /* タスクの待ち行列を優先度順に */ 553 554 #define TA_WMUL UINT_C(0x02) /* 複数の待ちタスク */ 555 #define TA_CLR UINT_C(0x04) /* イベントフラグのクリア指定 */ 556 557 #define TA_CEILING UINT_C(0x03) /* 優先度上限プロトコル */ 558 559 #define TA_STA UINT_C(0x02) /* 周期通知を動作状態で生成 */ 560 561 #define TA_NONKERNEL UINT_C(0x02) /* カーネル管理外の割込み */ 562 563 #define TA_ENAINT UINT_C(0x01) /* 割込み要求禁止フラグをクリア */ 564 #define TA_EDGE UINT_C(0x02) /* エッジトリガ */ 565 566 /* 567 * サービスコールの動作モードの定義 568 */ 569 #define TWF_ORW UINT_C(0x01) /* イベントフラグのOR待ち */ 570 #define TWF_ANDW UINT_C(0x02) /* イベントフラグのAND待ち */ 571 572 /* 573 * 通知処理モードの定義 574 */ 575 #define TNFY_HANDLER UINT_C(0x00) /* タイムイベントハンドラの呼出し */ 576 #define TNFY_SETVAR UINT_C(0x01) /* 変数の設定 */ 577 #define TNFY_INCVAR UINT_C(0x02) /* 変数のインクリメント */ 578 #define TNFY_ACTTSK UINT_C(0x03) /* タスクの起動 */ 579 #define TNFY_WUPTSK UINT_C(0x04) /* タスクの起床 */ 580 #define TNFY_SIGSEM UINT_C(0x05) /* セマフォの資源の返却 */ 581 #define TNFY_SETFLG UINT_C(0x06) /* イベントフラグのセット */ 582 #define TNFY_SNDDTQ UINT_C(0x07) /* データキューへの送信 */ 583 584 #define TENFY_SETVAR UINT_C(0x10) /* 変数の設定 */ 585 #define TENFY_INCVAR UINT_C(0x20) /* 変数のインクリメント */ 586 #define TENFY_ACTTSK UINT_C(0x30) /* タスクの起動 */ 587 #define TENFY_WUPTSK UINT_C(0x40) /* タスクの起床 */ 588 #define TENFY_SIGSEM UINT_C(0x50) /* セマフォの返却 */ 589 #define TENFY_SETFLG UINT_C(0x60) /* イベントフラグのセット */ 590 #define TENFY_SNDDTQ UINT_C(0x70) /* データキューへの送信 */ 591 592 /* 593 * オブジェクトの状態の定義 594 */ 595 #define TTS_RUN UINT_C(0x01) /* 実行状態 */ 596 #define TTS_RDY UINT_C(0x02) /* 実行可能状態 */ 597 #define TTS_WAI UINT_C(0x04) /* 待ち状態 */ 598 #define TTS_SUS UINT_C(0x08) /* 強制待ち状態 */ 599 #define TTS_WAS UINT_C(0x0c) /* 二重待ち状態 */ 600 #define TTS_DMT UINT_C(0x10) /* 休止状態 */ 601 602 #define TTW_SLP UINT_C(0x0001) /* 起床待ち */ 603 #define TTW_DLY UINT_C(0x0002) /* 時間経過待ち */ 604 #define TTW_SEM UINT_C(0x0004) /* セマフォの資源獲得待ち */ 605 #define TTW_FLG UINT_C(0x0008) /* イベントフラグ待ち */ 606 #define TTW_SDTQ UINT_C(0x0010) /* データキューへの送信待ち */ 607 #define TTW_RDTQ UINT_C(0x0020) /* データキューからの受信待ち */ 608 #define TTW_SPDQ UINT_C(0x0100) /* 優先度データキューへの送信待ち */ 609 #define TTW_RPDQ UINT_C(0x0200) /* 優先度データキューからの受信待ち */ 610 #define TTW_MTX UINT_C(0x0080) /* ミューテックスのロック待ち状態 */ 611 #define TTW_MPF UINT_C(0x2000) /* 固定長メモリブロックの獲得待ち */ 612 613 #define TCYC_STP UINT_C(0x01) /* 周期通知が動作していない */ 614 #define TCYC_STA UINT_C(0x02) /* 周期通知が動作している */ 615 616 #define TALM_STP UINT_C(0x01) /* アラーム通知が動作していない */ 617 #define TALM_STA UINT_C(0x02) /* アラーム通知が動作している */ 618 619 #define TOVR_STP UINT_C(0x01) /* オーバランハンドラが動作していない*/ 620 #define TOVR_STA UINT_C(0x02) /* オーバランハンドラが動作している */ 621 622 /* 623 * その他の定数の定義 624 */ 625 #define TSK_SELF 0 /* 自タスク指定 */ 626 #define TSK_NONE 0 /* 該当するタスクがない */ 627 628 #define TPRI_SELF 0 /* 自タスクのベース優先度 */ 629 #define TPRI_INI 0 /* タスクの起動時優先度 */ 630 631 #define TIPM_ENAALL 0 /* 割込み優先度マスク全解除 */ 632 633 /* 634 * 構成定数とマクロ 635 */ 636 637 /* 638 * 優先度の範囲 639 */ 640 #define TMIN_TPRI 1 /* タスク優先度の最小値(最高値)*/ 641 #define TMAX_TPRI 16 /* タスク優先度の最大値(最低値)*/ 642 #define TMIN_DPRI 1 /* データ優先度の最小値(最高値)*/ 643 #define TMAX_DPRI 16 /* データ優先度の最大値(最低値)*/ 644 #define TMIN_ISRPRI 1 /* 割込みサービスルーチン優先度の最小値 */ 645 #define TMAX_ISRPRI 16 /* 割込みサービスルーチン優先度の最大値 */ 646 647 /* 648 * バージョン情報 649 */ 650 #define TKERNEL_MAKER UINT_C(0x0118) /* カーネルのメーカーコード */ 651 #define TKERNEL_PRID UINT_C(0x0007) /* カーネルの識別番号 */ 652 #define TKERNEL_SPVER UINT_C(0xf631) /* カーネル仕様のバージョン番号 */ 653 #define TKERNEL_PRVER UINT_C(0x3020) /* カーネルのバージョン番号 */ 654 655 /* 656 * キューイング回数の最大値 657 */ 658 #define TMAX_ACTCNT UINT_C(1) /* 起動要求キューイング数の最大値 */ 659 #define TMAX_WUPCNT UINT_C(1) /* 起床要求キューイング数の最大値 */ 660 661 /* 662 * ビットパターンのビット数 663 */ 664 #ifndef TBIT_FLGPTN /* イベントフラグのビット数 */ 776 665 #define TBIT_FLGPTN (sizeof(FLGPTN) * CHAR_BIT) 777 666 #endif /* TBIT_FLGPTN */ 778 667 779 668 /* 780 * ã·ã¹ãã æå»ã®èª¿æ´ã§ããç¯å²ï¼åä½ï¼Î¼ç§ï¼781 */ 782 #define TMIN_ADJTIM -1000000 /* ã·ã¹ãã æå»ã®æå°èª¿æ´æé*/783 #define TMAX_ADJTIM 1000000 /* ã·ã¹ãã æå»ã®æ大調æ´æé*/784 785 /* 786 * ãªã¼ãã©ã³ãã³ãã©ã®æ®ãããã»ããµæéã®æ大å¤ï¼åä½ï¼Î¼ç§ï¼669 * システム時刻の調整できる範囲(単位:μ秒) 670 */ 671 #define TMIN_ADJTIM -1000000 /* システム時刻の最小調整時間 */ 672 #define TMAX_ADJTIM 1000000 /* システム時刻の最大調整時間 */ 673 674 /* 675 * オーバランハンドラの残りプロセッサ時間の最大値(単位:μ秒) 787 676 */ 788 677 #ifndef TMAX_OVRTIM … … 791 680 792 681 /* 793 * ã¡ã¢ãªé å確ä¿ã®ããã®ãã¯ã682 * メモリ領域確保のためのマクロ 794 683 * 795 * 以ä¸ã®TOPPERS_COUNT_SZã¨TOPPERS_ROUND_SZã®å®ç¾©ã¯ï¼unitã2ã®å·¾ä¹ã§ã796 * ããã¨ãä»®å®ãã¦ããï¼684 * 以下のTOPPERS_COUNT_SZとTOPPERS_ROUND_SZの定義は,unitが2の巾乗であ 685 * ることを仮定している. 797 686 */ 798 687 #ifndef TOPPERS_COUNT_SZ … … 821 710 822 711 /* 823 * ãã®ä»ã®æ§æå®æ°824 */ 825 #define TMAX_MAXSEM UINT_MAX /* ã»ããã©ã®æ大è³æºæ°ã®æ大å¤*/712 * その他の構成定数 713 */ 714 #define TMAX_MAXSEM UINT_MAX /* セマフォの最大資源数の最大値 */ 826 715 827 716 #ifdef __cplusplus
Note:
See TracChangeset
for help on using the changeset viewer.