Changeset 315 for rubycfg_asp/trunk/asp_dcre/include/kernel.h
- Timestamp:
- Jul 23, 2017, 2:29:40 PM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
rubycfg_asp/trunk/asp_dcre/include/kernel.h
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr; charset=UTF-8
r313 r315 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 * ãã®ãã¡ã¤ã«ãã¤ã³ã¯ã«ã¼ãããåã«ã¤ã³ã¯ã«ã¼ããã¦ããã¹ããã¡ã¤ã«70 * ã¯ãªãï¼53 * このファイルをインクルードする前にインクルードしておくべきファイル 54 * はない. 71 55 */ 72 56 … … 79 63 80 64 /* 81 * TOPPERSå 82 ±éã®ãã¼ã¿åã»å®æ°ã»ãã¯ã 65 * TOPPERS共通のデータ型・定数・マクロ 83 66 */ 84 67 #include <t_stddef.h> 85 68 86 69 /* 87 * ã¿ã¼ã²ããä¾åé¨70 * ターゲット依存部 88 71 */ 89 72 #include "target_kernel.h" … … 92 75 93 76 /* 94 * ãã¼ã¿åã®å®ç¾©95 */ 96 97 /* 98 * ããããã¿ã¼ã³ããªãã¸ã§ã¯ãçªå·ã®åå®ç¾©99 */ 100 typedef uint_t TEXPTN; /* ã¿ã¹ã¯ä¾å¤è¦å ã®ããããã¿ã¼ã³*/101 typedef uint_t FLGPTN; /* ã¤ãã³ããã©ã°ã®ããããã¿ã¼ã³*/102 typedef uint_t INTNO; /* å²è¾¼ã¿çªå·*/103 typedef uint_t INHNO; /* å²è¾¼ã¿ãã³ãã©çªå·*/104 typedef uint_t EXCNO; /* CPU ä¾å¤ãã³ãã©çªå·*/105 106 /* 107 * å¦çåä½ã®åå®ç¾©77 * データ型の定義 78 */ 79 80 /* 81 * ビットパターンやオブジェクト番号の型定義 82 */ 83 typedef uint_t TEXPTN; /* タスク例外要因のビットパターン */ 84 typedef uint_t FLGPTN; /* イベントフラグのビットパターン */ 85 typedef uint_t INTNO; /* 割込み番号 */ 86 typedef uint_t INHNO; /* 割込みハンドラ番号 */ 87 typedef uint_t EXCNO; /* CPU例外ハンドラ番号 */ 88 89 /* 90 * 処理単位の型定義 108 91 */ 109 92 typedef void (*TASK)(intptr_t exinf); … … 118 101 119 102 /* 120 * ã¡ã¢ãªé å確ä¿ã®ããã®åå®ç¾©103 * メモリ領域確保のための型定義 121 104 */ 122 105 #ifndef TOPPERS_STK_T 123 106 #define TOPPERS_STK_T intptr_t 124 107 #endif /* TOPPERS_STK_T */ 125 typedef TOPPERS_STK_T STK_T; /* ã¹ã¿ãã¯é åã確ä¿ããããã®å*/108 typedef TOPPERS_STK_T STK_T; /* スタック領域を確保するための型 */ 126 109 127 110 #ifndef TOPPERS_MPF_T 128 111 #define TOPPERS_MPF_T intptr_t 129 112 #endif /* TOPPERS_MPF_T */ 130 typedef TOPPERS_MPF_T MPF_T; /* åºå®é·ã¡ã¢ãªãã¼ã«é åã確ä¿ããããã®å*/131 132 /* 133 * ã¡ãã»ã¼ã¸ãããã®åå®ç¾©134 */ 135 typedef struct t_msg { /* ã¡ã¼ã«ããã¯ã¹ã®ã¡ãã»ã¼ã¸ããã*/113 typedef TOPPERS_MPF_T MPF_T; /* 固定長メモリプール領域を確保するための型 */ 114 115 /* 116 * メッセージヘッダの型定義 117 */ 118 typedef struct t_msg { /* メールボックスのメッセージヘッダ */ 136 119 struct t_msg *pk_next; 137 120 } T_MSG; 138 121 139 typedef struct t_msg_pri { /* åªå 140 度ä»ãã¡ãã»ã¼ã¸ããã */ 141 T_MSG msgque; /* ã¡ãã»ã¼ã¸ããã */ 142 PRI msgpri; /* ã¡ãã»ã¼ã¸åªå 143 度 */ 122 typedef struct t_msg_pri { /* 優先度付きメッセージヘッダ */ 123 T_MSG msgque; /* メッセージヘッダ */ 124 PRI msgpri; /* メッセージ優先度 */ 144 125 } T_MSG_PRI; 145 126 146 127 /* 147 * ãã±ããå½¢å¼ã®å®ç¾©128 * パケット形式の定義 148 129 */ 149 130 typedef struct t_ctsk { 150 ATR tskatr; /* ã¿ã¹ã¯å±æ§ */ 151 intptr_t exinf; /* ã¿ã¹ã¯ã®æ¡å¼µæ 152 å ± */ 153 TASK task; /* ã¿ã¹ã¯ã®ã¡ã¤ã³ã«ã¼ãã³ã®å 154 é çªå° */ 155 PRI itskpri; /* ã¿ã¹ã¯ã®èµ·åæåªå 156 度 */ 157 SIZE stksz; /* ã¿ã¹ã¯ã®ã¹ã¿ãã¯é åã®ãµã¤ãº */ 158 STK_T *stk; /* ã¿ã¹ã¯ã®ã¹ã¿ãã¯é åã®å 159 é çªå° */ 131 ATR tskatr; /* タスク属性 */ 132 intptr_t exinf; /* タスクの拡張情報 */ 133 TASK task; /* タスクのメインルーチンの先頭番地 */ 134 PRI itskpri; /* タスクの起動時優先度 */ 135 SIZE stksz; /* タスクのスタック領域のサイズ */ 136 STK_T *stk; /* タスクのスタック領域の先頭番地 */ 160 137 } T_CTSK; 161 138 162 139 typedef struct t_rtsk { 163 STAT tskstat; /* ã¿ã¹ã¯ç¶æ 164 */ 165 PRI tskpri; /* ã¿ã¹ã¯ã®ç¾å¨åªå 166 度 */ 167 PRI tskbpri; /* ã¿ã¹ã¯ã®ãã¼ã¹åªå 168 度 */ 169 STAT tskwait; /* å¾ 170 ã¡è¦å */ 171 ID wobjid; /* å¾ 172 ã¡å¯¾è±¡ã®ãªãã¸ã§ã¯ãã®ID */ 173 TMO lefttmo; /* ã¿ã¤ã ã¢ã¦ãããã¾ã§ã®æé */ 174 uint_t actcnt; /* èµ·åè¦æ±ãã¥ã¼ã¤ã³ã°æ° */ 175 uint_t wupcnt; /* èµ·åºè¦æ±ãã¥ã¼ã¤ã³ã°æ° */ 140 STAT tskstat; /* タスク状態 */ 141 PRI tskpri; /* タスクの現在優先度 */ 142 PRI tskbpri; /* タスクのベース優先度 */ 143 STAT tskwait; /* 待ち要因 */ 144 ID wobjid; /* 待ち対象のオブジェクトのID */ 145 TMO lefttmo; /* タイムアウトするまでの時間 */ 146 uint_t actcnt; /* 起動要求キューイング数 */ 147 uint_t wupcnt; /* 起床要求キューイング数 */ 176 148 } T_RTSK; 177 149 178 150 typedef struct t_dtex { 179 ATR texatr; /* ã¿ã¹ã¯ä¾å¤å¦çã«ã¼ãã³å±æ§ */ 180 TEXRTN texrtn; /* ã¿ã¹ã¯ä¾å¤å¦çã«ã¼ãã³ã®å 181 é çªå° */ 151 ATR texatr; /* タスク例外処理ルーチン属性 */ 152 TEXRTN texrtn; /* タスク例外処理ルーチンの先頭番地 */ 182 153 } T_DTEX; 183 154 184 155 typedef struct t_rtex { 185 STAT texstat; /* ã¿ã¹ã¯ä¾å¤å¦çã®ç¶æ 186 */ 187 TEXPTN pndptn; /* ä¿çä¾å¤è¦å */ 156 STAT texstat; /* タスク例外処理の状態 */ 157 TEXPTN pndptn; /* 保留例外要因 */ 188 158 } T_RTEX; 189 159 190 160 typedef struct t_csem { 191 ATR sematr; /* ã»ããã©å±æ§*/192 uint_t isemcnt; /* ã»ããã©ã®åæè³æºæ°*/193 uint_t maxsem; /* ã»ããã©ã®æ大è³æºæ°*/161 ATR sematr; /* セマフォ属性 */ 162 uint_t isemcnt; /* セマフォの初期資源数 */ 163 uint_t maxsem; /* セマフォの最大資源数 */ 194 164 } T_CSEM; 195 165 196 166 typedef struct t_rsem { 197 ID wtskid; /* ã»ããã©ã®å¾ 198 ã¡è¡åã®å 199 é ã®ã¿ã¹ã¯ã®IDçªå· */ 200 uint_t semcnt; /* ã»ããã©ã®ç¾å¨ã®è³æºæ° */ 167 ID wtskid; /* セマフォの待ち行列の先頭のタスクのID番号 */ 168 uint_t semcnt; /* セマフォの現在の資源数 */ 201 169 } T_RSEM; 202 170 203 171 typedef struct t_cflg { 204 ATR flgatr; /* ã¤ãã³ããã©ã°å±æ§*/205 FLGPTN iflgptn; /* ã¤ãã³ããã©ã°ã®åæããããã¿ã¼ã³*/172 ATR flgatr; /* イベントフラグ属性 */ 173 FLGPTN iflgptn; /* イベントフラグの初期ビットパターン */ 206 174 } T_CFLG; 207 175 208 176 typedef struct t_rflg { 209 ID wtskid; /* ã¤ãã³ããã©ã°ã®å¾ 210 ã¡è¡åã®å 211 é ã®ã¿ã¹ã¯ã®IDçªå· */ 212 FLGPTN flgptn; /* ã¤ãã³ããã©ã°ã®ç¾å¨ã®ããããã¿ã¼ã³ */ 177 ID wtskid; /* イベントフラグの待ち行列の先頭のタスクのID番号 */ 178 FLGPTN flgptn; /* イベントフラグの現在のビットパターン */ 213 179 } T_RFLG; 214 180 215 181 typedef struct t_cdtq { 216 ATR dtqatr; /* ãã¼ã¿ãã¥ã¼å±æ§ */ 217 uint_t dtqcnt; /* ãã¼ã¿ãã¥ã¼ç®¡çé åã«æ ¼ç´ã§ãããã¼ã¿æ° */ 218 void *dtqmb; /* ãã¼ã¿ãã¥ã¼ç®¡çé åã®å 219 é çªå° */ 182 ATR dtqatr; /* データキュー属性 */ 183 uint_t dtqcnt; /* データキュー管理領域に格納できるデータ数 */ 184 void *dtqmb; /* データキュー管理領域の先頭番地 */ 220 185 } T_CDTQ; 221 186 222 187 typedef struct t_rdtq { 223 ID stskid; /* ãã¼ã¿ãã¥ã¼ã®éä¿¡å¾ 224 ã¡è¡åã®å 225 é ã®ã¿ã¹ã¯ã®IDçªå· */ 226 ID rtskid; /* ãã¼ã¿ãã¥ã¼ã®åä¿¡å¾ 227 ã¡è¡åã®å 228 é ã®ã¿ã¹ã¯ã®IDçªå· */ 229 uint_t sdtqcnt; /* ãã¼ã¿ãã¥ã¼ç®¡çé åã«æ ¼ç´ããã¦ãããã¼ã¿ã®æ° */ 188 ID stskid; /* データキューの送信待ち行列の先頭のタスクのID番号 */ 189 ID rtskid; /* データキューの受信待ち行列の先頭のタスクのID番号 */ 190 uint_t sdtqcnt; /* データキュー管理領域に格納されているデータの数 */ 230 191 } T_RDTQ; 231 192 232 193 typedef struct t_cpdq { 233 ATR pdqatr; /* åªå 234 度ãã¼ã¿ãã¥ã¼å±æ§ */ 235 uint_t pdqcnt; /* åªå 236 度ãã¼ã¿ãã¥ã¼ç®¡çé åã«æ ¼ç´ã§ãããã¼ã¿æ° */ 237 PRI maxdpri; /* åªå 238 度ãã¼ã¿ãã¥ã¼ã«éä¿¡ã§ãããã¼ã¿åªå 239 度ã®æ 240 å¤§å¤ */ 241 void *pdqmb; /* åªå 242 度ãã¼ã¿ãã¥ã¼ç®¡çé åã®å 243 é çªå° */ 194 ATR pdqatr; /* 優先度データキュー属性 */ 195 uint_t pdqcnt; /* 優先度データキュー管理領域に格納できるデータ数 */ 196 PRI maxdpri; /* 優先度データキューに送信できるデータ優先度の最 197 大値 */ 198 void *pdqmb; /* 優先度データキュー管理領域の先頭番地 */ 244 199 } T_CPDQ; 245 200 246 201 typedef struct t_rpdq { 247 ID stskid; /* åªå 248 度ãã¼ã¿ãã¥ã¼ã®éä¿¡å¾ 249 ã¡è¡åã®å 250 é ã®ã¿ã¹ã¯ 251 ã®IDçªå· */ 252 ID rtskid; /* åªå 253 度ãã¼ã¿ãã¥ã¼ã®åä¿¡å¾ 254 ã¡è¡åã®å 255 é ã®ã¿ã¹ã¯ 256 ã®IDçªå· */ 257 uint_t spdqcnt; /* åªå 258 度ãã¼ã¿ãã¥ã¼ç®¡çé åã«æ ¼ç´ããã¦ãããã¼ 259 ã¿ã®æ° */ 202 ID stskid; /* 優先度データキューの送信待ち行列の先頭のタスク 203 のID番号 */ 204 ID rtskid; /* 優先度データキューの受信待ち行列の先頭のタスク 205 のID番号 */ 206 uint_t spdqcnt; /* 優先度データキュー管理領域に格納されているデー 207 タの数 */ 260 208 } T_RPDQ; 261 209 262 210 typedef struct t_cmbx { 263 ATR mbxatr; /* ã¡ã¼ã«ããã¯ã¹å±æ§ */ 264 PRI maxmpri; /* åªå 265 度ã¡ã¼ã«ããã¯ã¹ã«éä¿¡ã§ããã¡ãã»ã¼ã¸åªå 266 267 度ã®æå¤§å¤ */ 268 void *mprihd; /* åªå 269 度å¥ã®ã¡ãã»ã¼ã¸ãã¥ã¼ãããé åã®å 270 é çªå° */ 211 ATR mbxatr; /* メールボックス属性 */ 212 PRI maxmpri; /* 優先度メールボックスに送信できるメッセージ優先 213 度の最大値 */ 214 void *mprihd; /* 優先度別のメッセージキューヘッダ領域の先頭番地 */ 271 215 } T_CMBX; 272 216 273 217 typedef struct t_rmbx { 274 ID wtskid; /* ã¡ã¼ã«ããã¯ã¹ã®å¾ 275 ã¡è¡åã®å 276 é ã®ã¿ã¹ã¯ã®IDçªå· */ 277 T_MSG *pk_msg; /* ã¡ãã»ã¼ã¸ãã¥ã¼ã®å 278 é ã«ã¤ãªãããã¡ãã»ã¼ã¸ 279 ã®å 280 é çªå° */ 218 ID wtskid; /* メールボックスの待ち行列の先頭のタスクのID番号 */ 219 T_MSG *pk_msg; /* メッセージキューの先頭につながれたメッセージ 220 の先頭番地 */ 281 221 } T_RMBX; 282 222 283 223 typedef struct t_cmpf { 284 ATR mpfatr; /* åºå®é·ã¡ã¢ãªãã¼ã«å±æ§ */ 285 uint_t blkcnt; /* ç²å¾ã§ããåºå®é·ã¡ã¢ãªãããã¯ã®æ° */ 286 uint_t blksz; /* åºå®é·ã¡ã¢ãªãããã¯ã®ãµã¤ãº */ 287 MPF_T *mpf; /* åºå®é·ã¡ã¢ãªãã¼ã«é åã®å 288 é çªå° */ 289 void *mpfmb; /* åºå®é·ã¡ã¢ãªãã¼ã«ç®¡çé åã®å 290 é çªå° */ 224 ATR mpfatr; /* 固定長メモリプール属性 */ 225 uint_t blkcnt; /* 獲得できる固定長メモリブロックの数 */ 226 uint_t blksz; /* 固定長メモリブロックのサイズ */ 227 MPF_T *mpf; /* 固定長メモリプール領域の先頭番地 */ 228 void *mpfmb; /* 固定長メモリプール管理領域の先頭番地 */ 291 229 } T_CMPF; 292 230 293 231 typedef struct t_rmpf { 294 ID wtskid; /* åºå®é·ã¡ã¢ãªãã¼ã«ã®å¾ 295 ã¡è¡åã®å 296 é ã®ã¿ã¹ã¯ã® 297 IDçªå· */ 298 uint_t fblkcnt; /* åºå®é·ã¡ã¢ãªãã¼ã«é åã®ç©ºãã¡ã¢ãªé åã«å²ã 299 ä»ãããã¨ãã§ããåºå®é·ã¡ã¢ãªãããã¯ã®æ° */ 232 ID wtskid; /* 固定長メモリプールの待ち行列の先頭のタスクの 233 ID番号 */ 234 uint_t fblkcnt; /* 固定長メモリプール領域の空きメモリ領域に割り 235 付けることができる固定長メモリブロックの数 */ 300 236 } T_RMPF; 301 237 302 238 typedef struct t_ccyc { 303 ATR cycatr; /* å¨æãã³ãã©å±æ§ */ 304 intptr_t exinf; /* å¨æãã³ãã©ã®æ¡å¼µæ 305 å ± */ 306 CYCHDR cychdr; /* å¨æãã³ãã©ã®å 307 é çªå° */ 308 RELTIM cyctim; /* å¨æãã³ãã©ã®èµ·åå¨æ */ 309 RELTIM cycphs; /* å¨æãã³ãã©ã®èµ·åä½ç¸ */ 239 ATR cycatr; /* 周期ハンドラ属性 */ 240 intptr_t exinf; /* 周期ハンドラの拡張情報 */ 241 CYCHDR cychdr; /* 周期ハンドラの先頭番地 */ 242 RELTIM cyctim; /* 周期ハンドラの起動周期 */ 243 RELTIM cycphs; /* 周期ハンドラの起動位相 */ 310 244 } T_CCYC; 311 245 312 246 typedef struct t_rcyc { 313 STAT cycstat; /* å¨æãã³ãã©ã®åä½ç¶æ 314 */ 315 RELTIM lefttim; /* 次ã«å¨æãã³ãã©ãèµ·åããæå»ã¾ã§ã®ç¸å¯¾æé */ 247 STAT cycstat; /* 周期ハンドラの動作状態 */ 248 RELTIM lefttim; /* 次に周期ハンドラを起動する時刻までの相対時間 */ 316 249 } T_RCYC; 317 250 318 251 typedef struct t_calm { 319 ATR almatr; /* ã¢ã©ã¼ã ãã³ãã©å±æ§ */ 320 intptr_t exinf; /* ã¢ã©ã¼ã ãã³ãã©ã®æ¡å¼µæ 321 å ± */ 322 ALMHDR almhdr; /* ã¢ã©ã¼ã ãã³ãã©ã®å 323 é çªå° */ 252 ATR almatr; /* アラームハンドラ属性 */ 253 intptr_t exinf; /* アラームハンドラの拡張情報 */ 254 ALMHDR almhdr; /* アラームハンドラの先頭番地 */ 324 255 } T_CALM; 325 256 326 257 typedef struct t_ralm { 327 STAT almstat; /* ã¢ã©ã¼ã ãã³ãã©ã®åä½ç¶æ 328 */ 329 RELTIM lefttim; /* ã¢ã©ã¼ã ãã³ãã©ãèµ·åããæå»ã¾ã§ã®ç¸å¯¾æé */ 258 STAT almstat; /* アラームハンドラの動作状態 */ 259 RELTIM lefttim; /* アラームハンドラを起動する時刻までの相対時間 */ 330 260 } T_RALM; 331 261 332 262 typedef struct t_cisr { 333 ATR isratr; /* å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³å±æ§ */ 334 intptr_t exinf; /* å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³ã®æ¡å¼µæ 335 å ± */ 336 INTNO intno; /* å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³ãç»é²ããå²è¾¼ã¿çªå· */ 337 ISR isr; /* å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³ã®å 338 é çªå° */ 339 PRI isrpri; /* å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³åªå 340 度 */ 263 ATR isratr; /* 割込みサービスルーチン属性 */ 264 intptr_t exinf; /* 割込みサービスルーチンの拡張情報 */ 265 INTNO intno; /* 割込みサービスルーチンを登録する割込み番号 */ 266 ISR isr; /* 割込みサービスルーチンの先頭番地 */ 267 PRI isrpri; /* 割込みサービスルーチン優先度 */ 341 268 } T_CISR; 342 269 343 270 /* 344 * ãµã¼ãã¹ã³ã¼ã«ã®å®£è¨345 */ 346 347 /* 348 * ã¿ã¹ã¯ç®¡çæ©è½271 * サービスコールの宣言 272 */ 273 274 /* 275 * タスク管理機能 349 276 */ 350 277 extern ER_UINT acre_tsk(const T_CTSK *pk_ctsk) throw(); … … 361 288 362 289 /* 363 * ã¿ã¹ã¯ä»å±åææ©è½290 * タスク付属同期機能 364 291 */ 365 292 extern ER slp_tsk(void) throw(); … … 375 302 376 303 /* 377 * ã¿ã¹ã¯ä¾å¤å¦çæ©è½304 * タスク例外処理機能 378 305 */ 379 306 extern ER def_tex(ID tskid, const T_DTEX *pk_dtex) throw(); … … 386 313 387 314 /* 388 * åæã»éä¿¡æ©è½315 * 同期・通信機能 389 316 */ 390 317 extern ER_ID acre_sem(const T_CSEM *pk_csem) throw(); … … 450 377 451 378 /* 452 * ã¡ã¢ãªãã¼ã«ç®¡çæ©è½379 * メモリプール管理機能 453 380 */ 454 381 extern ER_ID acre_mpf(const T_CMPF *pk_cmpf) throw(); … … 462 389 463 390 /* 464 * æé管çæ©è½391 * 時間管理機能 465 392 */ 466 393 extern ER get_tim(SYSTIM *p_systim) throw(); … … 482 409 483 410 /* 484 * ã·ã¹ãã ç¶æ 485 管çæ©è½ 411 * システム状態管理機能 486 412 */ 487 413 extern ER rot_rdq(PRI tskpri) throw(); … … 503 429 504 430 /* 505 * å²è¾¼ã¿ç®¡çæ©è½431 * 割込み管理機能 506 432 */ 507 433 extern ER_ID acre_isr(const T_CISR *pk_cisr) throw(); … … 513 439 514 440 /* 515 * CPU ä¾å¤ç®¡çæ©è½441 * CPU例外管理機能 516 442 */ 517 443 extern bool_t xsns_dpn(void *p_excinf) throw(); … … 521 447 522 448 /* 523 * ãªãã¸ã§ã¯ãå±æ§ã®å®ç¾© 524 */ 525 #define TA_ACT UINT_C(0x02) /* ã¿ã¹ã¯ãèµ·åãããç¶æ 526 ã§çæ */ 527 528 #define TA_TPRI UINT_C(0x01) /* ã¿ã¹ã¯ã®å¾ 529 ã¡è¡åãåªå 530 度é ã« */ 531 #define TA_MPRI UINT_C(0x02) /* ã¡ãã»ã¼ã¸ãã¥ã¼ãåªå 532 度é ã« */ 533 534 #define TA_WMUL UINT_C(0x02) /* è¤æ°ã®å¾ 535 ã¡ã¿ã¹ã¯ */ 536 #define TA_CLR UINT_C(0x04) /* ã¤ãã³ããã©ã°ã®ã¯ãªã¢æå® */ 537 538 #define TA_STA UINT_C(0x02) /* å¨æãã³ãã©ãåä½ç¶æ 539 ã§çæ */ 540 541 #define TA_NONKERNEL UINT_C(0x02) /* ã«ã¼ãã«ç®¡çå¤ã®å²è¾¼ã¿ */ 542 543 #define TA_ENAINT UINT_C(0x01) /* å²è¾¼ã¿è¦æ±ç¦æ¢ãã©ã°ãã¯ãªã¢ */ 544 #define TA_EDGE UINT_C(0x02) /* ã¨ãã¸ããªã¬ */ 545 546 /* 547 * ãµã¼ãã¹ã³ã¼ã«ã®åä½ã¢ã¼ãã®å®ç¾© 548 */ 549 #define TWF_ORW UINT_C(0x01) /* ã¤ãã³ããã©ã°ã®ORå¾ 550 ã¡ */ 551 #define TWF_ANDW UINT_C(0x02) /* ã¤ãã³ããã©ã°ã®ANDå¾ 552 ã¡ */ 553 554 /* 555 * ãªãã¸ã§ã¯ãã®ç¶æ 556 ã®å®ç¾© 557 */ 558 #define TTS_RUN UINT_C(0x01) /* å®è¡ç¶æ 559 */ 560 #define TTS_RDY UINT_C(0x02) /* å®è¡å¯è½ç¶æ 561 */ 562 #define TTS_WAI UINT_C(0x04) /* å¾ 563 ã¡ç¶æ 564 */ 565 #define TTS_SUS UINT_C(0x08) /* å¼·å¶å¾ 566 ã¡ç¶æ 567 */ 568 #define TTS_WAS UINT_C(0x0c) /* äºéå¾ 569 ã¡ç¶æ 570 */ 571 #define TTS_DMT UINT_C(0x10) /* ä¼æ¢ç¶æ 572 */ 573 574 #define TTW_SLP UINT_C(0x0001) /* èµ·åºå¾ 575 ã¡ */ 576 #define TTW_DLY UINT_C(0x0002) /* æéçµéå¾ 577 ã¡ */ 578 #define TTW_SEM UINT_C(0x0004) /* ã»ããã©ã®è³æºç²å¾å¾ 579 ã¡ */ 580 #define TTW_FLG UINT_C(0x0008) /* ã¤ãã³ããã©ã°å¾ 581 ã¡ */ 582 #define TTW_SDTQ UINT_C(0x0010) /* ãã¼ã¿ãã¥ã¼ã¸ã®éä¿¡å¾ 583 ã¡ */ 584 #define TTW_RDTQ UINT_C(0x0020) /* ãã¼ã¿ãã¥ã¼ããã®åä¿¡å¾ 585 ã¡ */ 586 #define TTW_SPDQ UINT_C(0x0100) /* åªå 587 度ãã¼ã¿ãã¥ã¼ã¸ã®éä¿¡å¾ 588 ã¡ */ 589 #define TTW_RPDQ UINT_C(0x0200) /* åªå 590 度ãã¼ã¿ãã¥ã¼ããã®åä¿¡å¾ 591 ã¡ */ 592 #define TTW_MBX UINT_C(0x0040) /* ã¡ã¼ã«ããã¯ã¹ããã®åä¿¡å¾ 593 ã¡ */ 594 #define TTW_MPF UINT_C(0x2000) /* åºå®é·ã¡ã¢ãªãããã¯ã®ç²å¾å¾ 595 ã¡ */ 596 597 #define TTEX_ENA UINT_C(0x01) /* ã¿ã¹ã¯ä¾å¤å¦ç許å¯ç¶æ 598 */ 599 #define TTEX_DIS UINT_C(0x02) /* ã¿ã¹ã¯ä¾å¤å¦çç¦æ¢ç¶æ 600 */ 601 602 #define TCYC_STP UINT_C(0x01) /* å¨æãã³ãã©ãåä½ãã¦ããªã */ 603 #define TCYC_STA UINT_C(0x02) /* å¨æãã³ãã©ãåä½ãã¦ãã */ 604 605 #define TALM_STP UINT_C(0x01) /* ã¢ã©ã¼ã ãã³ãã©ãåä½ãã¦ããªã */ 606 #define TALM_STA UINT_C(0x02) /* ã¢ã©ã¼ã ãã³ãã©ãåä½ãã¦ãã */ 607 608 /* 609 * ãã®ä»ã®å®æ°ã®å®ç¾© 610 */ 611 #define TSK_SELF 0 /* èªã¿ã¹ã¯æå® */ 612 #define TSK_NONE 0 /* 該å½ããã¿ã¹ã¯ããªã */ 613 614 #define TPRI_SELF 0 /* èªã¿ã¹ã¯ã®ãã¼ã¹åªå 615 度 */ 616 #define TPRI_INI 0 /* ã¿ã¹ã¯ã®èµ·åæåªå 617 度 */ 618 619 #define TIPM_ENAALL 0 /* å²è¾¼ã¿åªå 620 度ãã¹ã¯å 621 ¨è§£é¤ */ 622 623 /* 624 * æ§æå®æ°ã¨ãã¯ã 625 */ 626 627 /* 628 * ãµãã¼ãããæ©è½ 449 * オブジェクト属性の定義 450 */ 451 #define TA_ACT UINT_C(0x02) /* タスクを起動された状態で生成 */ 452 453 #define TA_TPRI UINT_C(0x01) /* タスクの待ち行列を優先度順に */ 454 #define TA_MPRI UINT_C(0x02) /* メッセージキューを優先度順に */ 455 456 #define TA_WMUL UINT_C(0x02) /* 複数の待ちタスク */ 457 #define TA_CLR UINT_C(0x04) /* イベントフラグのクリア指定 */ 458 459 #define TA_STA UINT_C(0x02) /* 周期ハンドラを動作状態で生成 */ 460 461 #define TA_NONKERNEL UINT_C(0x02) /* カーネル管理外の割込み */ 462 463 #define TA_ENAINT UINT_C(0x01) /* 割込み要求禁止フラグをクリア */ 464 #define TA_EDGE UINT_C(0x02) /* エッジトリガ */ 465 466 /* 467 * サービスコールの動作モードの定義 468 */ 469 #define TWF_ORW UINT_C(0x01) /* イベントフラグのOR待ち */ 470 #define TWF_ANDW UINT_C(0x02) /* イベントフラグのAND待ち */ 471 472 /* 473 * オブジェクトの状態の定義 474 */ 475 #define TTS_RUN UINT_C(0x01) /* 実行状態 */ 476 #define TTS_RDY UINT_C(0x02) /* 実行可能状態 */ 477 #define TTS_WAI UINT_C(0x04) /* 待ち状態 */ 478 #define TTS_SUS UINT_C(0x08) /* 強制待ち状態 */ 479 #define TTS_WAS UINT_C(0x0c) /* 二重待ち状態 */ 480 #define TTS_DMT UINT_C(0x10) /* 休止状態 */ 481 482 #define TTW_SLP UINT_C(0x0001) /* 起床待ち */ 483 #define TTW_DLY UINT_C(0x0002) /* 時間経過待ち */ 484 #define TTW_SEM UINT_C(0x0004) /* セマフォの資源獲得待ち */ 485 #define TTW_FLG UINT_C(0x0008) /* イベントフラグ待ち */ 486 #define TTW_SDTQ UINT_C(0x0010) /* データキューへの送信待ち */ 487 #define TTW_RDTQ UINT_C(0x0020) /* データキューからの受信待ち */ 488 #define TTW_SPDQ UINT_C(0x0100) /* 優先度データキューへの送信待ち */ 489 #define TTW_RPDQ UINT_C(0x0200) /* 優先度データキューからの受信待ち */ 490 #define TTW_MBX UINT_C(0x0040) /* メールボックスからの受信待ち */ 491 #define TTW_MPF UINT_C(0x2000) /* 固定長メモリブロックの獲得待ち */ 492 493 #define TTEX_ENA UINT_C(0x01) /* タスク例外処理許可状態 */ 494 #define TTEX_DIS UINT_C(0x02) /* タスク例外処理禁止状態 */ 495 496 #define TCYC_STP UINT_C(0x01) /* 周期ハンドラが動作していない */ 497 #define TCYC_STA UINT_C(0x02) /* 周期ハンドラが動作している */ 498 499 #define TALM_STP UINT_C(0x01) /* アラームハンドラが動作していない */ 500 #define TALM_STA UINT_C(0x02) /* アラームハンドラが動作している */ 501 502 /* 503 * その他の定数の定義 504 */ 505 #define TSK_SELF 0 /* 自タスク指定 */ 506 #define TSK_NONE 0 /* 該当するタスクがない */ 507 508 #define TPRI_SELF 0 /* 自タスクのベース優先度 */ 509 #define TPRI_INI 0 /* タスクの起動時優先度 */ 510 511 #define TIPM_ENAALL 0 /* 割込み優先度マスク全解除 */ 512 513 /* 514 * 構成定数とマクロ 515 */ 516 517 /* 518 * サポートする機能 629 519 */ 630 520 #ifdef TOPPERS_TARGET_SUPPORT_DIS_INT 631 #define TOPPERS_SUPPORT_DIS_INT /* dis_int ããµãã¼ãããã¦ãã*/521 #define TOPPERS_SUPPORT_DIS_INT /* dis_intがサポートされている */ 632 522 #endif /* TOPPERS_TARGET_SUPPORT_DIS_INT */ 633 523 634 524 #ifdef TOPPERS_TARGET_SUPPORT_ENA_INT 635 #define TOPPERS_SUPPORT_ENA_INT /* ena_int ããµãã¼ãããã¦ãã*/525 #define TOPPERS_SUPPORT_ENA_INT /* ena_intがサポートされている */ 636 526 #endif /* TOPPERS_TARGET_SUPPORT_ENA_INT */ 637 527 638 528 #ifdef TOPPERS_TARGET_SUPPORT_GET_UTM 639 #define TOPPERS_SUPPORT_GET_UTM /* get_utm ããµãã¼ãããã¦ãã*/529 #define TOPPERS_SUPPORT_GET_UTM /* get_utmがサポートされている */ 640 530 #endif /* TOPPERS_TARGET_SUPPORT_GET_UTM */ 641 531 642 #define TOPPERS_SUPPORT_DYNAMIC_CRE /* åççææ©è½æ¡å¼µ */ 643 644 /* 645 * åªå 646 度ã®ç¯å² 647 */ 648 #define TMIN_TPRI 1 /* ã¿ã¹ã¯åªå 649 度ã®æå°å¤ï¼æé«å¤ï¼*/ 650 #define TMAX_TPRI 16 /* ã¿ã¹ã¯åªå 651 度ã®æ大å¤ï¼æä½å¤ï¼*/ 652 #define TMIN_DPRI 1 /* ãã¼ã¿åªå 653 度ã®æå°å¤ï¼æé«å¤ï¼*/ 654 #define TMAX_DPRI 16 /* ãã¼ã¿åªå 655 度ã®æ大å¤ï¼æä½å¤ï¼*/ 656 #define TMIN_MPRI 1 /* ã¡ãã»ã¼ã¸åªå 657 度ã®æå°å¤ï¼æé«å¤ï¼*/ 658 #define TMAX_MPRI 16 /* ã¡ãã»ã¼ã¸åªå 659 度ã®æ大å¤ï¼æä½å¤ï¼*/ 660 #define TMIN_ISRPRI 1 /* å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³åªå 661 度ã®æå°å¤ */ 662 #define TMAX_ISRPRI 16 /* å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³åªå 663 度ã®æå¤§å¤ */ 664 665 /* 666 * ãã¼ã¸ã§ã³æ 667 å ± 668 */ 669 #define TKERNEL_MAKER UINT_C(0x0118) /* ã«ã¼ãã«ã®ã¡ã¼ã«ã¼ã³ã¼ã */ 670 #define TKERNEL_PRID UINT_C(0x0007) /* ã«ã¼ãã«ã®èå¥çªå· */ 671 #define TKERNEL_SPVER UINT_C(0xf517) /* ã«ã¼ãã«ä»æ§ã®ãã¼ã¸ã§ã³çªå· */ 672 #define TKERNEL_PRVER UINT_C(0x1093) /* ã«ã¼ãã«ã®ãã¼ã¸ã§ã³çªå· */ 673 674 /* 675 * ãã¥ã¼ã¤ã³ã°åæ°ã®æå¤§å¤ 676 */ 677 #define TMAX_ACTCNT UINT_C(1) /* èµ·åè¦æ±ãã¥ã¼ã¤ã³ã°æ°ã®æå¤§å¤ */ 678 #define TMAX_WUPCNT UINT_C(1) /* èµ·åºè¦æ±ãã¥ã¼ã¤ã³ã°æ°ã®æå¤§å¤ */ 679 680 /* 681 * ããããã¿ã¼ã³ã®ãããæ° 682 */ 683 #ifndef TBIT_TEXPTN /* ã¿ã¹ã¯ä¾å¤è¦å ã®ãããæ° */ 532 #define TOPPERS_SUPPORT_DYNAMIC_CRE /* 動的生成機能拡張 */ 533 534 /* 535 * 優先度の範囲 536 */ 537 #define TMIN_TPRI 1 /* タスク優先度の最小値(最高値)*/ 538 #define TMAX_TPRI 16 /* タスク優先度の最大値(最低値)*/ 539 #define TMIN_DPRI 1 /* データ優先度の最小値(最高値)*/ 540 #define TMAX_DPRI 16 /* データ優先度の最大値(最低値)*/ 541 #define TMIN_MPRI 1 /* メッセージ優先度の最小値(最高値)*/ 542 #define TMAX_MPRI 16 /* メッセージ優先度の最大値(最低値)*/ 543 #define TMIN_ISRPRI 1 /* 割込みサービスルーチン優先度の最小値 */ 544 #define TMAX_ISRPRI 16 /* 割込みサービスルーチン優先度の最大値 */ 545 546 /* 547 * バージョン情報 548 */ 549 #define TKERNEL_MAKER UINT_C(0x0118) /* カーネルのメーカーコード */ 550 #define TKERNEL_PRID UINT_C(0x0007) /* カーネルの識別番号 */ 551 #define TKERNEL_SPVER UINT_C(0xf517) /* カーネル仕様のバージョン番号 */ 552 #define TKERNEL_PRVER UINT_C(0x1093) /* カーネルのバージョン番号 */ 553 554 /* 555 * キューイング回数の最大値 556 */ 557 #define TMAX_ACTCNT UINT_C(1) /* 起動要求キューイング数の最大値 */ 558 #define TMAX_WUPCNT UINT_C(1) /* 起床要求キューイング数の最大値 */ 559 560 /* 561 * ビットパターンのビット数 562 */ 563 #ifndef TBIT_TEXPTN /* タスク例外要因のビット数 */ 684 564 #define TBIT_TEXPTN (sizeof(TEXPTN) * CHAR_BIT) 685 565 #endif /* TBIT_TEXPTN */ 686 566 687 #ifndef TBIT_FLGPTN /* ã¤ãã³ããã©ã°ã®ãããæ°*/567 #ifndef TBIT_FLGPTN /* イベントフラグのビット数 */ 688 568 #define TBIT_FLGPTN (sizeof(FLGPTN) * CHAR_BIT) 689 569 #endif /* TBIT_FLGPTN */ 690 570 691 571 /* 692 * ã¡ã¢ãªé å確ä¿ã®ããã®ãã¯ã572 * メモリ領域確保のためのマクロ 693 573 * 694 * 以ä¸ã®TOPPERS_COUNT_SZã¨TOPPERS_ROUND_SZã®å®ç¾©ã¯ï¼unitã2ã®å·¾ä¹ã§ã695 * ããã¨ãä»®å®ãã¦ããï¼574 * 以下のTOPPERS_COUNT_SZとTOPPERS_ROUND_SZの定義は,unitが2の巾乗であ 575 * ることを仮定している. 696 576 */ 697 577 #ifndef TOPPERS_COUNT_SZ … … 720 600 721 601 /* 722 * ãã®ä»ã®æ§æå®æ°723 */ 724 #define TMAX_MAXSEM UINT_MAX /* ã»ããã©ã®æ大è³æºæ°ã®æ大å¤*/602 * その他の構成定数 603 */ 604 #define TMAX_MAXSEM UINT_MAX /* セマフォの最大資源数の最大値 */ 725 605 726 606 #ifdef __cplusplus -
Property svn:mime-type
changed from
Note:
See TracChangeset
for help on using the changeset viewer.