Changeset 315 for rubycfg_asp/trunk/asp_dcre/kernel
- Timestamp:
- Jul 23, 2017, 2:29:40 PM (7 years ago)
- Location:
- rubycfg_asp/trunk/asp_dcre/kernel
- Files:
-
- 54 edited
Legend:
- Unmodified
- Added
- Removed
-
rubycfg_asp/trunk/asp_dcre/kernel/Makefile.kernel
-
Property svn:mime-type
changed from
text/x-makefile
totext/x-makefile; 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: Makefile.kernel 2414 2012-09-05 21:32:05Z ertl-hiro $ … … 57 42 58 43 # 59 # ã«ã¼ãã«ã®ãã¡ã¤ã«æ§æã®å®ç¾©44 # カーネルのファイル構成の定義 60 45 # 61 46 62 47 # 63 # 1 ã¤ã®ã½ã¼ã¹ãã¡ã¤ã«ããè¤æ°ã®ãªãã¸ã§ã¯ããã¡ã¤ã«ãçæããããã«ä½64 # æãããã½ã¼ã¹ãã¡ã¤ã«ã®ãªã¹ã48 # 1つのソースファイルから複数のオブジェクトファイルを生成するように作 49 # 成されたソースファイルのリスト 65 50 # 66 51 KERNEL_FCSRCS = startup.c task.c wait.c time_event.c \ … … 71 56 72 57 # 73 # åã½ã¼ã¹ãã¡ã¤ã«ããçæããããªãã¸ã§ã¯ããã¡ã¤ã«ã®ãªã¹ã58 # 各ソースファイルから生成されるオブジェクトファイルのリスト 74 59 # 75 60 startup = sta_ker.o ext_ker.o kermem.o … … 132 117 133 118 # 134 # çæããããªãã¸ã§ã¯ããã¡ã¤ã«ã®ä¾åé¢ä¿ã®å®ç¾©119 # 生成されるオブジェクトファイルの依存関係の定義 135 120 # 136 121 $(startup) $(startup:.o=.s) $(startup:.o=.d): startup.c -
Property svn:mime-type
changed from
-
rubycfg_asp/trunk/asp_dcre/kernel/alarm.c
-
Property svn:mime-type
changed from
text/x-csrc
totext/x-csrc; 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 * ã¢ã©ã¼ã ãã³ãã©æ©è½44 * アラームハンドラ機能 60 45 */ 61 46 … … 65 50 66 51 /* 67 * ãã¬ã¼ã¹ãã°ãã¯ãã®ããã©ã«ãå®ç¾©52 * トレースログマクロのデフォルト定義 68 53 */ 69 54 #ifndef LOG_ALM_ENTER … … 132 117 133 118 /* 134 * ã¢ã©ã¼ã ãã³ãã©ã®æ°119 * アラームハンドラの数 135 120 */ 136 121 #define tnum_alm ((uint_t)(tmax_almid - TMIN_ALMID + 1)) … … 138 123 139 124 /* 140 * ã¢ã©ã¼ã ãã³ãã©IDããã¢ã©ã¼ã ãã³ãã©ç®¡çãããã¯ãåãåºãããã®ãã¯ã125 * アラームハンドラIDからアラームハンドラ管理ブロックを取り出すためのマクロ 141 126 */ 142 127 #define INDEX_ALM(almid) ((uint_t)((almid) - TMIN_ALMID)) … … 146 131 147 132 /* 148 * 使ç¨ãã¦ããªãã¢ã©ã¼ã ãã³ãã©ç®¡çãããã¯ã®ãªã¹ã133 * 使用していないアラームハンドラ管理ブロックのリスト 149 134 * 150 * ã¢ã©ã¼ã ãã³ãã©ç®¡çãããã¯ã®å 151 é ã«ã¯ãã¥ã¼ã«ã¤ãªãããã®é åã㪠152 * ãããï¼ã¿ã¤ã ã¤ãã³ããããã¯ï¼tmevtbï¼ã®é åãç¨ããï¼ 135 * アラームハンドラ管理ブロックの先頭にはキューにつなぐための領域がな 136 * いため,タイムイベントブロック(tmevtb)の領域を用いる. 153 137 */ 154 138 QUEUE free_almcb; 155 139 156 140 /* 157 * ã¢ã©ã¼ã ãã³ãã©æ©è½ã®åæå141 * アラームハンドラ機能の初期化 158 142 */ 159 143 void … … 182 166 183 167 /* 184 * ã¢ã©ã¼ã ãã³ãã©ã®çæ168 * アラームハンドラの生成 185 169 */ 186 170 #ifdef TOPPERS_acre_alm … … 224 208 225 209 /* 226 * ã¢ã©ã¼ã ãã³ãã©ã®åé¤210 * アラームハンドラの削除 227 211 */ 228 212 #ifdef TOPPERS_del_alm … … 268 252 269 253 /* 270 * ã¢ã©ã¼ã ãã³ãã©ã®åä½éå§254 * アラームハンドラの動作開始 271 255 */ 272 256 #ifdef TOPPERS_sta_alm … … 309 293 310 294 /* 311 * ã¢ã©ã¼ã ãã³ãã©ã®åä½éå§ï¼éã¿ã¹ã¯ã³ã³ããã¹ãç¨ï¼295 * アラームハンドラの動作開始(非タスクコンテキスト用) 312 296 */ 313 297 #ifdef TOPPERS_ista_alm … … 350 334 351 335 /* 352 * ã¢ã©ã¼ã ãã³ãã©ã®åä½åæ¢336 * アラームハンドラの動作停止 353 337 */ 354 338 #ifdef TOPPERS_stp_alm … … 386 370 387 371 /* 388 * ã¢ã©ã¼ã ãã³ãã©ã®åä½åæ¢ï¼éã¿ã¹ã¯ã³ã³ããã¹ãç¨ï¼372 * アラームハンドラの動作停止(非タスクコンテキスト用) 389 373 */ 390 374 #ifdef TOPPERS_istp_alm … … 422 406 423 407 /* 424 * ã¢ã©ã¼ã ãã³ãã©ã®ç¶æ 425 åç 426 § 408 * アラームハンドラの状態参照 427 409 */ 428 410 #ifdef TOPPERS_ref_alm … … 463 445 464 446 /* 465 * ã¢ã©ã¼ã ãã³ãã©èµ·åã«ã¼ãã³447 * アラームハンドラ起動ルーチン 466 448 */ 467 449 #ifdef TOPPERS_almcal … … 473 455 474 456 /* 475 * ã¢ã©ã¼ã ãã³ãã©ãåæ¢ç¶æ 476 ã«ããï¼ 457 * アラームハンドラを停止状態にする. 477 458 */ 478 459 p_almcb->almsta = false; 479 460 480 461 /* 481 * ã¢ã©ã¼ã ãã³ãã©ãï¼CPUããã¯è§£é¤ç¶æ 482 ã§å¼ã³åºãï¼ 462 * アラームハンドラを,CPUロック解除状態で呼び出す. 483 463 */ 484 464 saved_ipm = i_get_ipm(); -
Property svn:mime-type
changed from
-
rubycfg_asp/trunk/asp_dcre/kernel/alarm.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 * ã¢ã©ã¼ã ãã³ãã©æ©è½44 * アラームハンドラ機能 60 45 */ 61 46 … … 67 52 68 53 /* 69 * ã¢ã©ã¼ã ãã³ãã©åæåãããã¯54 * アラームハンドラ初期化ブロック 70 55 */ 71 56 typedef struct alarm_handler_initialization_block { 72 ATR almatr; /* ã¢ã©ã¼ã ãã³ãã©å±æ§ */ 73 intptr_t exinf; /* ã¢ã©ã¼ã ãã³ãã©ã®æ¡å¼µæ 74 å ± */ 75 ALMHDR almhdr; /* ã¢ã©ã¼ã ãã³ãã©ã®èµ·åçªå° */ 57 ATR almatr; /* アラームハンドラ属性 */ 58 intptr_t exinf; /* アラームハンドラの拡張情報 */ 59 ALMHDR almhdr; /* アラームハンドラの起動番地 */ 76 60 } ALMINIB; 77 61 78 62 /* 79 * ã¢ã©ã¼ã ãã³ãã©ç®¡çãããã¯63 * アラームハンドラ管理ブロック 80 64 */ 81 65 typedef struct alarm_handler_control_block { 82 const ALMINIB *p_alminib; /* åæåãããã¯ã¸ã®ãã¤ã³ã¿ */ 83 bool_t almsta; /* ã¢ã©ã¼ã ãã³ãã©ã®åä½ç¶æ 84 */ 85 TMEVTB tmevtb; /* ã¿ã¤ã ã¤ãã³ãããã㯠*/ 66 const ALMINIB *p_alminib; /* 初期化ブロックへのポインタ */ 67 bool_t almsta; /* アラームハンドラの動作状態 */ 68 TMEVTB tmevtb; /* タイムイベントブロック */ 86 69 } ALMCB; 87 70 88 71 /* 89 * 使ç¨ãã¦ããªãã¢ã©ã¼ã ãã³ãã©ç®¡çãããã¯ã®ãªã¹ã72 * 使用していないアラームハンドラ管理ブロックのリスト 90 73 */ 91 74 extern QUEUE free_almcb; 92 75 93 76 /* 94 * ã¢ã©ã¼ã ãã³ãã©IDã®æ大å¤ï¼kernel_cfg.cï¼77 * アラームハンドラIDの最大値(kernel_cfg.c) 95 78 */ 96 79 extern const ID tmax_almid; … … 98 81 99 82 /* 100 * ã¢ã©ã¼ã ãã³ãã©åæåãããã¯ã®ã¨ãªã¢ï¼kernel_cfg.cï¼83 * アラームハンドラ初期化ブロックのエリア(kernel_cfg.c) 101 84 */ 102 85 extern const ALMINIB alminib_table[]; … … 104 87 105 88 /* 106 * ã¢ã©ã¼ã ãã³ãã©ç®¡çãããã¯ã®ã¨ãªã¢ï¼kernel_cfg.cï¼89 * アラームハンドラ管理ブロックのエリア(kernel_cfg.c) 107 90 */ 108 91 extern ALMCB almcb_table[]; 109 92 110 93 /* 111 * ã¢ã©ã¼ã ãã³ãã©ç®¡çãããã¯ããã¢ã©ã¼ã ãã³ãã©IDãåãåºãããã®112 * ãã¯ã94 * アラームハンドラ管理ブロックからアラームハンドラIDを取り出すための 95 * マクロ 113 96 */ 114 97 #define ALMID(p_almcb) ((ID)(((p_almcb) - almcb_table) + TMIN_ALMID)) 115 98 116 99 /* 117 * ã¢ã©ã¼ã ãã³ãã©æ©è½ã®åæå100 * アラームハンドラ機能の初期化 118 101 */ 119 102 extern void initialize_alarm(void); 120 103 121 104 /* 122 * ã¢ã©ã¼ã ãã³ãã©èµ·åã«ã¼ãã³105 * アラームハンドラ起動ルーチン 123 106 */ 124 107 extern void call_almhdr(ALMCB *p_almcb); -
Property svn:mime-type
changed from
-
rubycfg_asp/trunk/asp_dcre/kernel/alarm.trb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby; 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: alarm.trb 588 2016-02-05 12:54:58Z ertl-hiro $ … … 57 42 58 43 # 59 # ã¢ã©ã¼ã éç¥æ©è½ã®çæã¹ã¯ãªãã44 # アラーム通知機能の生成スクリプト 60 45 # 61 46 … … 66 51 67 52 def prepare(key, params) 68 # almatr ãç¡å¹ã®å ´åï¼E_RSATRï¼ï¼»NGKI2491ï¼½69 # ï¼TA_STA以å¤ã®ããããã»ããããã¦ããå ´åï¼53 # almatrが無効の場合(E_RSATR)[NGKI2491] 54 #(TA_STA以外のビットがセットされている場合) 70 55 if (params[:almatr] & ~($TA_STA)) != 0 71 56 error_illegal_id("E_RSATR", params, :almatr, :almid) … … 79 64 80 65 # 81 # ã¢ã©ã¼ã éç¥ã«é¢ããæ 82 å ±ã®çæ 66 # アラーム通知に関する情報の生成 83 67 # 84 68 $kernelCfgC.comment_header("Alarm Handler Functions") -
Property svn:mime-type
changed from
-
rubycfg_asp/trunk/asp_dcre/kernel/allfunc.h
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr; charset=UTF-8
r313 r315 7 7 * Graduate School of Information Science, Nagoya Univ., JAPAN 8 8 * 9 * ä¸è¨èä½æ¨©è 10 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 11 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 12 * å¤ã»åé 13 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 14 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 15 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 16 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 17 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 18 * ç¨ã§ããå½¢ã§åé 19 å¸ããå ´åã«ã¯ï¼åé 20 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 21 * è 22 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 23 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 24 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 25 * ç¨ã§ããªãå½¢ã§åé 26 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 27 * ã¨ï¼ 28 * (a) åé 29 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 30 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 31 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 32 * (b) åé 33 å¸ã®å½¢æ 34 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 35 * å ±åãããã¨ï¼ 36 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 37 * 害ãããï¼ä¸è¨èä½æ¨©è 38 ããã³TOPPERSããã¸ã§ã¯ããå 39 責ãããã¨ï¼ 40 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 41 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 42 ããã³TOPPERSããã¸ã§ã¯ãã 43 * å 44 責ãããã¨ï¼ 45 * 46 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 47 ã 48 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 49 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 50 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 51 * ã®è²¬ä»»ãè² ããªãï¼ 9 * 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 10 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 11 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 12 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 13 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 14 * スコード中に含まれていること. 15 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 16 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 17 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 18 * の無保証規定を掲載すること. 19 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 20 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 21 * と. 22 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 23 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 24 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 25 * 報告すること. 26 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 27 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 28 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 29 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 30 * 免責すること. 31 * 32 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 33 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 34 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 35 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 36 * の責任を負わない. 52 37 * 53 38 * @(#) $Id$ … … 55 40 56 41 /* 57 * ãã¹ã¦ã®é¢æ°ãã³ã³ãã¤ã«ããããã®å®ç¾©42 * すべての関数をコンパイルするための定義 58 43 */ 59 44 -
Property svn:mime-type
changed from
-
rubycfg_asp/trunk/asp_dcre/kernel/check.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 * ã¨ã©ã¼ãã§ãã¯ç¨ãã¯ã44 * エラーチェック用マクロ 60 45 */ 61 46 … … 64 49 65 50 /* 66 * äºç´å±æ§ã¨ã©ã¼ã®ãã§ãã¯ï¼E_PARï¼51 * 予約属性エラーのチェック(E_PAR) 67 52 */ 68 53 #define CHECK_RSATR(atr, valid_atr) do { \ … … 74 59 75 60 /* 76 * åªå 77 度ã®ç¯å²ã®å¤å® 61 * 優先度の範囲の判定 78 62 */ 79 63 #define VALID_TPRI(tpri) (TMIN_TPRI <= (tpri) && (tpri) <= TMAX_TPRI) … … 92 76 93 77 /* 94 * ã¿ã¹ã¯åªå 95 度ã®ãã§ãã¯ï¼E_PARï¼ 78 * タスク優先度のチェック(E_PAR) 96 79 */ 97 80 #define CHECK_TPRI(tpri) do { \ … … 117 100 118 101 /* 119 * ãã¼ã¿åªå 120 度ã®ãã§ãã¯ï¼E_PARï¼ 102 * データ優先度のチェック(E_PAR) 121 103 */ 122 104 #define CHECK_DPRI(dpri) do { \ … … 128 110 129 111 /* 130 * ã¡ãã»ã¼ã¸åªå 131 度ã®ãã§ãã¯ï¼E_PARï¼ 112 * メッセージ優先度のチェック(E_PAR) 132 113 */ 133 114 #define CHECK_MPRI(mpri) do { \ … … 139 120 140 121 /* 141 * å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³åªå 142 度ã®ãã§ãã¯ï¼E_PARï¼ 122 * 割込みサービスルーチン優先度のチェック(E_PAR) 143 123 */ 144 124 #define CHECK_ISRPRI(isrpri) do { \ … … 150 130 151 131 /* 152 * ã¿ã¤ã ã¢ã¦ãæå®å¤ã®ãã§ãã¯ï¼E_PARï¼132 * タイムアウト指定値のチェック(E_PAR) 153 133 */ 154 134 #define CHECK_TMOUT(tmout) do { \ … … 160 140 161 141 /* 162 * å²è¾¼ã¿åªå 163 度ã®ãã§ãã¯ï¼E_PARï¼ 142 * 割込み優先度のチェック(E_PAR) 164 143 */ 165 144 #define CHECK_INTPRI_CHGIPM(intpri) do { \ … … 171 150 172 151 /* 173 * å²è¾¼ã¿çªå·ã®ãã§ãã¯ï¼E_PARï¼152 * 割込み番号のチェック(E_PAR) 174 153 */ 175 154 #define CHECK_INTNO_CREISR(intno) do { \ … … 188 167 189 168 /* 190 * ã¢ã©ã¤ã³ãã¦ãããã®å¤å®169 * アラインしているかの判定 191 170 */ 192 171 #define ALIGNED(val, align) ((((uintptr_t)(val)) & ((align) - 1U)) == 0U) … … 223 202 224 203 /* 225 * NULL ã§ãªããã¨ã®ãã§ãã¯204 * NULLでないことのチェック 226 205 */ 227 206 #ifdef CHECK_FUNC_NONNULL … … 232 211 233 212 /* 234 * é¢æ°ã®å 235 é çªå°ã®ãã§ãã¯ï¼E_PARï¼ 213 * 関数の先頭番地のチェック(E_PAR) 236 214 */ 237 215 #define CHECK_ALIGN_FUNC(func) do { \ … … 250 228 251 229 /* 252 * ã¹ã¿ãã¯ãµã¤ãºã®ãã§ãã¯ï¼E_PARï¼230 * スタックサイズのチェック(E_PAR) 253 231 */ 254 232 #define CHECK_ALIGN_STKSZ(stksz) do { \ … … 260 238 261 239 /* 262 * ã¹ã¿ãã¯ã®å 263 é çªå°ã®ãã§ãã¯ï¼E_PARï¼ 240 * スタックの先頭番地のチェック(E_PAR) 264 241 */ 265 242 #define CHECK_ALIGN_STACK(stack) do { \ … … 271 248 272 249 /* 273 * åºå®é·ã¡ã¢ãªãã¼ã«é åã®å 274 é çªå°ã®ãã§ãã¯ï¼E_PARï¼ 250 * 固定長メモリプール領域の先頭番地のチェック(E_PAR) 275 251 */ 276 252 #define CHECK_ALIGN_MPF(mpf) do { \ … … 282 258 283 259 /* 284 * 管çé åã®å 285 é çªå°ã®ãã§ãã¯ï¼E_PARï¼ 260 * 管理領域の先頭番地のチェック(E_PAR) 286 261 */ 287 262 #define CHECK_ALIGN_MB(mb) do { \ … … 293 268 294 269 /* 295 * ãã®ä»ã®ãã©ã¡ã¼ã¿ã¨ã©ã¼ã®ãã§ãã¯ï¼E_PARï¼270 * その他のパラメータエラーのチェック(E_PAR) 296 271 */ 297 272 #define CHECK_PAR(exp) do { \ … … 303 278 304 279 /* 305 * ãªãã¸ã§ã¯ãIDã®ç¯å²ã®å¤å®280 * オブジェクトIDの範囲の判定 306 281 */ 307 282 #define VALID_TSKID(tskid) (TMIN_TSKID <= (tskid) && (tskid) <= tmax_tskid) … … 317 292 318 293 /* 319 * ãªãã¸ã§ã¯ãIDã®ãã§ãã¯ï¼E_IDï¼294 * オブジェクトIDのチェック(E_ID) 320 295 */ 321 296 #define CHECK_TSKID(tskid) do { \ … … 397 372 398 373 /* 399 * å¼åºãã³ã³ããã¹ãã®ãã§ãã¯ï¼E_CTXï¼374 * 呼出しコンテキストのチェック(E_CTX) 400 375 */ 401 376 #define CHECK_TSKCTX() do { \ … … 414 389 415 390 /* 416 * å¼åºãã³ã³ããã¹ãã¨CPUããã¯ç¶æ 417 ã®ãã§ãã¯ï¼E_CTXï¼ 391 * 呼出しコンテキストとCPUロック状態のチェック(E_CTX) 418 392 */ 419 393 #define CHECK_TSKCTX_UNL() do { \ … … 432 406 433 407 /* 434 * ãã£ã¹ãããä¿çç¶æ 435 ã§ãªããã®ãã§ãã¯ï¼E_CTXï¼ 408 * ディスパッチ保留状態でないかのチェック(E_CTX) 436 409 */ 437 410 #define CHECK_DISPATCH() do { \ … … 443 416 444 417 /* 445 * ãã®ä»ã®ã³ã³ããã¹ãã¨ã©ã¼ã®ãã§ãã¯ï¼E_CTXï¼418 * その他のコンテキストエラーのチェック(E_CTX) 446 419 */ 447 420 #define CHECK_CTX(exp) do { \ … … 453 426 454 427 /* 455 * èªã¿ã¹ã¯ãæå®ãã¦ããªããã®ãã§ãã¯ï¼E_ILUSEï¼428 * 自タスクを指定していないかのチェック(E_ILUSE) 456 429 */ 457 430 #define CHECK_NONSELF(p_tcb) do { \ … … 463 436 464 437 /* 465 * ãã®ä»ã®ä¸æ£ä½¿ç¨ã¨ã©ã¼ã®ãã§ãã¯ï¼E_ILUSEï¼438 * その他の不正使用エラーのチェック(E_ILUSE) 466 439 */ 467 440 #define CHECK_ILUSE(exp) do { \ … … 473 446 474 447 /* 475 * æªãµãã¼ãæ©è½ã¨ã©ã¼ã®ãã§ãã¯ï¼E_NOSPTï¼448 * 未サポート機能エラーのチェック(E_NOSPT) 476 449 */ 477 450 #define CHECK_NOSPT(exp) do { \ … … 483 456 484 457 /* 485 * éçãªãªãã¸ã§ã¯ãç¶æ 486 ã¨ã©ã¼ã®ãã§ãã¯ï¼E_OBJï¼ 458 * 静的なオブジェクト状態エラーのチェック(E_OBJ) 487 459 */ 488 460 #define CHECK_OBJ(exp) do { \ -
Property svn:mime-type
changed from
-
rubycfg_asp/trunk/asp_dcre/kernel/cyclic.c
-
Property svn:mime-type
changed from
text/x-csrc
totext/x-csrc; 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 * å¨æãã³ãã©æ©è½44 * 周期ハンドラ機能 60 45 */ 61 46 … … 65 50 66 51 /* 67 * ãã¬ã¼ã¹ãã°ãã¯ãã®ããã©ã«ãå®ç¾©52 * トレースログマクロのデフォルト定義 68 53 */ 69 54 #ifndef LOG_CYC_ENTER … … 116 101 117 102 /* 118 * å¨æãã³ãã©ã®æ°103 * 周期ハンドラの数 119 104 */ 120 105 #define tnum_cyc ((uint_t)(tmax_cycid - TMIN_CYCID + 1)) … … 122 107 123 108 /* 124 * å¨æãã³ãã©IDããå¨æãã³ãã©ç®¡çãããã¯ãåãåºãããã®ãã¯ã109 * 周期ハンドラIDから周期ハンドラ管理ブロックを取り出すためのマクロ 125 110 */ 126 111 #define INDEX_CYC(cycid) ((uint_t)((cycid) - TMIN_CYCID)) … … 128 113 129 114 /* 130 * å¨æãã³ãã©èµ·åã®ããã®ã¿ã¤ã ã¤ãã³ããããã¯ã®ç»é²115 * 周期ハンドラ起動のためのタイムイベントブロックの登録 131 116 */ 132 117 Inline void … … 141 126 142 127 /* 143 * 使ç¨ãã¦ããªãå¨æãã³ãã©ç®¡çãããã¯ã®ãªã¹ã128 * 使用していない周期ハンドラ管理ブロックのリスト 144 129 * 145 * å¨æãã³ãã©ç®¡çãããã¯ã®å 146 é ã«ã¯ãã¥ã¼ã«ã¤ãªãããã®é åããªãã 147 * ãï¼ã¿ã¤ã ã¤ãã³ããããã¯ï¼tmevtbï¼ã®é åãç¨ããï¼ 130 * 周期ハンドラ管理ブロックの先頭にはキューにつなぐための領域がないた 131 * め,タイムイベントブロック(tmevtb)の領域を用いる. 148 132 */ 149 133 QUEUE free_cyccb; 150 134 151 135 /* 152 * å¨æãã³ãã©æ©è½ã®åæå136 * 周期ハンドラ機能の初期化 153 137 */ 154 138 void … … 183 167 184 168 /* 185 * å¨æãã³ãã©ã®çæ169 * 周期ハンドラの生成 186 170 */ 187 171 #ifdef TOPPERS_acre_cyc … … 236 220 237 221 /* 238 * å¨æãã³ãã©ã®åé¤222 * 周期ハンドラの削除 239 223 */ 240 224 #ifdef TOPPERS_del_cyc … … 280 264 281 265 /* 282 * å¨æãã³ãã©ã®åä½éå§266 * 周期ハンドラの動作開始 283 267 */ 284 268 #ifdef TOPPERS_sta_cyc … … 319 303 320 304 /* 321 * å¨æãã³ãã©ã®åä½åæ¢305 * 周期ハンドラの動作停止 322 306 */ 323 307 #ifdef TOPPERS_stp_cyc … … 355 339 356 340 /* 357 * å¨æãã³ãã©ã®ç¶æ 358 åç 359 § 341 * 周期ハンドラの状態参照 360 342 */ 361 343 #ifdef TOPPERS_ref_cyc … … 396 378 397 379 /* 398 * å¨æãã³ãã©èµ·åã«ã¼ãã³380 * 周期ハンドラ起動ルーチン 399 381 */ 400 382 #ifdef TOPPERS_cyccal … … 406 388 407 389 /* 408 * 次åã®èµ·åã®ããã®ã¿ã¤ã ã¤ãã³ããããã¯ãç»é²ããï¼390 * 次回の起動のためのタイムイベントブロックを登録する. 409 391 * 410 * åãã¿ã¤ã ãã£ãã¯ã§å¨æãã³ãã©ãå度起åãã¹ãå ´åã«ã¯ï¼ãã®411 * é¢æ°ããsignal_timeã«æ»ã£ãå¾ã«ï¼å度ãã®é¢æ°ãå¼ã°ãããã¨ã«ãª412 * ãï¼392 * 同じタイムティックで周期ハンドラを再度起動すべき場合には,この 393 * 関数からsignal_timeに戻った後に,再度この関数が呼ばれることにな 394 * る. 413 395 */ 414 396 tmevtb_enqueue_cyc(p_cyccb, p_cyccb->evttim + p_cyccb->p_cycinib->cyctim); 415 397 416 398 /* 417 * å¨æãã³ãã©ãï¼CPUããã¯è§£é¤ç¶æ 418 ã§å¼ã³åºãï¼ 399 * 周期ハンドラを,CPUロック解除状態で呼び出す. 419 400 */ 420 401 saved_ipm = i_get_ipm(); -
Property svn:mime-type
changed from
-
rubycfg_asp/trunk/asp_dcre/kernel/cyclic.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 * å¨æãã³ãã©æ©è½44 * 周期ハンドラ機能 60 45 */ 61 46 … … 67 52 68 53 /* 69 * å¨æãã³ãã©åæåãããã¯54 * 周期ハンドラ初期化ブロック 70 55 */ 71 56 typedef struct cyclic_handler_initialization_block { 72 ATR cycatr; /* å¨æãã³ãã©å±æ§ */ 73 intptr_t exinf; /* å¨æãã³ãã©ã®æ¡å¼µæ 74 å ± */ 75 CYCHDR cychdr; /* å¨æãã³ãã©ã®èµ·åçªå° */ 76 RELTIM cyctim; /* å¨æãã³ãã©ã®èµ·åå¨æ */ 77 RELTIM cycphs; /* å¨æãã³ãã©ã®èµ·åä½ç¸ */ 57 ATR cycatr; /* 周期ハンドラ属性 */ 58 intptr_t exinf; /* 周期ハンドラの拡張情報 */ 59 CYCHDR cychdr; /* 周期ハンドラの起動番地 */ 60 RELTIM cyctim; /* 周期ハンドラの起動周期 */ 61 RELTIM cycphs; /* 周期ハンドラの起動位相 */ 78 62 } CYCINIB; 79 63 80 64 /* 81 * å¨æãã³ãã©ç®¡çãããã¯65 * 周期ハンドラ管理ブロック 82 66 */ 83 67 typedef struct cyclic_handler_control_block { 84 const CYCINIB *p_cycinib; /* åæåãããã¯ã¸ã®ãã¤ã³ã¿ */ 85 bool_t cycsta; /* å¨æãã³ãã©ã®åä½ç¶æ 86 */ 87 EVTTIM evttim; /* 次ã«å¨æãã³ãã©ãèµ·åããæå» */ 88 TMEVTB tmevtb; /* ã¿ã¤ã ã¤ãã³ãããã㯠*/ 68 const CYCINIB *p_cycinib; /* 初期化ブロックへのポインタ */ 69 bool_t cycsta; /* 周期ハンドラの動作状態 */ 70 EVTTIM evttim; /* 次に周期ハンドラを起動する時刻 */ 71 TMEVTB tmevtb; /* タイムイベントブロック */ 89 72 } CYCCB; 90 73 91 74 /* 92 * 使ç¨ãã¦ããªãå¨æãã³ãã©ç®¡çãããã¯ã®ãªã¹ã75 * 使用していない周期ハンドラ管理ブロックのリスト 93 76 */ 94 77 extern QUEUE free_cyccb; 95 78 96 79 /* 97 * å¨æãã³ãã©IDã®æ大å¤ï¼kernel_cfg.cï¼80 * 周期ハンドラIDの最大値(kernel_cfg.c) 98 81 */ 99 82 extern const ID tmax_cycid; … … 101 84 102 85 /* 103 * å¨æãã³ãã©åæåãããã¯ã®ã¨ãªã¢ï¼kernel_cfg.cï¼86 * 周期ハンドラ初期化ブロックのエリア(kernel_cfg.c) 104 87 */ 105 88 extern const CYCINIB cycinib_table[]; … … 107 90 108 91 /* 109 * å¨æãã³ãã©ç®¡çãããã¯ã®ã¨ãªã¢ï¼kernel_cfg.cï¼92 * 周期ハンドラ管理ブロックのエリア(kernel_cfg.c) 110 93 */ 111 94 extern CYCCB cyccb_table[]; 112 95 113 96 /* 114 * å¨æãã³ãã©ç®¡çãããã¯ããå¨æãã³ãã©IDãåãåºãããã®ãã¯ã97 * 周期ハンドラ管理ブロックから周期ハンドラIDを取り出すためのマクロ 115 98 */ 116 99 #define CYCID(p_cyccb) ((ID)(((p_cyccb) - cyccb_table) + TMIN_CYCID)) 117 100 118 101 /* 119 * å¨æãã³ãã©æ©è½ã®åæå102 * 周期ハンドラ機能の初期化 120 103 */ 121 104 extern void initialize_cyclic(void); 122 105 123 106 /* 124 * å¨æãã³ãã©èµ·åã«ã¼ãã³107 * 周期ハンドラ起動ルーチン 125 108 */ 126 109 extern void call_cychdr(CYCCB *p_cyccb); -
Property svn:mime-type
changed from
-
rubycfg_asp/trunk/asp_dcre/kernel/cyclic.trb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby; 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: cyclic.trb 588 2016-02-05 12:54:58Z ertl-hiro $ … … 57 42 58 43 # 59 # å¨æéç¥æ©è½ã®çæã¹ã¯ãªãã44 # 周期通知機能の生成スクリプト 60 45 # 61 46 … … 66 51 67 52 def prepare(key, params) 68 # cycatr ãç¡å¹ã®å ´åï¼E_RSATRï¼ï¼»NGKI2383ï¼½69 # ï¼TA_STA以å¤ã®ããããã»ããããã¦ããå ´åï¼53 # cycatrが無効の場合(E_RSATR)[NGKI2383] 54 #(TA_STA以外のビットがセットされている場合) 70 55 if (params[:cycatr] & ~($TA_STA)) != 0 71 56 error_illegal_id("E_RSATR", params, :cycatr, :cycid) 72 57 end 73 58 74 # (0 < cyctim && cyctim <= TMAX_RELTIM) ã§ãªãå ´åï¼E_PARï¼ï¼»NGKI2397ï¼½59 # (0 < cyctim && cyctim <= TMAX_RELTIM)でない場合(E_PAR)[NGKI2397] 75 60 if !(0 < params[:cyctim] && params[:cyctim] <= $TMAX_RELTIM) 76 61 error_illegal_id("E_PAR", params, :cyctim, :cycid) 77 62 end 78 63 79 # (0 <= cycphs && cycphs <= TMAX_RELTIM) ã§ãªãå ´åï¼E_PARï¼ï¼»NGKI2399ï¼½64 # (0 <= cycphs && cycphs <= TMAX_RELTIM)でない場合(E_PAR)[NGKI2399] 80 65 if !(0 <= params[:cycphs] && params[:cycphs] <= $TMAX_RELTIM) 81 66 error_illegal_id("E_PAR", params, :cycphs, :cycid) … … 89 74 90 75 # 91 # å¨æéç¥ã«é¢ããæ 92 å ±ã®çæ 76 # 周期通知に関する情報の生成 93 77 # 94 78 $kernelCfgC.comment_header("Cyclic Handler Functions") -
Property svn:mime-type
changed from
-
rubycfg_asp/trunk/asp_dcre/kernel/dataqueue.c
-
Property svn:mime-type
changed from
text/x-csrc
totext/x-csrc; 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 * ãã¼ã¿ãã¥ã¼æ©è½44 * データキュー機能 60 45 */ 61 46 … … 67 52 68 53 /* 69 * ãã¬ã¼ã¹ãã°ãã¯ãã®ããã©ã«ãå®ç¾©54 * トレースログマクロのデフォルト定義 70 55 */ 71 56 #ifndef LOG_ACRE_DTQ_ENTER … … 174 159 175 160 /* 176 * ãã¼ã¿ãã¥ã¼ã®æ°161 * データキューの数 177 162 */ 178 163 #define tnum_dtq ((uint_t)(tmax_dtqid - TMIN_DTQID + 1)) … … 180 165 181 166 /* 182 * ãã¼ã¿ãã¥ã¼IDãããã¼ã¿ãã¥ã¼ç®¡çãããã¯ãåãåºãããã®ãã¯ã167 * データキューIDからデータキュー管理ブロックを取り出すためのマクロ 183 168 */ 184 169 #define INDEX_DTQ(dtqid) ((uint_t)((dtqid) - TMIN_DTQID)) … … 188 173 189 174 /* 190 * 使ç¨ãã¦ããªããã¼ã¿ãã¥ã¼ç®¡çãããã¯ã®ãªã¹ã175 * 使用していないデータキュー管理ブロックのリスト 191 176 */ 192 177 QUEUE free_dtqcb; 193 178 194 179 /* 195 * ãã¼ã¿ãã¥ã¼æ©è½ã®åæå180 * データキュー機能の初期化 196 181 */ 197 182 void … … 224 209 225 210 /* 226 * ãã¼ã¿ãã¥ã¼ç®¡çé åã¸ã®ãã¼ã¿ã®æ ¼ç´211 * データキュー管理領域へのデータの格納 227 212 */ 228 213 #ifdef TOPPERS_dtqenq … … 242 227 243 228 /* 244 * ãã¼ã¿ãã¥ã¼ç®¡çé åã¸ã®ãã¼ã¿ã®å¼·å¶æ ¼ç´229 * データキュー管理領域へのデータの強制格納 245 230 */ 246 231 #ifdef TOPPERS_dtqfenq … … 265 250 266 251 /* 267 * ãã¼ã¿ãã¥ã¼ç®¡çé åããã®ãã¼ã¿ã®ååºã252 * データキュー管理領域からのデータの取出し 268 253 */ 269 254 #ifdef TOPPERS_dtqdeq … … 283 268 284 269 /* 285 * ãã¼ã¿ãã¥ã¼ã¸ã®ãã¼ã¿éä¿¡270 * データキューへのデータ送信 286 271 */ 287 272 #ifdef TOPPERS_dtqsnd … … 311 296 312 297 /* 313 * ãã¼ã¿ãã¥ã¼ã¸ã®ãã¼ã¿å¼·å¶éä¿¡298 * データキューへのデータ強制送信 314 299 */ 315 300 #ifdef TOPPERS_dtqfsnd … … 334 319 335 320 /* 336 * ãã¼ã¿ãã¥ã¼ããã®ãã¼ã¿åä¿¡321 * データキューからのデータ受信 337 322 */ 338 323 #ifdef TOPPERS_dtqrcv … … 371 356 372 357 /* 373 * ãã¼ã¿ãã¥ã¼ã®çæ358 * データキューの生成 374 359 */ 375 360 #ifdef TOPPERS_acre_dtq … … 430 415 431 416 /* 432 * ãã¼ã¿ãã¥ã¼ã®åé¤417 * データキューの削除 433 418 */ 434 419 #ifdef TOPPERS_del_dtq … … 480 465 481 466 /* 482 * ãã¼ã¿ãã¥ã¼ã¸ã®éä¿¡467 * データキューへの送信 483 468 */ 484 469 #ifdef TOPPERS_snd_dtq … … 524 509 525 510 /* 526 * ãã¼ã¿ãã¥ã¼ã¸ã®éä¿¡ï¼ãã¼ãªã³ã°ï¼511 * データキューへの送信(ポーリング) 527 512 */ 528 513 #ifdef TOPPERS_psnd_dtq … … 563 548 564 549 /* 565 * ãã¼ã¿ãã¥ã¼ã¸ã®éä¿¡ï¼ãã¼ãªã³ã°ï¼éã¿ã¹ã¯ã³ã³ããã¹ãç¨ï¼550 * データキューへの送信(ポーリング,非タスクコンテキスト用) 566 551 */ 567 552 #ifdef TOPPERS_ipsnd_dtq … … 602 587 603 588 /* 604 * ãã¼ã¿ãã¥ã¼ã¸ã®éä¿¡ï¼ã¿ã¤ã ã¢ã¦ãããï¼589 * データキューへの送信(タイムアウトあり) 605 590 */ 606 591 #ifdef TOPPERS_tsnd_dtq … … 652 637 653 638 /* 654 * ãã¼ã¿ãã¥ã¼ã¸ã®å¼·å¶éä¿¡639 * データキューへの強制送信 655 640 */ 656 641 #ifdef TOPPERS_fsnd_dtq … … 690 675 691 676 /* 692 * ãã¼ã¿ãã¥ã¼ã¸ã®å¼·å¶éä¿¡ï¼éã¿ã¹ã¯ã³ã³ããã¹ãç¨ï¼677 * データキューへの強制送信(非タスクコンテキスト用) 693 678 */ 694 679 #ifdef TOPPERS_ifsnd_dtq … … 728 713 729 714 /* 730 * ãã¼ã¿ãã¥ã¼ããã®åä¿¡715 * データキューからの受信 731 716 */ 732 717 #ifdef TOPPERS_rcv_dtq … … 777 762 778 763 /* 779 * ãã¼ã¿ãã¥ã¼ããã®åä¿¡ï¼ãã¼ãªã³ã°ï¼764 * データキューからの受信(ポーリング) 780 765 */ 781 766 #ifdef TOPPERS_prcv_dtq … … 816 801 817 802 /* 818 * ãã¼ã¿ãã¥ã¼ããã®åä¿¡ï¼ã¿ã¤ã ã¢ã¦ãããï¼803 * データキューからの受信(タイムアウトあり) 819 804 */ 820 805 #ifdef TOPPERS_trcv_dtq … … 870 855 871 856 /* 872 * ãã¼ã¿ãã¥ã¼ã®ååæå857 * データキューの再初期化 873 858 */ 874 859 #ifdef TOPPERS_ini_dtq … … 913 898 914 899 /* 915 * ãã¼ã¿ãã¥ã¼ã®ç¶æ 916 åç 917 § 900 * データキューの状態参照 918 901 */ 919 902 #ifdef TOPPERS_ref_dtq -
Property svn:mime-type
changed from
-
rubycfg_asp/trunk/asp_dcre/kernel/dataqueue.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 * ãã¼ã¿ãã¥ã¼æ©è½44 * データキュー機能 60 45 */ 61 46 … … 66 51 67 52 /* 68 * ãã¼ã¿ç®¡çãããã¯53 * データ管理ブロック 69 54 */ 70 55 typedef struct data_management_block { 71 intptr_t data; /* ãã¼ã¿æ¬ä½*/56 intptr_t data; /* データ本体 */ 72 57 } DTQMB; 73 58 74 59 /* 75 * ãã¼ã¿ãã¥ã¼åæåãããã¯60 * データキュー初期化ブロック 76 61 * 77 * ãã®æ§é ä½ã¯ï¼åæã»éä¿¡ãªãã¸ã§ã¯ãã®åæåãããã¯ã®å 78 ±éé¨å 79 * ï¼WOBJINIBï¼ãæ¡å¼µï¼ãªãã¸ã§ã¯ãæåè¨èªã®ç¶æ¿ã«ç¸å½ï¼ãããã®ã§ï¼ 80 * æåã®ãã£ã¼ã«ããå 81 ±éã«ãªã£ã¦ããï¼ 62 * この構造体は,同期・通信オブジェクトの初期化ブロックの共通部分 63 * (WOBJINIB)を拡張(オブジェクト指向言語の継承に相当)したもので, 64 * 最初のフィールドが共通になっている. 82 65 */ 83 66 typedef struct dataqueue_initialization_block { 84 ATR dtqatr; /* ãã¼ã¿ãã¥ã¼å±æ§ */ 85 uint_t dtqcnt; /* ãã¼ã¿ãã¥ã¼ã®å®¹é */ 86 DTQMB *p_dtqmb; /* ãã¼ã¿ãã¥ã¼ç®¡çé åã®å 87 é çªå° */ 67 ATR dtqatr; /* データキュー属性 */ 68 uint_t dtqcnt; /* データキューの容量 */ 69 DTQMB *p_dtqmb; /* データキュー管理領域の先頭番地 */ 88 70 } DTQINIB; 89 71 90 72 /* 91 * ãã¼ã¿ãã¥ã¼ç®¡çãããã¯73 * データキュー管理ブロック 92 74 * 93 * ãã®æ§é ä½ã¯ï¼åæã»éä¿¡ãªãã¸ã§ã¯ãã®ç®¡çãããã¯ã®å 94 ±éé¨åï¼WOBJCBï¼ 95 * ãæ¡å¼µï¼ãªãã¸ã§ã¯ãæåè¨èªã®ç¶æ¿ã«ç¸å½ï¼ãããã®ã§ï¼æåã®2ã¤ã® 96 * ãã£ã¼ã«ããå 97 ±éã«ãªã£ã¦ããï¼ 75 * この構造体は,同期・通信オブジェクトの管理ブロックの共通部分(WOBJCB) 76 * を拡張(オブジェクト指向言語の継承に相当)したもので,最初の2つの 77 * フィールドが共通になっている. 98 78 */ 99 79 typedef struct dataqueue_control_block { 100 QUEUE swait_queue; /* ãã¼ã¿ãã¥ã¼éä¿¡å¾ 101 ã¡ãã¥ã¼ */ 102 const DTQINIB *p_dtqinib; /* åæåãããã¯ã¸ã®ãã¤ã³ã¿ */ 103 QUEUE rwait_queue; /* ãã¼ã¿ãã¥ã¼åä¿¡å¾ 104 ã¡ãã¥ã¼ */ 105 uint_t count; /* ãã¼ã¿ãã¥ã¼ä¸ã®ãã¼ã¿ã®æ° */ 106 uint_t head; /* æåã®ãã¼ã¿ã®æ ¼ç´å ´æ */ 107 uint_t tail; /* æå¾ã®ãã¼ã¿ã®æ ¼ç´å ´æã®æ¬¡ */ 80 QUEUE swait_queue; /* データキュー送信待ちキュー */ 81 const DTQINIB *p_dtqinib; /* 初期化ブロックへのポインタ */ 82 QUEUE rwait_queue; /* データキュー受信待ちキュー */ 83 uint_t count; /* データキュー中のデータの数 */ 84 uint_t head; /* 最初のデータの格納場所 */ 85 uint_t tail; /* 最後のデータの格納場所の次 */ 108 86 } DTQCB; 109 87 110 88 /* 111 * ãã¼ã¿ãã¥ã¼å¾ 112 ã¡æ 113 å ±ãããã¯ã®å®ç¾© 89 * データキュー待ち情報ブロックの定義 114 90 * 115 * ãã®æ§é ä½ã¯ï¼åæã»éä¿¡ãªãã¸ã§ã¯ãã®å¾ 116 ã¡æ 117 å ±ãããã¯ã®å 118 ±éé¨å 119 * ï¼WINFO_WOBJï¼ãæ¡å¼µï¼ãªãã¸ã§ã¯ãæåè¨èªã®ç¶æ¿ã«ç¸å½ï¼ãããã®ã§ï¼ 120 * æåã®2ã¤ã®ãã£ã¼ã«ããå 121 ±éã«ãªã£ã¦ããï¼ 122 * ãã¼ã¿ãã¥ã¼ã¸ã®éä¿¡å¾ 123 ã¡ã¨ãã¼ã¿ãã¥ã¼ããã®åä¿¡å¾ 124 ã¡ã§ï¼åãå¾ 125 ã¡æ 126 127 * å ±ãããã¯ã使ãï¼ 91 * この構造体は,同期・通信オブジェクトの待ち情報ブロックの共通部分 92 * (WINFO_WOBJ)を拡張(オブジェクト指向言語の継承に相当)したもので, 93 * 最初の2つのフィールドが共通になっている. 94 * データキューへの送信待ちとデータキューからの受信待ちで,同じ待ち情 95 * 報ブロックを使う. 128 96 */ 129 97 typedef struct dataqueue_waiting_information { 130 WINFO winfo; /* æ¨æºã®å¾ 131 ã¡æ 132 å ±ããã㯠*/ 133 DTQCB *p_dtqcb; /* å¾ 134 ã£ã¦ãããã¼ã¿ãã¥ã¼ã®ç®¡çããã㯠*/ 135 intptr_t data; /* éåä¿¡ãã¼ã¿ */ 98 WINFO winfo; /* 標準の待ち情報ブロック */ 99 DTQCB *p_dtqcb; /* 待っているデータキューの管理ブロック */ 100 intptr_t data; /* 送受信データ */ 136 101 } WINFO_DTQ; 137 102 138 103 /* 139 * 使ç¨ãã¦ããªããã¼ã¿ãã¥ã¼ç®¡çãããã¯ã®ãªã¹ã104 * 使用していないデータキュー管理ブロックのリスト 140 105 */ 141 106 extern QUEUE free_dtqcb; 142 107 143 108 /* 144 * ãã¼ã¿ãã¥ã¼IDã®æ大å¤ï¼kernel_cfg.cï¼109 * データキューIDの最大値(kernel_cfg.c) 145 110 */ 146 111 extern const ID tmax_dtqid; … … 148 113 149 114 /* 150 * ãã¼ã¿ãã¥ã¼åæåãããã¯ã®ã¨ãªã¢ï¼kernel_cfg.cï¼115 * データキュー初期化ブロックのエリア(kernel_cfg.c) 151 116 */ 152 117 extern const DTQINIB dtqinib_table[]; … … 154 119 155 120 /* 156 * ãã¼ã¿ãã¥ã¼ç®¡çãããã¯ã®ã¨ãªã¢ï¼kernel_cfg.cï¼121 * データキュー管理ブロックのエリア(kernel_cfg.c) 157 122 */ 158 123 extern DTQCB dtqcb_table[]; 159 124 160 125 /* 161 * ãã¼ã¿ãã¥ã¼ç®¡çãããã¯ãããã¼ã¿ãã¥ã¼IDãåãåºãããã®ãã¯ã126 * データキュー管理ブロックからデータキューIDを取り出すためのマクロ 162 127 */ 163 128 #define DTQID(p_dtqcb) ((ID)(((p_dtqcb) - dtqcb_table) + TMIN_DTQID)) 164 129 165 130 /* 166 * ãã¼ã¿ãã¥ã¼æ©è½ã®åæå131 * データキュー機能の初期化 167 132 */ 168 133 extern void initialize_dataqueue(void); 169 134 170 135 /* 171 * ãã¼ã¿ãã¥ã¼ç®¡çé åã¸ã®ãã¼ã¿ã®æ ¼ç´136 * データキュー管理領域へのデータの格納 172 137 */ 173 138 extern void enqueue_data(DTQCB *p_dtqcb, intptr_t data); 174 139 175 140 /* 176 * ãã¼ã¿ãã¥ã¼ç®¡çé åã¸ã®ãã¼ã¿ã®å¼·å¶æ ¼ç´141 * データキュー管理領域へのデータの強制格納 177 142 */ 178 143 extern void force_enqueue_data(DTQCB *p_dtqcb, intptr_t data); 179 144 180 145 /* 181 * ãã¼ã¿ãã¥ã¼ç®¡çé åããã®ãã¼ã¿ã®ååºã146 * データキュー管理領域からのデータの取出し 182 147 */ 183 148 extern void dequeue_data(DTQCB *p_dtqcb, intptr_t *p_data); 184 149 185 150 /* 186 * ãã¼ã¿ãã¥ã¼ã¸ã®ãã¼ã¿éä¿¡151 * データキューへのデータ送信 187 152 */ 188 153 extern bool_t send_data(DTQCB *p_dtqcb, intptr_t data, bool_t *p_dspreq); 189 154 190 155 /* 191 * ãã¼ã¿ãã¥ã¼ã¸ã®ãã¼ã¿å¼·å¶éä¿¡156 * データキューへのデータ強制送信 192 157 */ 193 158 extern bool_t force_send_data(DTQCB *p_dtqcb, intptr_t data); 194 159 195 160 /* 196 * ãã¼ã¿ãã¥ã¼ããã®ãã¼ã¿åä¿¡161 * データキューからのデータ受信 197 162 */ 198 163 extern bool_t receive_data(DTQCB *p_dtqcb, intptr_t *p_data, -
Property svn:mime-type
changed from
-
rubycfg_asp/trunk/asp_dcre/kernel/dataqueue.trb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby; 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: dataqueue.trb 668 2016-03-03 13:57:53Z ertl-hiro $ … … 57 42 58 43 # 59 # ãã¼ã¿ãã¥ã¼æ©è½ã®çæã¹ã¯ãªãã44 # データキュー機能の生成スクリプト 60 45 # 61 46 … … 66 51 67 52 def prepare(key, params) 68 # ãã©ã¡ã¼ã¿ãçç¥ãããæã®ããã©ã«ãå¤ã®è¨å®53 # パラメータが省略された時のデフォルト値の設定 69 54 params[:dtqmb] ||= "NULL" 70 55 71 # dtqatr ãç¡å¹ã®å ´åï¼E_RSATRï¼ï¼»NGKI1669ï¼½72 # ï¼TA_TPRI以å¤ã®ããããã»ããããã¦ããå ´åï¼56 # dtqatrが無効の場合(E_RSATR)[NGKI1669] 57 #(TA_TPRI以外のビットがセットされている場合) 73 58 if (params[:dtqatr] & ~($TA_TPRI)) != 0 74 59 error_illegal_id("E_RSATR", params, :dtqatr, :dtqid) 75 60 end 76 61 77 # dtqmb ãNULLã§ãªãå ´åï¼E_NOSPTï¼ï¼»ASPS0132ï¼½62 # dtqmbがNULLでない場合(E_NOSPT)[ASPS0132] 78 63 if params[:dtqmb] != "NULL" 79 64 error_illegal_id("E_NOSPT", params, :dtqmb, :dtqid) 80 65 end 81 66 82 # ãã¼ã¿ãã¥ã¼ç®¡çé å67 # データキュー管理領域 83 68 if params[:dtqcnt] > 0 84 69 dtqmbName = "_kernel_dtqmb_#{params[:dtqid]}" … … 97 82 98 83 # 99 # ãã¼ã¿ãã¥ã¼ã«é¢ããæ 100 å ±ã®çæ 84 # データキューに関する情報の生成 101 85 # 102 86 $kernelCfgC.comment_header("Dataqueue Functions") -
Property svn:mime-type
changed from
-
rubycfg_asp/trunk/asp_dcre/kernel/eventflag.c
-
Property svn:mime-type
changed from
text/x-csrc
totext/x-csrc; 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 * ã¤ãã³ããã©ã°æ©è½44 * イベントフラグ機能 60 45 */ 61 46 … … 67 52 68 53 /* 69 * ãã¬ã¼ã¹ãã°ãã¯ãã®ããã©ã«ãå®ç¾©54 * トレースログマクロのデフォルト定義 70 55 */ 71 56 #ifndef LOG_ACRE_FLG_ENTER … … 150 135 151 136 /* 152 * ã¤ãã³ããã©ã°ã®æ°137 * イベントフラグの数 153 138 */ 154 139 #define tnum_flg ((uint_t)(tmax_flgid - TMIN_FLGID + 1)) … … 156 141 157 142 /* 158 * ã¤ãã³ããã©ã°IDããã¤ãã³ããã©ã°ç®¡çãããã¯ãåãåºãããã®ãã¯ã143 * イベントフラグIDからイベントフラグ管理ブロックを取り出すためのマクロ 159 144 */ 160 145 #define INDEX_FLG(flgid) ((uint_t)((flgid) - TMIN_FLGID)) … … 164 149 165 150 /* 166 * 使ç¨ãã¦ããªãã¤ãã³ããã©ã°ç®¡çãããã¯ã®ãªã¹ã151 * 使用していないイベントフラグ管理ブロックのリスト 167 152 */ 168 153 QUEUE free_flgcb; 169 154 170 155 /* 171 * ã¤ãã³ããã©ã°æ©è½ã®åæå156 * イベントフラグ機能の初期化 172 157 */ 173 158 void … … 197 182 198 183 /* 199 * ã¤ãã³ããã©ã°å¾ 200 ã¡è§£é¤æ¡ä»¶ã®ãã§ã㯠184 * イベントフラグ待ち解除条件のチェック 201 185 */ 202 186 #ifdef TOPPERS_flgcnd … … 219 203 220 204 /* 221 * ã¤ãã³ããã©ã°ã®çæ205 * イベントフラグの生成 222 206 */ 223 207 #ifdef TOPPERS_acre_flg … … 258 242 259 243 /* 260 * ã¤ãã³ããã©ã°ã®åé¤244 * イベントフラグの削除 261 245 */ 262 246 #ifdef TOPPERS_del_flg … … 302 286 303 287 /* 304 * ã¤ãã³ããã©ã°ã®ã»ãã288 * イベントフラグのセット 305 289 */ 306 290 #ifdef TOPPERS_set_flg … … 358 342 359 343 /* 360 * ã¤ãã³ããã©ã°ã®ã»ããï¼éã¿ã¹ã¯ã³ã³ããã¹ãç¨ï¼344 * イベントフラグのセット(非タスクコンテキスト用) 361 345 */ 362 346 #ifdef TOPPERS_iset_flg … … 410 394 411 395 /* 412 * ã¤ãã³ããã©ã°ã®ã¯ãªã¢396 * イベントフラグのクリア 413 397 */ 414 398 #ifdef TOPPERS_clr_flg … … 443 427 444 428 /* 445 * ã¤ãã³ããã©ã°å¾ 446 ã¡ 429 * イベントフラグ待ち 447 430 */ 448 431 #ifdef TOPPERS_wai_flg … … 494 477 495 478 /* 496 * ã¤ãã³ããã©ã°å¾ 497 ã¡ï¼ãã¼ãªã³ã°ï¼ 479 * イベントフラグ待ち(ポーリング) 498 480 */ 499 481 #ifdef TOPPERS_pol_flg … … 536 518 537 519 /* 538 * ã¤ãã³ããã©ã°å¾ 539 ã¡ï¼ã¿ã¤ã ã¢ã¦ãããï¼ 520 * イベントフラグ待ち(タイムアウトあり) 540 521 */ 541 522 #ifdef TOPPERS_twai_flg … … 593 574 594 575 /* 595 * ã¤ãã³ããã©ã°ã®ååæå576 * イベントフラグの再初期化 596 577 */ 597 578 #ifdef TOPPERS_ini_flg … … 631 612 632 613 /* 633 * ã¤ãã³ããã©ã°ã®ç¶æ 634 åç 635 § 614 * イベントフラグの状態参照 636 615 */ 637 616 #ifdef TOPPERS_ref_flg -
Property svn:mime-type
changed from
-
rubycfg_asp/trunk/asp_dcre/kernel/eventflag.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 * ã¤ãã³ããã©ã°æ©è½44 * イベントフラグ機能 60 45 */ 61 46 … … 66 51 67 52 /* 68 * ã¤ãã³ããã©ã°åæåãããã¯53 * イベントフラグ初期化ブロック 69 54 * 70 * ãã®æ§é ä½ã¯ï¼åæã»éä¿¡ãªãã¸ã§ã¯ãã®åæåãããã¯ã®å 71 ±éé¨å 72 * ï¼WOBJINIBï¼ãæ¡å¼µï¼ãªãã¸ã§ã¯ãæåè¨èªã®ç¶æ¿ã«ç¸å½ï¼ãããã®ã§ï¼ 73 * æåã®ãã£ã¼ã«ããå 74 ±éã«ãªã£ã¦ããï¼ 55 * この構造体は,同期・通信オブジェクトの初期化ブロックの共通部分 56 * (WOBJINIB)を拡張(オブジェクト指向言語の継承に相当)したもので, 57 * 最初のフィールドが共通になっている. 75 58 */ 76 59 typedef struct eventflag_initialization_block { 77 ATR flgatr; /* ã¤ãã³ããã©ã°å±æ§*/78 FLGPTN iflgptn; /* ã¤ãã³ããã©ã°ã®ããããã¿ã¼ã³ã®åæå¤*/60 ATR flgatr; /* イベントフラグ属性 */ 61 FLGPTN iflgptn; /* イベントフラグのビットパターンの初期値 */ 79 62 } FLGINIB; 80 63 81 64 /* 82 * ã¤ãã³ããã©ã°ç®¡çãããã¯65 * イベントフラグ管理ブロック 83 66 * 84 * ãã®æ§é ä½ã¯ï¼åæã»éä¿¡ãªãã¸ã§ã¯ãã®ç®¡çãããã¯ã®å 85 ±éé¨åï¼WOBJCBï¼ 86 * ãæ¡å¼µï¼ãªãã¸ã§ã¯ãæåè¨èªã®ç¶æ¿ã«ç¸å½ï¼ãããã®ã§ï¼æåã®2ã¤ã® 87 * ãã£ã¼ã«ããå 88 ±éã«ãªã£ã¦ããï¼ 67 * この構造体は,同期・通信オブジェクトの管理ブロックの共通部分(WOBJCB) 68 * を拡張(オブジェクト指向言語の継承に相当)したもので,最初の2つの 69 * フィールドが共通になっている. 89 70 */ 90 71 typedef struct eventflag_control_block { 91 QUEUE wait_queue; /* ã¤ãã³ããã©ã°å¾ 92 ã¡ãã¥ã¼ */ 93 const FLGINIB *p_flginib; /* åæåãããã¯ã¸ã®ãã¤ã³ã¿ */ 94 FLGPTN flgptn; /* ã¤ãã³ããã©ã°ç¾å¨ãã¿ã¼ã³ */ 72 QUEUE wait_queue; /* イベントフラグ待ちキュー */ 73 const FLGINIB *p_flginib; /* 初期化ブロックへのポインタ */ 74 FLGPTN flgptn; /* イベントフラグ現在パターン */ 95 75 } FLGCB; 96 76 97 77 /* 98 * ã¤ãã³ããã©ã°å¾ 99 ã¡æ 100 å ±ãããã¯ã®å®ç¾© 78 * イベントフラグ待ち情報ブロックの定義 101 79 * 102 * ãã®æ§é ä½ã¯ï¼åæã»éä¿¡ãªãã¸ã§ã¯ãã®å¾ 103 ã¡æ 104 å ±ãããã¯ã®å 105 ±éé¨å 106 * ï¼WINFO_WOBJï¼ãæ¡å¼µï¼ãªãã¸ã§ã¯ãæåè¨èªã®ç¶æ¿ã«ç¸å½ï¼ãããã®ã§ï¼ 107 * æåã®2ã¤ã®ãã£ã¼ã«ããå 108 ±éã«ãªã£ã¦ããï¼ 80 * この構造体は,同期・通信オブジェクトの待ち情報ブロックの共通部分 81 * (WINFO_WOBJ)を拡張(オブジェクト指向言語の継承に相当)したもので, 82 * 最初の2つのフィールドが共通になっている. 109 83 * 110 * flgptnã¯ï¼waiptnããã³wfmodeã¨åæã«ä½¿ããã¨ã¯ãªãããï¼å 111 ±ç¨ä½ã使 112 * ãã°ã¡ã¢ãªãç¯ç´ãããã¨ãå¯è½ã§ããï¼ 84 * flgptnは,waiptnおよびwfmodeと同時に使うことはないため,共用体を使 85 * えばメモリを節約することが可能である. 113 86 */ 114 87 typedef struct eventflag_waiting_information { 115 WINFO winfo; /* æ¨æºã®å¾ 116 ã¡æ 117 å ±ããã㯠*/ 118 FLGCB *p_flgcb; /* å¾ 119 ã£ã¦ããã¤ãã³ããã©ã°ã®ç®¡çããã㯠*/ 120 FLGPTN waiptn; /* å¾ 121 ã¡ãã¿ã¼ã³ */ 122 MODE wfmode; /* å¾ 123 ã¡ã¢ã¼ã */ 124 FLGPTN flgptn; /* å¾ 125 ã¡è§£é¤æã®ãã¿ã¼ã³ */ 88 WINFO winfo; /* 標準の待ち情報ブロック */ 89 FLGCB *p_flgcb; /* 待っているイベントフラグの管理ブロック */ 90 FLGPTN waiptn; /* 待ちパターン */ 91 MODE wfmode; /* 待ちモード */ 92 FLGPTN flgptn; /* 待ち解除時のパターン */ 126 93 } WINFO_FLG; 127 94 128 95 /* 129 * 使ç¨ãã¦ããªãã¤ãã³ããã©ã°ç®¡çãããã¯ã®ãªã¹ã96 * 使用していないイベントフラグ管理ブロックのリスト 130 97 */ 131 98 extern QUEUE free_flgcb; 132 99 133 100 /* 134 * ã¤ãã³ããã©ã°IDã®æ大å¤ï¼kernel_cfg.cï¼101 * イベントフラグIDの最大値(kernel_cfg.c) 135 102 */ 136 103 extern const ID tmax_flgid; … … 138 105 139 106 /* 140 * ã¤ãã³ããã©ã°åæåãããã¯ã®ã¨ãªã¢ï¼kernel_cfg.cï¼107 * イベントフラグ初期化ブロックのエリア(kernel_cfg.c) 141 108 */ 142 109 extern const FLGINIB flginib_table[]; … … 144 111 145 112 /* 146 * ã¤ãã³ããã©ã°ç®¡çãããã¯ã®ã¨ãªã¢ï¼kernel_cfg.cï¼113 * イベントフラグ管理ブロックのエリア(kernel_cfg.c) 147 114 */ 148 115 extern FLGCB flgcb_table[]; 149 116 150 117 /* 151 * ã¤ãã³ããã©ã°ç®¡çãããã¯ããã¤ãã³ããã©ã°IDãåãåºãããã®ãã¯ã118 * イベントフラグ管理ブロックからイベントフラグIDを取り出すためのマクロ 152 119 */ 153 120 #define FLGID(p_flgcb) ((ID)(((p_flgcb) - flgcb_table) + TMIN_FLGID)) 154 121 155 122 /* 156 * ã¤ãã³ããã©ã°æ©è½ã®åæå123 * イベントフラグ機能の初期化 157 124 */ 158 125 extern void initialize_eventflag(void); 159 126 160 127 /* 161 * ã¤ãã³ããã©ã°å¾ 162 ã¡è§£é¤æ¡ä»¶ã®ãã§ã㯠128 * イベントフラグ待ち解除条件のチェック 163 129 */ 164 130 extern bool_t check_flg_cond(FLGCB *p_flgcb, FLGPTN waiptn, -
Property svn:mime-type
changed from
-
rubycfg_asp/trunk/asp_dcre/kernel/eventflag.trb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby; 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: eventflag.trb 588 2016-02-05 12:54:58Z ertl-hiro $ … … 57 42 58 43 # 59 # ã¤ãã³ããã©ã°æ©è½ã®çæã¹ã¯ãªãã44 # イベントフラグ機能の生成スクリプト 60 45 # 61 46 … … 66 51 67 52 def prepare(key, params) 68 # flgatr ãç¡å¹ã®å ´åï¼E_RSATRï¼ï¼»NGKI1562ï¼½69 # ï¼TA_TPRIï¼TA_WMULï¼TA_CLR以å¤ã®ããããã»ããããã¦ããå ´åï¼53 # flgatrが無効の場合(E_RSATR)[NGKI1562] 54 #(TA_TPRI,TA_WMUL,TA_CLR以外のビットがセットされている場合) 70 55 if (params[:flgatr] & ~($TA_TPRI|$TA_WMUL|$TA_CLR)) != 0 71 56 error_illegal_id("E_RSATR", params, :flgatr, :flgid) 72 57 end 73 58 74 # iflgptn ãFLGPTNã«æ ¼ç´ã§ããªãå ´åï¼E_PARï¼ï¼»NGKI3275ï¼½59 # iflgptnがFLGPTNに格納できない場合(E_PAR)[NGKI3275] 75 60 if (params[:iflgptn] & ~((1 << $TBIT_FLGPTN) - 1)) != 0 76 61 error_wrong_id("E_PAR", params, :iflgptn, :flgid, "too large") … … 84 69 85 70 # 86 # ã¤ãã³ããã©ã°ã«é¢ããæ 87 å ±ã®çæ 71 # イベントフラグに関する情報の生成 88 72 # 89 73 $kernelCfgC.comment_header("Eventflag Functions") -
Property svn:mime-type
changed from
-
rubycfg_asp/trunk/asp_dcre/kernel/exception.c
-
Property svn:mime-type
changed from
text/x-csrc
totext/x-csrc; 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 * CPU ä¾å¤ç®¡çæ©è½44 * CPU例外管理機能 60 45 */ 61 46 … … 65 50 66 51 /* 67 * ãã¬ã¼ã¹ãã°ãã¯ãã®ããã©ã«ãå®ç¾©52 * トレースログマクロのデフォルト定義 68 53 */ 69 54 #ifndef LOG_XSNS_DPN_ENTER … … 84 69 85 70 /* 86 * CPU ä¾å¤ãã³ãã©ç®¡çæ©è½ã®åæå71 * CPU例外ハンドラ管理機能の初期化 87 72 */ 88 73 #ifdef TOPPERS_excini … … 105 90 106 91 /* 107 * CPUä¾å¤ã®çºçããã³ã³ããã¹ãã®åç 108 § 92 * CPU例外の発生したコンテキストの参照 109 93 */ 110 94 111 95 /* 112 * CPUä¾å¤çºçæã®ãã£ã¹ãããä¿çç¶æ 113 ã®åç 114 § 96 * CPU例外発生時のディスパッチ保留状態の参照 115 97 * 116 * CPUä¾å¤ãã³ãã©ä¸ã§disdspãå¤åãããã¨ã¯ãªãããï¼CPUä¾å¤ãçºçã 117 * ãæã®disdspãä¿åãã¦ããå¿ 118 è¦ã¯ãªãï¼ 98 * CPU例外ハンドラ中でdisdspが変化することはないため,CPU例外が発生し 99 * た時のdisdspを保存しておく必要はない. 119 100 */ 120 101 #ifdef TOPPERS_xsns_dpn … … 135 116 136 117 /* 137 * CPUä¾å¤çºçæã®ã¿ã¹ã¯ä¾å¤å¦çä¿çç¶æ 138 ã®åç 139 § 118 * CPU例外発生時のタスク例外処理保留状態の参照 140 119 * 141 * CPUä¾å¤ãã³ãã©ä¸ã§p_runtskã¨p_runtsk->enatexãå¤åãããã¨ã¯ãªã 142 * ããï¼CPUä¾å¤ãçºçããæã®p_runtsk->enatexãä¿åãã¦ããå¿ 143 è¦ã¯ãª 144 * ãï¼ 120 * CPU例外ハンドラ中でp_runtskとp_runtsk->enatexが変化することはない 121 * ため,CPU例外が発生した時のp_runtsk->enatexを保存しておく必要はな 122 * い. 145 123 */ 146 124 #ifdef TOPPERS_xsns_xpn -
Property svn:mime-type
changed from
-
rubycfg_asp/trunk/asp_dcre/kernel/exception.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 * CPU ä¾å¤ç®¡çæ©è½44 * CPU例外管理機能 60 45 */ 61 46 … … 66 51 67 52 /* 68 * CPU ä¾å¤ãã³ãã©åæåãããã¯53 * CPU例外ハンドラ初期化ブロック 69 54 */ 70 55 typedef struct cpu_exception_handler_initialization_block { 71 EXCNO excno; /* CPUä¾å¤ãã³ãã©çªå· */ 72 ATR excatr; /* CPUä¾å¤ãã³ãã©å±æ§ */ 73 FP exc_entry; /* CPUä¾å¤ãã³ãã©ã®åºå 74 ¥å£å¦çã®çªå° */ 56 EXCNO excno; /* CPU例外ハンドラ番号 */ 57 ATR excatr; /* CPU例外ハンドラ属性 */ 58 FP exc_entry; /* CPU例外ハンドラの出入口処理の番地 */ 75 59 } EXCINIB; 76 60 77 61 /* 78 * CPU ä¾å¤ãã³ãã©çªå·ã®æ°ï¼kernel_cfg.cï¼62 * CPU例外ハンドラ番号の数(kernel_cfg.c) 79 63 */ 80 64 extern const uint_t tnum_excno; 81 65 82 66 /* 83 * CPU ä¾å¤ãã³ãã©åæåãããã¯ã®ã¨ãªã¢ï¼kernel_cfg.cï¼67 * CPU例外ハンドラ初期化ブロックのエリア(kernel_cfg.c) 84 68 */ 85 69 extern const EXCINIB excinib_table[]; … … 88 72 89 73 /* 90 * CPU ä¾å¤ãã³ãã©ç®¡çæ©è½ã®åæå74 * CPU例外ハンドラ管理機能の初期化 91 75 */ 92 76 extern void initialize_exception(void); -
Property svn:mime-type
changed from
-
rubycfg_asp/trunk/asp_dcre/kernel/exception.trb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby; 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: exception.trb 663 2016-02-27 04:45:50Z ertl-hiro $ … … 57 42 58 43 # 59 # CPU ä¾å¤ç®¡çæ©è½ã®çæã¹ã¯ãªãã44 # CPU例外管理機能の生成スクリプト 60 45 # 61 46 62 47 # 63 # kernel_cfg.c ã®çæ48 # kernel_cfg.cの生成 64 49 # 65 50 $kernelCfgC.comment_header("CPU Exception Management Functions") 66 51 67 52 # 68 # CPU ä¾å¤ãã³ãã©ã«é¢ããã¨ã©ã¼ãã§ãã¯53 # CPU例外ハンドラに関するエラーチェック 69 54 # 70 55 $cfgData[:DEF_EXC].each do |key, params| 71 # excno ãCPUä¾å¤ãã³ãã©çªå·ã¨ãã¦æ£ãããªãå ´åï¼E_PARï¼ï¼»NGKI3134ï¼½56 # excnoがCPU例外ハンドラ番号として正しくない場合(E_PAR)[NGKI3134] 72 57 if $EXCNO_VALID.index(params[:excno]).nil? 73 58 error_illegal("E_PAR", params, :excno) 74 59 end 75 60 76 # excatr ãç¡å¹ã®å ´åï¼E_RSATRï¼ï¼»NGKI3131ï¼½77 # ï¼TARGET_EXCATR以å¤ã®ããããã»ããããã¦ããå ´åï¼61 # excatrが無効の場合(E_RSATR)[NGKI3131] 62 #(TARGET_EXCATR以外のビットがセットされている場合) 78 63 if (params[:excatr] & ~($TARGET_EXCATR)) != 0 79 64 error_illegal_sym("E_RSATR", params, :excatr, :excno) … … 82 67 83 68 # 84 # CPUä¾å¤ãã³ãã©ã®ããã®æ¨æºçãªåæåæ 85 å ±ã®çæ 69 # CPU例外ハンドラのための標準的な初期化情報の生成 86 70 # 87 71 if !$OMIT_INITIALIZE_EXCEPTION 88 72 # 89 # å®ç¾©ããCPUä¾å¤ãã³ãã©ã®æ°73 # 定義するCPU例外ハンドラの数 90 74 # 91 75 $kernelCfgC.add(<<EOS) … … 96 80 if $cfgData[:DEF_EXC].size != 0 97 81 # 98 # CPU ä¾å¤ãã³ãã©ã®ã¨ã³ããª82 # CPU例外ハンドラのエントリ 99 83 # 100 84 $cfgData[:DEF_EXC].each do |key, params| … … 105 89 106 90 # 107 # CPU ä¾å¤ãã³ãã©åæåãããã¯91 # CPU例外ハンドラ初期化ブロック 108 92 # 109 93 $kernelCfgC.add("const EXCINIB _kernel_excinib_table[TNUM_EXCNO] = {") … … 122 106 123 107 # 124 # CPU ä¾å¤ç®¡çæ©è½åæåé¢æ°ã®è¿½å108 # CPU例外管理機能初期化関数の追加 125 109 # 126 110 $initializeFunctions.push("_kernel_initialize_exception();") -
Property svn:mime-type
changed from
-
rubycfg_asp/trunk/asp_dcre/kernel/genoffset.trb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby; charset=UTF-8
r313 r315 8 8 # Graduate School of Information Science, Nagoya Univ., JAPAN 9 9 # 10 # ä¸è¨èä½æ¨©è 11 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 12 # ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 13 # å¤ã»åé 14 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 15 # (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 16 # 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 17 # ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 18 # (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 19 # ç¨ã§ããå½¢ã§åé 20 å¸ããå ´åã«ã¯ï¼åé 21 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 22 # è 23 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 24 # ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 25 # (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 26 # ç¨ã§ããªãå½¢ã§åé 27 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 28 # ã¨ï¼ 29 # (a) åé 30 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 31 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 32 # ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 33 # (b) åé 34 å¸ã®å½¢æ 35 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 36 # å ±åãããã¨ï¼ 37 # (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 38 # 害ãããï¼ä¸è¨èä½æ¨©è 39 ããã³TOPPERSããã¸ã§ã¯ããå 40 責ãããã¨ï¼ 41 # ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 42 # ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 43 ããã³TOPPERSããã¸ã§ã¯ãã 44 # å 45 責ãããã¨ï¼ 10 # 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 11 # ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 12 # 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 13 # (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 14 # 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 15 # スコード中に含まれていること. 16 # (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 17 # 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 18 # 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 19 # の無保証規定を掲載すること. 20 # (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 21 # 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 22 # と. 23 # (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 24 # 作権表示,この利用条件および下記の無保証規定を掲載すること. 25 # (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 26 # 報告すること. 27 # (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 28 # 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 29 # また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 30 # 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 31 # 免責すること. 46 32 # 47 # æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 48 ã 49 # ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 50 # ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 51 # ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 52 # ã®è²¬ä»»ãè² ããªãï¼ 33 # 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 34 # よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 35 # に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 36 # アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 37 # の責任を負わない. 53 38 # 54 39 # $Id: genoffset.trb 662 2016-02-27 02:33:51Z ertl-hiro $ … … 56 41 57 42 # 58 # ãªãã»ãããã¡ã¤ã«çæç¨ã®çæã¹ã¯ãªãã43 # オフセットファイル生成用の生成スクリプト 59 44 # 60 45 61 46 # 62 # ã¿ã¤ã ã¹ã¿ã³ããã¡ã¤ã«ã®æå®47 # タイムスタンプファイルの指定 63 48 # 64 49 $timeStampFileName = "offset.timestamp" 65 50 66 51 # 67 # offset.hã®å 68 é é¨åã®çæ 52 # offset.hの先頭部分の生成 69 53 # 70 54 $offsetH = GenFile.new("offset.h") … … 72 56 73 57 # 74 # #define ãã£ã¬ã¯ãã£ãã®çæ58 # #defineディレクティブの生成 75 59 # 76 60 def GenerateDefine(symbol, value) … … 79 63 80 64 # 81 # ãããã®ãµã¼ã65 # ビットのサーチ 82 66 # 83 67 def SearchBit(val) … … 91 75 92 76 # 93 # ããããã£ã¼ã«ãã®ãªãã»ããã¨ãããä½ç½®ã®å®ç¾©ã®çæ77 # ビットフィールドのオフセットとビット位置の定義の生成 94 78 # 95 79 def GenerateDefineBit(label, structSize, outputSize) … … 138 122 139 123 # 140 # ãã¤ãé 141 ç½®ã®ãã§ã㯠124 # バイト配置のチェック 142 125 # 143 126 def magicCheck(size, check) -
Property svn:mime-type
changed from
-
rubycfg_asp/trunk/asp_dcre/kernel/interrupt.c
-
Property svn:mime-type
changed from
text/x-csrc
totext/x-csrc; 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 * å²è¾¼ã¿ç®¡çæ©è½44 * 割込み管理機能 60 45 */ 61 46 … … 66 51 67 52 /* 68 * ãã¬ã¼ã¹ãã°ãã¯ãã®ããã©ã«ãå®ç¾©53 * トレースログマクロのデフォルト定義 69 54 */ 70 55 #ifndef LOG_ISR_ENTER … … 125 110 126 111 /* 127 * å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³ã®æ°112 * 割込みサービスルーチンの数 128 113 */ 129 114 #define tnum_isr ((uint_t)(tmax_isrid - TMIN_ISRID + 1) + tnum_sisr) 130 115 131 116 /* 132 * å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³IDããå²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³ç®¡çãããã¯ãå133 * ãåºãããã®ãã¯ã117 * 割込みサービスルーチンIDから割込みサービスルーチン管理ブロックを取 118 * り出すためのマクロ 134 119 */ 135 120 #define INDEX_ISR(isrid) ((uint_t)((isrid) - TMIN_ISRID) + tnum_sisr) … … 137 122 138 123 /* 139 * å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³ãã¥ã¼ã¸ã®ç»é²124 * 割込みサービスルーチンキューへの登録 140 125 */ 141 126 Inline void … … 157 142 158 143 /* 159 * 使ç¨ãã¦ããªãå²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³ç®¡çãããã¯ã®ãªã¹ã144 * 使用していない割込みサービスルーチン管理ブロックのリスト 160 145 */ 161 146 QUEUE free_isrcb; 162 147 163 148 /* 164 * å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³æ©è½ã®åæå149 * 割込みサービスルーチン機能の初期化 165 150 */ 166 151 void … … 192 177 193 178 /* 194 * å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³ã®å¼åºã179 * 割込みサービスルーチンの呼出し 195 180 */ 196 181 #ifdef TOPPERS_isrcal … … 212 197 213 198 if (p_queue->p_next != p_isr_queue) { 214 /* ISRã®å¼åºãåã®ç¶æ 215 ã«æ»ã */ 199 /* ISRの呼出し前の状態に戻す */ 216 200 if (i_sense_lock()) { 217 201 i_unlock_cpu(); … … 225 209 226 210 /* 227 * å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³å¼åºããã¥ã¼ã®æ¤ç´¢211 * 割込みサービスルーチン呼出しキューの検索 228 212 */ 229 213 Inline QUEUE * … … 256 240 257 241 /* 258 * å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³ã®çæ242 * 割込みサービスルーチンの生成 259 243 */ 260 244 #ifdef TOPPERS_acre_isr … … 305 289 306 290 /* 307 * å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³ã®åé¤291 * 割込みサービスルーチンの削除 308 292 */ 309 293 #ifdef TOPPERS_del_isr … … 342 326 343 327 /* 344 * å²è¾¼ã¿ç®¡çæ©è½ã®åæå328 * 割込み管理機能の初期化 345 329 */ 346 330 #ifdef TOPPERS_intini … … 368 352 369 353 /* 370 * å²è¾¼ã¿ã®ç¦æ¢354 * 割込みの禁止 371 355 */ 372 356 #ifdef TOPPERS_dis_int … … 406 390 407 391 /* 408 * å²è¾¼ã¿ã®è¨±å¯392 * 割込みの許可 409 393 */ 410 394 #ifdef TOPPERS_ena_int … … 444 428 445 429 /* 446 * å²è¾¼ã¿åªå 447 度ãã¹ã¯ã®å¤æ´ 430 * 割込み優先度マスクの変更 448 431 */ 449 432 #ifdef TOPPERS_chg_ipm … … 487 470 488 471 /* 489 * å²è¾¼ã¿åªå 490 度ãã¹ã¯ã®åç 491 § 472 * 割込み優先度マスクの参照 492 473 */ 493 474 #ifdef TOPPERS_get_ipm -
Property svn:mime-type
changed from
-
rubycfg_asp/trunk/asp_dcre/kernel/interrupt.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 * å²è¾¼ã¿ç®¡çæ©è½44 * 割込み管理機能 60 45 */ 61 46 … … 66 51 67 52 /* 68 * å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³åæåãããã¯53 * 割込みサービスルーチン初期化ブロック 69 54 */ 70 55 typedef struct isr_initialization_block { 71 ATR isratr; /* å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³å±æ§ */ 72 intptr_t exinf; /* å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³ã®æ¡å¼µæ 73 å ± */ 74 INTNO intno; /* å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³ãç»é²ããå²è¾¼ã¿çªå· */ 75 QUEUE *p_isr_queue; /* ç»é²å 76 å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³ãã¥ã¼ã®çªå° */ 77 ISR isr; /* å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³ã®å 78 é çªå° */ 79 PRI isrpri; /* å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³åªå 80 度 */ 56 ATR isratr; /* 割込みサービスルーチン属性 */ 57 intptr_t exinf; /* 割込みサービスルーチンの拡張情報 */ 58 INTNO intno; /* 割込みサービスルーチンを登録する割込み番号 */ 59 QUEUE *p_isr_queue; /* 登録先割込みサービスルーチンキューの番地 */ 60 ISR isr; /* 割込みサービスルーチンの先頭番地 */ 61 PRI isrpri; /* 割込みサービスルーチン優先度 */ 81 62 } ISRINIB; 82 63 83 64 /* 84 * å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³ç®¡çãããã¯65 * 割込みサービスルーチン管理ブロック 85 66 */ 86 67 typedef struct isr_control_block { 87 QUEUE isr_queue; /* å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³å¼åºããã¥ã¼*/88 const ISRINIB *p_isrinib; /* åæåãããã¯ã¸ã®ãã¤ã³ã¿*/68 QUEUE isr_queue; /* 割込みサービスルーチン呼出しキュー */ 69 const ISRINIB *p_isrinib; /* 初期化ブロックへのポインタ */ 89 70 } ISRCB; 90 71 91 72 /* 92 * å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³å¼åºããã¥ã¼ãæ¤ç´¢ããããã®ãã¼ã¿æ§é73 * 割込みサービスルーチン呼出しキューを検索するためのデータ構造 93 74 */ 94 75 typedef struct { 95 INTNO intno; /* å²è¾¼ã¿çªå·*/96 QUEUE *p_isr_queue; /* å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³å¼åºããã¥ã¼*/76 INTNO intno; /* 割込み番号 */ 77 QUEUE *p_isr_queue; /* 割込みサービスルーチン呼出しキュー */ 97 78 } ISR_ENTRY; 98 79 99 80 /* 100 * å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³ãã¥ã¼ã®ã¨ã³ããªæ°ï¼kernel_cfg.cï¼81 * 割込みサービスルーチンキューのエントリ数(kernel_cfg.c) 101 82 */ 102 83 extern const uint_t tnum_isr_queue; 103 84 104 85 /* 105 * å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³ãã¥ã¼ãªã¹ãï¼kernel_cfg.cï¼86 * 割込みサービスルーチンキューリスト(kernel_cfg.c) 106 87 */ 107 88 extern const ISR_ENTRY isr_queue_list[]; 108 89 109 90 /* 110 * å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³ãã¥ã¼ã®ã¨ãªã¢ï¼kernel_cfg.cï¼91 * 割込みサービスルーチンキューのエリア(kernel_cfg.c) 111 92 */ 112 93 extern QUEUE isr_queue_table[]; 113 94 114 95 /* 115 * 使ç¨ãã¦ããªãå²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³ç®¡çãããã¯ã®ãªã¹ã96 * 使用していない割込みサービスルーチン管理ブロックのリスト 116 97 */ 117 98 extern QUEUE free_isrcb; 118 99 119 100 /* 120 * å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³IDã®æ大å¤ï¼kernel_cfg.cï¼101 * 割込みサービスルーチンIDの最大値(kernel_cfg.c) 121 102 * 122 * éçã«çæãããå²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³ã¯IDçªå·ãæããªãããï¼123 * tmax_isrid ã¯åçã«çæãããå²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³ã®IDçªå·ã®æ大å¤124 * ã§ããï¼éçã«çæãããå²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³ã®æ°ã¯ï¼tnum_sisrã«ä¿125 * æããï¼103 * 静的に生成される割込みサービスルーチンはID番号を持たないため, 104 * tmax_isridは動的に生成される割込みサービスルーチンのID番号の最大値 105 * である.静的に生成される割込みサービスルーチンの数は,tnum_sisrに保 106 * 持する. 126 107 */ 127 108 extern const ID tmax_isrid; … … 129 110 130 111 /* 131 * å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³åæåãããã¯ã®ã¨ãªã¢ï¼kernel_cfg.cï¼112 * 割込みサービスルーチン初期化ブロックのエリア(kernel_cfg.c) 132 113 */ 133 114 extern const ISRINIB sisrinib_table[]; … … 135 116 136 117 /* 137 * å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³ç®¡çãããã¯ã®ã¨ãªã¢ï¼kernel_cfg.cï¼118 * 割込みサービスルーチン管理ブロックのエリア(kernel_cfg.c) 138 119 */ 139 120 extern ISRCB isrcb_table[]; 140 121 141 122 /* 142 * å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³ç®¡çãããã¯ããå²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³IDãå143 * ãåºãããã®ãã¯ã123 * 割込みサービスルーチン管理ブロックから割込みサービスルーチンIDを取 124 * り出すためのマクロ 144 125 */ 145 126 #define ISRID(p_isrcb) ((ID)(((p_isrcb) - isrcb_table) \ … … 147 128 148 129 /* 149 * å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³æ©è½ã®åæå130 * 割込みサービスルーチン機能の初期化 150 131 */ 151 132 extern void initialize_isr(void); 152 133 153 134 /* 154 * å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³ã®å¼åºã135 * 割込みサービスルーチンの呼出し 155 136 */ 156 137 extern void call_isr(QUEUE *p_isr_queue); … … 159 140 160 141 /* 161 * å²è¾¼ã¿ãã³ãã©åæåãããã¯142 * 割込みハンドラ初期化ブロック 162 143 */ 163 144 typedef struct interrupt_handler_initialization_block { 164 INHNO inhno; /* å²è¾¼ã¿ãã³ãã©çªå· */ 165 ATR inhatr; /* å²è¾¼ã¿ãã³ãã©å±æ§ */ 166 FP int_entry; /* å²è¾¼ã¿ãã³ãã©ã®åºå 167 ¥å£å¦çã®çªå° */ 145 INHNO inhno; /* 割込みハンドラ番号 */ 146 ATR inhatr; /* 割込みハンドラ属性 */ 147 FP int_entry; /* 割込みハンドラの出入口処理の番地 */ 168 148 } INHINIB; 169 149 170 150 /* 171 * å²è¾¼ã¿è¦æ±ã©ã¤ã³åæåãããã¯151 * 割込み要求ライン初期化ブロック 172 152 */ 173 153 typedef struct interrupt_request_initialization_block { 174 INTNO intno; /* å²è¾¼ã¿çªå· */ 175 ATR intatr; /* å²è¾¼ã¿å±æ§ */ 176 PRI intpri; /* å²è¾¼ã¿åªå 177 度 */ 154 INTNO intno; /* 割込み番号 */ 155 ATR intatr; /* 割込み属性 */ 156 PRI intpri; /* 割込み優先度 */ 178 157 } INTINIB; 179 158 180 159 /* 181 * å²è¾¼ã¿ãã³ãã©çªå·ã®æ°ï¼kernel_cfg.cï¼160 * 割込みハンドラ番号の数(kernel_cfg.c) 182 161 */ 183 162 extern const uint_t tnum_inhno; 184 163 185 164 /* 186 * å²è¾¼ã¿ãã³ãã©åæåãããã¯ã®ã¨ãªã¢ï¼kernel_cfg.cï¼165 * 割込みハンドラ初期化ブロックのエリア(kernel_cfg.c) 187 166 */ 188 167 extern const INHINIB inhinib_table[]; 189 168 190 169 /* 191 * å²è¾¼ã¿è¦æ±ã©ã¤ã³ã®æ°ï¼kernel_cfg.cï¼170 * 割込み要求ラインの数(kernel_cfg.c) 192 171 */ 193 172 extern const uint_t tnum_intno; 194 173 195 174 /* 196 * å²è¾¼ã¿è¦æ±ã©ã¤ã³åæåãããã¯ã®ã¨ãªã¢ï¼kernel_cfg.cï¼175 * 割込み要求ライン初期化ブロックのエリア(kernel_cfg.c) 197 176 */ 198 177 extern const INTINIB intinib_table[]; … … 201 180 202 181 /* 203 * å²è¾¼ã¿ç®¡çæ©è½ã®åæå182 * 割込み管理機能の初期化 204 183 */ 205 184 extern void initialize_interrupt(void); -
Property svn:mime-type
changed from
-
rubycfg_asp/trunk/asp_dcre/kernel/interrupt.trb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby; 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: interrupt.trb 678 2016-03-06 02:36:09Z ertl-hiro $ … … 57 42 58 43 # 59 # å²è¾¼ã¿ç®¡çæ©è½ã®çæã¹ã¯ãªãã60 # 61 62 # 63 # kernel_cfg.c ã®çæ44 # 割込み管理機能の生成スクリプト 45 # 46 47 # 48 # kernel_cfg.cの生成 64 49 # 65 50 $kernelCfgC.comment_header("Interrupt Management Functions") 66 51 67 52 # 68 # ATT_ISR ã§ä½¿ç¨ã§ããå²è¾¼ã¿çªå·ã¨ããã«å¯¾å¿ããå²è¾¼ã¿ãã³ãã©çªå·ã®ã69 # ãã©ã«ãå®ç¾©53 # ATT_ISRで使用できる割込み番号とそれに対応する割込みハンドラ番号のデ 54 # フォルト定義 70 55 # 71 56 if $INTNO_ATTISR_VALID.nil? … … 77 62 78 63 # 79 # CFG_INTã§ä½¿ç¨ã§ããå²è¾¼ã¿åªå 80 度ã®ããã©ã«ãå®ç¾© 64 # CFG_INTで使用できる割込み優先度のデフォルト定義 81 65 # 82 66 if $INTPRI_CFGINT_VALID.nil? … … 85 69 86 70 # 87 # å²è¾¼ã¿çªå·ã¨å²è¾¼ã¿ãã³ãã©çªå·ã®å¤æãã¼ãã«ã®ä½æ71 # 割込み番号と割込みハンドラ番号の変換テーブルの作成 88 72 # 89 73 if $INTNO_ATTISR_VALID.length != $INHNO_ATTISR_VALID.length … … 101 85 102 86 # 103 # å²è¾¼ã¿è¦æ±ã©ã¤ã³ã«é¢ããã¨ã©ã¼ãã§ãã¯87 # 割込み要求ラインに関するエラーチェック 104 88 # 105 89 $cfgData[:CFG_INT].each do |key, params| 106 # intno ãå²è¾¼ã¿çªå·ã¨ãã¦æ£ãããªãå ´åï¼E_PARï¼ï¼»NGKI2972ï¼½90 # intnoが割込み番号として正しくない場合(E_PAR)[NGKI2972] 107 91 if $INTNO_VALID.index(params[:intno]).nil? 108 92 error_illegal("E_PAR", params, :intno) 109 93 end 110 94 111 # intatr ãç¡å¹ã®å ´åï¼E_RSATRï¼ï¼»NGKI2969ï¼½112 # ï¼TA_ENAINTï¼TA_EDGEï¼TARGET_INTATR以å¤ã®ããããã»ããããã¦ããå ´åï¼95 # intatrが無効の場合(E_RSATR)[NGKI2969] 96 #(TA_ENAINT,TA_EDGE,TARGET_INTATR以外のビットがセットされている場合) 113 97 if (params[:intatr] & ~($TA_ENAINT|$TA_EDGE|$TARGET_INTATR)) != 0 114 98 error_illegal_sym("E_RSATR", params, :intatr, :intno) 115 99 end 116 100 117 # intpriãCFG_INTã«å¯¾ããå²è¾¼ã¿åªå 118 度ã¨ãã¦æ£ãããªãå ´åï¼E_PARï¼ 119 # ï¼»NGKI2973ï¼½ 101 # intpriがCFG_INTに対する割込み優先度として正しくない場合(E_PAR) 102 # [NGKI2973] 120 103 if $INTPRI_CFGINT_VALID.index(params[:intpri]).nil? 121 104 error_illegal_sym("E_OBJ", params, :intpri, :intno) 122 105 end 123 106 124 # ã«ã¼ãã«ç®¡çå¤ã«åºå®ããã¦ããintnoã«å¯¾ãã¦ï¼intpriã«TMIN_INTPRIã125 # ããå°ããå¤ãæå®ãããªãã£ãå ´åï¼E_OBJï¼ï¼»NGKI2983ï¼½107 # カーネル管理外に固定されているintnoに対して,intpriにTMIN_INTPRIよ 108 # りも小さい値が指定されなかった場合(E_OBJ)[NGKI2983] 126 109 if !$INTNO_FIX_NONKERNEL.nil? 127 110 if !$INTNO_FIX_NONKERNEL.index(params[:intno]).nil? … … 133 116 end 134 117 135 # ã«ã¼ãã«ç®¡çã«åºå®ããã¦ããintnoã«å¯¾ãã¦ï¼intpriã«TMIN_INTPRIãã136 # ãå°ããå¤ãæå®ãããå ´åï¼E_OBJï¼ï¼»NGKI2984ï¼½118 # カーネル管理に固定されているintnoに対して,intpriにTMIN_INTPRIより 119 # も小さい値が指定された場合(E_OBJ)[NGKI2984] 137 120 if !$INTNO_FIX_KERNEL.nil? 138 121 if !$INTNO_FIX_KERNEL.index(params[:intno]).nil? … … 146 129 147 130 # 148 # å²è¾¼ã¿ãã³ãã©ã«é¢ããã¨ã©ã¼ãã§ãã¯131 # 割込みハンドラに関するエラーチェック 149 132 # 150 133 $cfgData[:DEF_INH].each do |key, params| 151 # inhno ãå²è¾¼ã¿ãã³ãã©çªå·ã¨ãã¦æ£ãããªãå ´åï¼E_PARï¼ï¼»NGKI3055ï¼½134 # inhnoが割込みハンドラ番号として正しくない場合(E_PAR)[NGKI3055] 152 135 if $INHNO_VALID.index(params[:inhno]).nil? 153 136 error_illegal("E_PAR", params, :inhno) 154 137 end 155 138 156 # inhatr ãç¡å¹ã®å ´åï¼E_RSATRï¼ï¼»NGKI3052ï¼½157 # ï¼TARGET_INHATR以å¤ã®ããããã»ããããã¦ããå ´åï¼139 # inhatrが無効の場合(E_RSATR)[NGKI3052] 140 #(TARGET_INHATR以外のビットがセットされている場合) 158 141 if (params[:inhatr] & ~($TARGET_INHATR)) != 0 159 142 error_illegal_sym("E_RSATR", params, :inhatr, :inhno) 160 143 end 161 144 162 # ã«ã¼ãã«ç®¡çå¤ã«åºå®ããã¦ããinhnoã«å¯¾ãã¦ï¼inhatrã«TA_NONKERNELã163 # æå®ããã¦ããªãå ´åï¼E_RSATRï¼ï¼»NGKI3067ï¼½145 # カーネル管理外に固定されているinhnoに対して,inhatrにTA_NONKERNELが 146 # 指定されていない場合(E_RSATR)[NGKI3067] 164 147 if !$INHNO_FIX_NONKERNEL.nil? 165 148 if !$INHNO_FIX_NONKERNEL.index(params[:inhno]).nil? … … 171 154 end 172 155 173 # ã«ã¼ãã«ç®¡çã«åºå®ããã¦ããinhnoã«å¯¾ãã¦ï¼inhatrã«TA_NONKERNELãæ174 # å®ããã¦ããå ´åï¼E_RSATRï¼ï¼»NGKI3068ï¼½156 # カーネル管理に固定されているinhnoに対して,inhatrにTA_NONKERNELが指 157 # 定されている場合(E_RSATR)[NGKI3068] 175 158 if !$INHNO_FIX_KERNEL.nil? 176 159 if !$INHNO_FIX_KERNEL.index(params[:inhno]).nil? … … 185 168 intnoVal = $toIntnoVal[params[:inhno].val] 186 169 187 # inhno ã«å¯¾å¿ããintnoã«å¯¾ããCFG_INTããªãå ´åï¼E_OBJï¼ï¼»NGKI3062ï¼½170 # inhnoに対応するintnoに対するCFG_INTがない場合(E_OBJ)[NGKI3062] 188 171 if !$cfgData[:CFG_INT].has_key?(intnoVal) 189 172 error_ercd("E_OBJ", params, "intno `#{intnoVal}' corresponding to " \ … … 192 175 intnoParams = $cfgData[:CFG_INT][intnoVal] 193 176 if (params[:inhatr] & $TA_NONKERNEL) == 0 194 # inhatrã«TA_NONKERNELãæå®ããã¦ãããï¼inhnoã«å¯¾å¿ããintno 195 # ã«å¯¾ãã¦CFG_INTã§è¨å®ãããå²è¾¼ã¿åªå 196 度ãTMIN_INTPRIãããå° 197 # ããå ´åï¼E_OBJï¼ï¼»NGKI3065ï¼½ 177 # inhatrにTA_NONKERNELが指定されておらず,inhnoに対応するintno 178 # に対してCFG_INTで設定された割込み優先度がTMIN_INTPRIよりも小 179 # さい場合(E_OBJ)[NGKI3065] 198 180 if intnoParams[:intpri] < $TMIN_INTPRI 199 181 error_ercd("E_OBJ", params, "intpri `#{intnoParams[:intpri]}' " \ … … 201 183 end 202 184 else 203 # inhatrã«TA_NONKERNELãæå®ããã¦ããï¼inhnoã«å¯¾å¿ããintnoã« 204 # 対ãã¦CFG_INTã§è¨å®ãããå²è¾¼ã¿åªå 205 度ãTMIN_INTPRI以ä¸ã§ãã 206 # å ´åï¼E_OBJï¼ï¼»NGKI3066ï¼½ 185 # inhatrにTA_NONKERNELが指定されており,inhnoに対応するintnoに 186 # 対してCFG_INTで設定された割込み優先度がTMIN_INTPRI以上である 187 # 場合(E_OBJ)[NGKI3066] 207 188 if intnoParams[:intpri] >= $TMIN_INTPRI 208 189 error_ercd("E_OBJ", params, "intpri `#{intnoParams[:intpri]}' " \ … … 215 196 216 197 # 217 # å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³ï¼ISRï¼ã«é¢ããã¨ã©ã¼ãã§ãã¯198 # 割込みサービスルーチン(ISR)に関するエラーチェック 218 199 # 219 200 $cfgData[:ATT_ISR].sort.each do |key, params| 220 # isratr ãç¡å¹ã®å ´åï¼E_RSATRï¼ï¼»NGKI2998ï¼½221 # ï¼TARGET_ISRATR以å¤ã®ããããã»ããããã¦ããå ´åï¼201 # isratrが無効の場合(E_RSATR)[NGKI2998] 202 #(TARGET_ISRATR以外のビットがセットされている場合) 222 203 if (params[:isratr] & ~($TARGET_ISRATR)) != 0 223 204 error_illegal("E_RSATR", params, "isratr") 224 205 end 225 206 226 # intno ãATT_ISRã«å¯¾ããå²è¾¼ã¿çªå·ã¨ãã¦æ£ãããªãå ´åï¼E_PARï¼227 # ï¼»NGKI3003ï¼½207 # intnoがATT_ISRに対する割込み番号として正しくない場合(E_PAR) 208 # [NGKI3003] 228 209 if $INTNO_ATTISR_VALID.index(params[:intno]).nil? 229 210 error_illegal("E_PAR", params, "intno") 230 211 end 231 212 232 # (TMIN_ISRPRI <= isrpri && isrpri <= TMAX_ISRPRI) ã§ãªãå ´åï¼E_PARï¼233 # ï¼»NGKI3005ï¼½213 # (TMIN_ISRPRI <= isrpri && isrpri <= TMAX_ISRPRI)でない場合(E_PAR) 214 # [NGKI3005] 234 215 if !($TMIN_ISRPRI <= params[:isrpri] && params[:isrpri] <= $TMAX_ISRPRI) 235 216 error_illegal("E_PAR", params, "isrpri") … … 238 219 239 220 $INTNO_ATTISR_VALID.each do |intnoVal| 240 # å²è¾¼ã¿çªå·intnoã«å¯¾ãã¦ç»é²ãããISRã®ãªã¹ãã®ä½æ221 # 割込み番号intnoに対して登録されたISRのリストの作成 241 222 isrParamsList = [] 242 223 $cfgData[:ATT_ISR].sort.each do |key, params| … … 246 227 end 247 228 248 # å²è¾¼ã¿çªå·intnoã«å¯¾ãã¦ç»é²ãããISRãåå¨ããå ´å229 # 割込み番号intnoに対して登録されたISRが存在する場合 249 230 if isrParamsList.size > 0 250 231 inhnoVal = $toInhnoVal[intnoVal] 251 232 252 # intno ã«å¯¾å¿ããinhnoã«å¯¾ãã¦DEF_INHãããå ´åï¼E_OBJï¼ï¼»NGKI3013ï¼½233 # intnoに対応するinhnoに対してDEF_INHがある場合(E_OBJ)[NGKI3013] 253 234 if $cfgData[:DEF_INH].has_key?(inhnoVal) 254 235 inhnoParams = $cfgData[:DEF_INH][inhnoVal] … … 257 238 end 258 239 259 # intno ã«å¯¾ããCFG_INTããªãå ´åï¼E_OBJï¼ï¼»NGKI3012ï¼½240 # intnoに対するCFG_INTがない場合(E_OBJ)[NGKI3012] 260 241 if !$cfgData[:CFG_INT].has_key?(intnoVal) 261 242 error_ercd("E_OBJ", isrParamsList[0], "%%intno in %apiname " \ … … 264 245 intnoParams = $cfgData[:CFG_INT][intnoVal] 265 246 266 # intnoã«å¯¾ãã¦CFG_INTã§è¨å®ãããå²è¾¼ã¿åªå 267 度ãTMIN_INTPRIããã 268 # å°ããå ´åï¼E_OBJï¼ï¼»NGKI3014ï¼½ 247 # intnoに対してCFG_INTで設定された割込み優先度がTMIN_INTPRIよりも 248 # 小さい場合(E_OBJ)[NGKI3014] 269 249 if intnoParams[:intpri] < $TMIN_INTPRI 270 250 error_ercd("E_OBJ", isrParamsList[0], … … 277 257 278 258 # 279 # å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³ï¼ISRï¼ç®¡çã®ãã¼ã¿æ§é259 # 割込みサービスルーチン(ISR)管理のデータ構造 280 260 # 281 261 intnoIsrList = [] … … 313 293 314 294 # 315 # å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³ï¼ISRï¼å¼åºãã®ããã®å²è¾¼ã¿ãã³ãã©295 # 割込みサービスルーチン(ISR)呼出しのための割込みハンドラ 316 296 # 317 297 intnoIsrList.each do |intnoVal| 318 298 inhnoVal = $toInhnoVal[intnoVal] 319 299 320 # 次ã®DEF_INHã«ç¸å½ãããã¼ã¿ãçæ300 # 次のDEF_INHに相当するデータを生成 321 301 # DEF_INH(inhno, { TA_NULL, _kernel_inthdr_<intno> } ); 322 302 $cfgData[:DEF_INH][inhnoVal] = { … … 326 306 } 327 307 328 # å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³ç¨ã®å²è¾¼ã¿ãã³ãã©308 # 割込みサービスルーチン用の割込みハンドラ 329 309 $kernelCfgC.add("void") 330 310 $kernelCfgC.add("_kernel_inthdr_#{intnoVal}(void)") … … 337 317 338 318 # 339 # å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³ã«é¢ããä¸è¬çãªæ 340 å ±ã®çæ 319 # 割込みサービスルーチンに関する一般的な情報の生成 341 320 # 342 321 class IsrObject … … 346 325 347 326 def generate() 348 # AID_ISR ã®å¦ç327 # AID_ISRの処理 349 328 numAutoObjid = 0 350 329 $cfgData[:AID_ISR].each do |key, params| … … 353 332 numObjid = $cfgData[:ATT_ISR].size + numAutoObjid 354 333 355 # kernel_cfg.h ã®çæ334 # kernel_cfg.hの生成 356 335 $kernelCfgH.add("#define TNUM_ISRID\t#{numAutoObjid}") 357 336 358 # ãªãã¸ã§ã¯ãã®IDçªå·ã®ãã¯ãå®ç¾©ã®çæ337 # オブジェクトのID番号のマクロ定義の生成 359 338 $cfgData[:ATT_ISR].sort.each do |key, params| 360 339 if params[:isrid] … … 364 343 $kernelCfgH.add() 365 344 366 # ãªãã¸ã§ã¯ãã®IDçªå·ãä¿æããå¤æ°345 # オブジェクトのID番号を保持する変数 367 346 if $USE_EXTERNAL_ID 368 347 $cfgData[:ATT_ISR].sort.each do |key, params| … … 375 354 end 376 355 377 # éçã«çæããããªãã¸ã§ã¯ãã®æ°356 # 静的に生成されたオブジェクトの数 378 357 $kernelCfgC.add("#define TNUM_SISR\t#{$cfgData[:ATT_ISR].size}") 379 358 $kernelCfgC.add("#define TNUM_ISR\t#{numObjid}") 380 359 381 # ãªãã¸ã§ã¯ãIDçªå·ã®æ大å¤360 # オブジェクトID番号の最大値 382 361 $kernelCfgC.add("const ID _kernel_tmax_isrid" \ 383 362 " = (TMIN_ISRID + TNUM_ISRID - 1);") 384 363 $kernelCfgC.add("const uint_t _kernel_tnum_sisr = TNUM_SISR;") 385 364 386 # ãã¼ã¿æ§é365 # データ構造 387 366 if $cfgData[:ATT_ISR].size > 0 388 # äºåæºåï¼ã¨ã©ã¼ãã§ãã¯ï¼ã¡ã¢ãªé åã®çæï¼367 # 事前準備(エラーチェック,メモリ領域の生成) 389 368 $cfgData[:ATT_ISR].sort.each do |key, params| 390 369 prepare(key, params) 391 370 end 392 371 393 # ãªãã¸ã§ã¯ãå 394 ¨ä½ã«å¯¾ãã¦å¿ 395 è¦ãªã¡ã¢ãªé åã®çæï¼ãªãã·ã§ã³ï¼ 372 # オブジェクト全体に対して必要なメモリ領域の生成(オプション) 396 373 if respond_to?(:generateData) 397 374 generateData() 398 375 end 399 376 400 # ãªãã¸ã§ã¯ãåæåãããã¯ã®çæ377 # オブジェクト初期化ブロックの生成 401 378 $kernelCfgC.add("const ISRINIB _kernel_sisrinib_table" \ 402 379 "[TNUM_SISR] = {") … … 412 389 end 413 390 414 # åççæãªãã¸ã§ã¯ãç¨ã®ãªãã¸ã§ã¯ãåæåãããã¯391 # 動的生成オブジェクト用のオブジェクト初期化ブロック 415 392 @inibList.each do |type, array| 416 393 if numAutoObjid > 0 … … 422 399 423 400 if numObjid > 0 424 # ãªãã¸ã§ã¯ã管çãããã¯ã®çæ401 # オブジェクト管理ブロックの生成 425 402 $kernelCfgC.add2("ISRCB _kernel_isrcb_table" \ 426 403 "[TNUM_ISR];") 427 404 428 # ãªãã¸ã§ã¯ãåæåé¢æ°ã®è¿½å405 # オブジェクト初期化関数の追加 429 406 $initializeFunctions.push("_kernel_initialize_isr();") 430 407 else … … 435 412 436 413 def prepare(key, params) 437 # ã¨ã©ã¼ãã§ãã¯ã¯å®æ½æ¸ã¿ãªã®ã§ï¼ããã§ã®å¦çã¯ä¸è¦414 # エラーチェックは実施済みなので,ここでの処理は不要 438 415 end 439 416 … … 448 425 449 426 # 450 # å²è¾¼ã¿ãã³ãã©ã®ããã®æ¨æºçãªåæåæ 451 å ±ã®çæ 427 # 割込みハンドラのための標準的な初期化情報の生成 452 428 # 453 429 if !$OMIT_INITIALIZE_INTERRUPT || $USE_INHINIB_TABLE 454 430 # 455 # å®ç¾©ããå²è¾¼ã¿ãã³ãã©ã®æ°431 # 定義する割込みハンドラの数 456 432 # 457 433 $kernelCfgC.add(<<EOS) … … 462 438 if $cfgData[:DEF_INH].size != 0 463 439 # 464 # å²è¾¼ã¿ãã³ãã©ã®ã¨ã³ããª440 # 割込みハンドラのエントリ 465 441 # 466 442 $cfgData[:DEF_INH].each do |key, params| … … 473 449 474 450 # 475 # å²è¾¼ã¿ãã³ãã©åæåãããã¯451 # 割込みハンドラ初期化ブロック 476 452 # 477 453 $kernelCfgC.add("const INHINIB _kernel_inhinib_table[TNUM_INHNO] = {") … … 495 471 496 472 # 497 # å²è¾¼ã¿è¦æ±ã©ã¤ã³ã®ããã®æ¨æºçãªåæåæ 498 å ±ã®çæ 473 # 割込み要求ラインのための標準的な初期化情報の生成 499 474 # 500 475 if !$OMIT_INITIALIZE_INTERRUPT || $USE_INTINIB_TABLE 501 476 # 502 # è¨å®ããå²è¾¼ã¿è¦æ±ã©ã¤ã³ã®æ°477 # 設定する割込み要求ラインの数 503 478 # 504 479 $kernelCfgC.add(<<EOS) … … 508 483 509 484 # 510 # å²è¾¼ã¿è¦æ±ã©ã¤ã³åæåãããã¯485 # 割込み要求ライン初期化ブロック 511 486 # 512 487 if $cfgData[:CFG_INT].size != 0 … … 526 501 527 502 # 528 # å²è¾¼ã¿ç®¡çæ©è½åæåé¢æ°ã®è¿½å503 # 割込み管理機能初期化関数の追加 529 504 # 530 505 $initializeFunctions.push("_kernel_initialize_interrupt();") -
Property svn:mime-type
changed from
-
rubycfg_asp/trunk/asp_dcre/kernel/kernel.trb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby; 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: kernel.trb 716 2016-03-31 06:16:23Z ertl-hiro $ … … 57 42 58 43 # 59 # ã³ã³ãã£ã®ã¥ã¬ã¼ã¿ã®ãã¹2ã®çæã¹ã¯ãªãã60 # 61 62 # 63 # ã¿ã¤ã ã¹ã¿ã³ããã¡ã¤ã«ã®æå®44 # コンフィギュレータのパス2の生成スクリプト 45 # 46 47 # 48 # タイムスタンプファイルの指定 64 49 # 65 50 $timeStampFileName = "kernel_cfg.timestamp" 66 51 67 52 # 68 # kernel_cfg.hã®å 69 é é¨åã®çæ 53 # kernel_cfg.hの先頭部分の生成 70 54 # 71 55 $kernelCfgH = GenFile.new("kernel_cfg.h") … … 77 61 78 62 # 79 # kernel_cfg.cã®å 80 é é¨åã®çæ 63 # kernel_cfg.cの先頭部分の生成 81 64 # 82 65 $kernelCfgC = GenFile.new("kernel_cfg.c") … … 92 75 93 76 # 94 # ã¤ã³ã¯ã«ã¼ããã£ã¬ã¯ãã£ãï¼#includeï¼77 # インクルードディレクティブ(#include) 95 78 # 96 79 $kernelCfgC.comment_header("Include Directives (#include)") … … 101 84 102 85 # 103 # ã¹ã¿ãã¯é åã®ç¢ºä¿é¢æ° 104 # 105 # ã¹ã¿ãã¯é åã®å®ç¾©åã¨ï¼ã¹ã¿ãã¯é åã®ãµã¤ãºè¨è¿°ãé 106 åã§è¿ãï¼ 86 # スタック領域の確保関数 87 # 88 # スタック領域の定義分と,スタック領域のサイズ記述を配列で返す. 107 89 # 108 90 unless defined? AllocStack() 109 91 def AllocStack(stack, size) 110 # 大ããæ¹ã«ä¸¸ãããµã¤ãºã§ç¢ºä¿ããï¼»NGKI1050][NGKI3220ï¼½92 # 大きい方に丸めたサイズで確保する[NGKI1050][NGKI3220] 111 93 $kernelCfgC.add("/*static*/ STK_T #{stack}[COUNT_STK_T(#{size})];") 112 94 return("ROUND_STK_T(#{size})") … … 115 97 116 98 # 117 # ã«ã¼ãã«ãªãã¸ã§ã¯ãã«é¢ããæ 118 å ±ã®çæï¼ä»®æ³ã¯ã©ã¹ï¼ 99 # カーネルオブジェクトに関する情報の生成(仮想クラス) 119 100 # 120 101 class KernelObject … … 131 112 132 113 def generate() 133 # AID_@OBJ ã®å¦ç114 # AID_@OBJの処理 134 115 numAutoObjid = 0 135 116 $cfgData["AID_#{@OBJ}".to_sym].each do |key, params| … … 138 119 numObjid = $cfgData[@api].size + numAutoObjid 139 120 140 # kernel_cfg.h ã®çæ121 # kernel_cfg.hの生成 141 122 $kernelCfgH.add("#define TNUM_#{@OBJ}ID\t#{numObjid}") 142 123 143 # ãªãã¸ã§ã¯ãã®IDçªå·ã®ãã¯ãå®ç¾©ã®çæ124 # オブジェクトのID番号のマクロ定義の生成 144 125 $cfgData[@api].sort.each do |key, params| 145 126 if params[@objid] … … 149 130 $kernelCfgH.add() 150 131 151 # ãªãã¸ã§ã¯ãã®IDçªå·ãä¿æããå¤æ°132 # オブジェクトのID番号を保持する変数 152 133 if $USE_EXTERNAL_ID 153 134 $cfgData[@api].sort.each do |key, params| … … 160 141 end 161 142 162 # éçã«çæããããªãã¸ã§ã¯ãã®æ°143 # 静的に生成されたオブジェクトの数 163 144 $kernelCfgC.add("#define TNUM_S#{@OBJ}ID\t#{$cfgData[@api].size}") 164 145 165 # ãªãã¸ã§ã¯ãIDçªå·ã®æ大å¤146 # オブジェクトID番号の最大値 166 147 $kernelCfgC.add("const ID _kernel_tmax_#{@obj}id" \ 167 148 " = (TMIN_#{@OBJ}ID + TNUM_#{@OBJ}ID - 1);") … … 169 150 " = (TMIN_#{@OBJ}ID + TNUM_S#{@OBJ}ID - 1);") 170 151 171 # ãã¼ã¿æ§é152 # データ構造 172 153 if $cfgData[@api].size > 0 173 # äºåæºåï¼ã¨ã©ã¼ãã§ãã¯ï¼ã¡ã¢ãªé åã®çæï¼154 # 事前準備(エラーチェック,メモリ領域の生成) 174 155 $cfgData[@api].sort.each do |key, params| 175 156 prepare(key, params) 176 157 end 177 158 178 # ãªãã¸ã§ã¯ãå 179 ¨ä½ã«å¯¾ãã¦å¿ 180 è¦ãªã¡ã¢ãªé åã®çæï¼ãªãã·ã§ã³ï¼ 159 # オブジェクト全体に対して必要なメモリ領域の生成(オプション) 181 160 if respond_to?(:generateData) 182 161 generateData() 183 162 end 184 163 185 # ãªãã¸ã§ã¯ãåæåãããã¯ã®çæ164 # オブジェクト初期化ブロックの生成 186 165 $kernelCfgC.add("const #{@OBJ_S}INIB _kernel_#{@obj_s}inib_table" \ 187 166 "[TNUM_S#{@OBJ}ID] = {") … … 197 176 end 198 177 199 # åççæãªãã¸ã§ã¯ãç¨ã®ãªãã¸ã§ã¯ãåæåãããã¯178 # 動的生成オブジェクト用のオブジェクト初期化ブロック 200 179 @inibList.each do |type, array| 201 180 if numAutoObjid > 0 … … 207 186 208 187 if numObjid > 0 209 # ãªãã¸ã§ã¯ã管çãããã¯ã®çæ188 # オブジェクト管理ブロックの生成 210 189 $kernelCfgC.add2("#{@OBJ_S}CB _kernel_#{@obj_s}cb_table" \ 211 190 "[TNUM_#{@OBJ}ID];") 212 191 213 # ãªãã¸ã§ã¯ãåæåé¢æ°ã®è¿½å192 # オブジェクト初期化関数の追加 214 193 $initializeFunctions.push("_kernel_initialize_#{@object}();") 215 194 else … … 221 200 222 201 # 223 # åæ©è½ã¢ã¸ã¥ã¼ã«ã®ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³202 # 各機能モジュールのコンフィギュレーション 224 203 # 225 204 $initializeFunctions = [] … … 237 216 238 217 # 239 # éã¿ã¹ã¯ã³ã³ããã¹ãç¨ã®ã¹ã¿ãã¯é å218 # 非タスクコンテキスト用のスタック領域 240 219 # 241 220 $kernelCfgC.comment_header("Stack Area for Non-task Context") 242 221 243 222 if $cfgData[:DEF_ICS].size == 0 244 # DEF_ICS ããªãå ´åã®ããã©ã«ãå¤ã®è¨å®223 # DEF_ICSがない場合のデフォルト値の設定 245 224 if $DEFAULT_ISTK.nil? 246 # ã¹ã¿ãã¯é åã®èªåå²ä»ã225 # スタック領域の自動割付け 247 226 istksz = AllocStack("_kernel_istack", "DEFAULT_ISTKSZ") 248 227 istk = "_kernel_istack" … … 252 231 end 253 232 else 254 # éçAPIãDEF_ICSããè¤æ°ããï¼E_OBJï¼ï¼»NGKI3216ï¼½233 # 静的API「DEF_ICS」が複数ある(E_OBJ)[NGKI3216] 255 234 if $cfgData[:DEF_ICS].size > 1 256 235 error("E_OBJ: too many DEF_ICS") 257 236 end 258 237 259 # DEF_ICS ãããå ´åã®å¦ç238 # DEF_ICSがある場合の処理 260 239 params = $cfgData[:DEF_ICS][1] 261 240 262 # ãã©ã¡ã¼ã¿ãçç¥ãããæã®ããã©ã«ãå¤ã®è¨å®241 # パラメータが省略された時のデフォルト値の設定 263 242 params[:istk] ||= "NULL" 264 243 265 # istksz ãã¿ã¼ã²ããå®ç¾©ã®æå°å¤ï¼TARGET_MIN_ISTKSZï¼æªå®ç¾©ã®å ´åã¯1ï¼266 # ãããå°ããå ´åï¼E_PARï¼ï¼»NGKI3254ï¼½244 # istkszがターゲット定義の最小値(TARGET_MIN_ISTKSZ,未定義の場合は1) 245 # よりも小さい場合(E_PAR)[NGKI3254] 267 246 if params[:istksz] < $TARGET_MIN_ISTKSZ 268 247 error_wrong("E_PAR", params, :istksz, "too small") … … 270 249 271 250 if params[:istk] == "NULL" 272 # ã¹ã¿ãã¯é åã®èªåå²ä»ã251 # スタック領域の自動割付け 273 252 istksz = AllocStack("_kernel_istack", params[:istksz]) 274 253 istk = "_kernel_istack" 275 254 else 276 # istksz ãã¹ã¿ãã¯é åã®ãµã¤ãºã¨ãã¦æ£ãããªãå ´åï¼E_PARï¼ï¼»NGKI3222ï¼½255 # istkszがスタック領域のサイズとして正しくない場合(E_PAR)[NGKI3222] 277 256 if (params[:istksz] & ($CHECK_STKSZ_ALIGN - 1)) != 0 278 257 error_wrong("E_PAR", params, :istksz, "not aligned") … … 294 273 295 274 # 296 # ã«ã¼ãã«ãå²ãä»ããã¡ã¢ãªé å275 # カーネルが割り付けるメモリ領域 297 276 # 298 277 $kernelCfgC.comment_header("Memory Area Allocated by Kernel") 299 278 300 279 if $cfgData[:DEF_KMM].size == 0 301 # DEF_KMM ããªãå ´åã®ããã©ã«ãå¤ã®è¨å®280 # DEF_KMMがない場合のデフォルト値の設定 302 281 kmmsz = "0" 303 282 kmm = "NULL" 304 283 else 305 # éçAPIãDEF_KMMããè¤æ°ããï¼E_OBJï¼284 # 静的API「DEF_KMM」が複数ある(E_OBJ) 306 285 if ($cfgData[:DEF_KMM].size > 1) 307 286 error("E_OBJ: too many DEF_KMM") 308 287 end 309 288 310 # DEF_KMM ãããå ´åã®å¦ç289 # DEF_KMMがある場合の処理 311 290 params = $cfgData[:DEF_KMM][1] 312 291 313 # ãã©ã¡ã¼ã¿ãçç¥ãããæã®ããã©ã«ãå¤ã®è¨å®292 # パラメータが省略された時のデフォルト値の設定 314 293 params[:kmm] ||= "NULL" 315 294 316 # kmmsz ã0ã®å ´åï¼E_PARï¼295 # kmmszが0の場合(E_PAR) 317 296 if params[:kmmsz] == 0 318 297 error_wrong("E_PAR", params, :kmmsz, "zero") … … 320 299 321 300 if params[:kmm] == "NULL" 322 # ã«ã¼ãã«ãå²ãä»ããã¡ã¢ãªé åã®èªåå²ä»ã301 # カーネルが割り付けるメモリ領域の自動割付け 323 302 $kernelCfgC.add("static MB_T _kernel_memory" \ 324 303 "[TOPPERS_COUNT_SZ(#{params[:kmmsz]}, sizeof(MB_T))];") … … 326 305 kmm = "_kernel_memory" 327 306 else 328 # kmmsz ãã«ã¼ãã«ãå²ãä»ããã¡ã¢ãªé åã®ãµã¤ãºã¨ãã¦æ£ãããªãå ´å329 # ï¼E_PARï¼307 # kmmszがカーネルが割り付けるメモリ領域のサイズとして正しくない場合 308 # (E_PAR) 330 309 if (params[:kmmsz] & ($CHECK_MB_ALIGN - 1)) != 0 331 310 error_wrong("E_PAR", params, :kmmsz, "not aligned") … … 343 322 344 323 # 345 # ã¿ã¤ã ã¤ãã³ã管ç324 # タイムイベント管理 346 325 # 347 326 $kernelCfgC.comment_header("Time Event Management") … … 351 330 352 331 # 353 # åã¢ã¸ã¥ã¼ã«ã®åæåé¢æ°332 # 各モジュールの初期化関数 354 333 # 355 334 $kernelCfgC.comment_header("Module Initialization Function") … … 365 344 366 345 # 367 # åæåã«ã¼ãã³æ©è½346 # 初期化ルーチン機能 368 347 # 369 348 $kernelCfgC.comment_header("Initialization Routine") 370 349 371 # ã¨ã©ã¼ãã§ãã¯350 # エラーチェック 372 351 $cfgData[:ATT_INI].each do |key, params| 373 # iniatr ãç¡å¹ã®å ´åï¼E_RSATRï¼ï¼»NGKI3241ï¼½374 # ï¼TA_NULLã§ãªãå ´åï¼352 # iniatrが無効の場合(E_RSATR)[NGKI3241] 353 #(TA_NULLでない場合) 375 354 if (params[:iniatr] != $TA_NULL) 376 355 error_illegal_sym("E_RSATR", params, :iniatr, :inirtn) … … 378 357 end 379 358 380 # åæåã«ã¼ãã³ã®å®è¡é¢æ°ã®çæ359 # 初期化ルーチンの実行関数の生成 381 360 $kernelCfgC.append(<<EOS) 382 361 void … … 391 370 392 371 # 393 # çµäºå¦çã«ã¼ãã³æ©è½372 # 終了処理ルーチン機能 394 373 # 395 374 $kernelCfgC.comment_header("Termination Routine") 396 375 397 # ã¨ã©ã¼ãã§ãã¯376 # エラーチェック 398 377 $cfgData[:ATT_TER].each do |key, params| 399 # teratr ãç¡å¹ã®å ´åï¼E_RSATRï¼ï¼»NGKI3248ï¼½400 # ï¼TA_NULLã§ãªãå ´åï¼378 # teratrが無効の場合(E_RSATR)[NGKI3248] 379 #(TA_NULLでない場合) 401 380 if (params[:teratr] != $TA_NULL) 402 381 error_illegal_sym("E_RSATR", params, :teratr, :terrtn) … … 404 383 end 405 384 406 # çµäºå¦çã«ã¼ãã³ã®å®è¡é¢æ°ã®çæ385 # 終了処理ルーチンの実行関数の生成 407 386 $kernelCfgC.append(<<EOS) 408 387 void … … 417 396 418 397 # 419 # kernel_cfg.h ã®æ«å°¾é¨åã®çæ398 # kernel_cfg.hの末尾部分の生成 420 399 # 421 400 $kernelCfgH.append(<<EOS) -
Property svn:mime-type
changed from
-
rubycfg_asp/trunk/asp_dcre/kernel/kernel_check.trb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby; 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: kernel_check.trb 662 2016-02-27 02:33:51Z ertl-hiro $ … … 57 42 58 43 # 59 # ã³ã³ãã£ã®ã¥ã¬ã¼ã¿ã®ãã¹3ã®çæã¹ã¯ãªãã60 # 61 62 # 63 # ã¿ã¤ã ã¹ã¿ã³ããã¡ã¤ã«ã®æå®44 # コンフィギュレータのパス3の生成スクリプト 45 # 46 47 # 48 # タイムスタンプファイルの指定 64 49 # 65 50 $timeStampFileName = "check.timestamp" 66 51 67 52 # 68 # ãã¼ã¿ã»ã¯ã·ã§ã³ã®LMAããVMAã¸ã®ã³ãã¼53 # データセクションのLMAからVMAへのコピー 69 54 # 70 55 if !$lmaList.nil? … … 86 71 87 72 # 88 # éç¥æ 89 å ±ã®ãã§ãã¯é¢æ° 73 # 通知情報のチェック関数 90 74 # 91 75 $tmax_tskid = $TMIN_TSKID + $cfgData[:CRE_TSK].size - 1 … … 96 80 97 81 # 98 # ã¿ã¹ã¯ã«é¢ãããã§ãã¯82 # タスクに関するチェック 99 83 # 100 84 tinib = SYMBOL("_kernel_tinib_table") … … 102 86 task = PEEK(tinib + $offsetof_TINIB_task, $sizeof_TASK) 103 87 104 # ã¿ã¹ã¯ã®å 105 é çªå°ã®ãã§ãã¯ï¼»NGKI1033ï¼½ 88 # タスクの先頭番地のチェック[NGKI1033] 106 89 if (task & ($CHECK_FUNC_ALIGN - 1)) != 0 107 90 error_wrong_id("E_PAR", params, :task, :tskid, "not aligned") … … 111 94 end 112 95 113 # ã¿ã¹ã¯ã®ã¹ã¿ãã¯é åã®å 114 é çªå°ã®ãã§ãã¯ï¼»NGKI1056ï¼½ 96 # タスクのスタック領域の先頭番地のチェック[NGKI1056] 115 97 if $USE_TSKINICTXB 116 98 stk = GetStackTskinictxb(key, params, tinib) … … 129 111 130 112 # 131 # åºå®é·ã¡ã¢ãªãã¼ã«ã«é¢ãããã§ãã¯113 # 固定長メモリプールに関するチェック 132 114 # 133 115 mpfinib = SYMBOL("_kernel_mpfinib_table") … … 135 117 mpf = PEEK(mpfinib + $offsetof_MPFINIB_mpf, $sizeof_void_ptr) 136 118 137 # åºå®é·ã¡ã¢ãªãã¼ã«é åã®å 138 é çªå°ã®ãã§ãã¯ï¼»NGKI2249ï¼½ 119 # 固定長メモリプール領域の先頭番地のチェック[NGKI2249] 139 120 if (mpf & ($CHECK_MPF_ALIGN - 1)) != 0 140 121 error_wrong_id("E_PAR", params, :mpf, :mpfid, "not aligned") … … 148 129 149 130 # 150 # å¨æéç¥ã«é¢ãããã§ãã¯131 # 周期通知に関するチェック 151 132 # 152 133 cycinib = SYMBOL("_kernel_cycinib_table") … … 155 136 cychdr = PEEK(cycinib + $offsetof_CYCINIB_cychdr, $sizeof_CYCHDR) 156 137 157 # ãã³ãã©ã®å 158 é çªå°ã®ãã§ãã¯ï¼»NGKI3135ï¼½ 138 # ハンドラの先頭番地のチェック[NGKI3135] 159 139 if (cychdr && ($CHECK_FUNC_ALIGN - 1)) != 0 160 140 error_wrong_id("E_PAR", params, :cychdr, :cycid, "not aligned") … … 168 148 169 149 # 170 # ã¢ã©ã¼ã éç¥ã«é¢ãããã§ãã¯150 # アラーム通知に関するチェック 171 151 # 172 152 alminib = SYMBOL("_kernel_alminib_table") … … 175 155 almhdr = PEEK(alminib + $offsetof_ALMINIB_almhdr, $sizeof_ALMHDR) 176 156 177 # ãã³ãã©ã®å 178 é çªå°ã®ãã§ãã¯ï¼»NGKI3135ï¼½ 157 # ハンドラの先頭番地のチェック[NGKI3135] 179 158 if (almhdr && ($CHECK_FUNC_ALIGN - 1)) != 0 180 159 error_wrong_id("E_PAR", params, :almhdr, :almid, "not aligned") … … 188 167 189 168 # 190 # å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³ã«é¢ãããã§ãã¯169 # 割込みサービスルーチンに関するチェック 191 170 # 192 171 isrinib = SYMBOL("_kernel_sisrinib_table") … … 194 173 isr = PEEK(isrinib + $offsetof_ISRINIB_isr, $sizeof_ISR) 195 174 196 # å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³ã®å 197 é çªå°ã®ãã§ãã¯ï¼»NGKI3004ï¼½ 175 # 割込みサービスルーチンの先頭番地のチェック[NGKI3004] 198 176 if (isr & ($CHECK_FUNC_ALIGN - 1)) != 0 199 177 error_wrong_id("E_PAR", params, :isr, :isrid, "not aligned") … … 207 185 208 186 # 209 # éã¿ã¹ã¯ã³ã³ããã¹ãç¨ã®ã¹ã¿ãã¯é åã«é¢ãããã§ãã¯187 # 非タスクコンテキスト用のスタック領域に関するチェック 210 188 # 211 189 istkAddr = SYMBOL("_kernel_istk") … … 213 191 istk = PEEK(istkAddr, $sizeof_void_ptr) 214 192 215 # éã¿ã¹ã¯ã³ã³ããã¹ãç¨ã®ã¹ã¿ãã¯é åã®å 216 é çªå°ã®ãã§ãã¯ï¼»NGKI3222ï¼½ 193 # 非タスクコンテキスト用のスタック領域の先頭番地のチェック[NGKI3222] 217 194 if (istk & ($CHECK_STACK_ALIGN - 1)) != 0 218 195 error_wrong("E_PAR", $cfgData[:DEF_ICS][1], :istk, "not aligned") … … 224 201 225 202 # 226 # ã«ã¼ãã«ãå²ãä»ããã¡ã¢ãªé åã«é¢ãããã§ãã¯203 # カーネルが割り付けるメモリ領域に関するチェック 227 204 # 228 205 kmmAddr = SYMBOL("_kernel_kmm") … … 230 207 kmm = PEEK(kmmAddr, $sizeof_void_ptr) 231 208 232 # ã«ã¼ãã«ãå²ãä»ããã¡ã¢ãªé åã®å 233 é çªå°ã®ãã§ã㯠209 # カーネルが割り付けるメモリ領域の先頭番地のチェック 234 210 if (kmm & ($CHECK_MB_ALIGN - 1)) != 0 235 211 error_wrong("E_PAR", $cfgData[:DEF_KMM][1], :kmm, "not aligned") -
Property svn:mime-type
changed from
-
rubycfg_asp/trunk/asp_dcre/kernel/kernel_impl.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 責ãããã¨ï¼ 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 * åãã£ã¹ããè¡ããã¯ãã®å®ç¾©73 * 型キャストを行うマクロの定義 93 74 */ 94 75 #ifndef CAST … … 97 78 98 79 /* 99 * ã¿ã¼ã²ããä¾åæ 100 å ±ã®å®ç¾© 80 * ターゲット依存情報の定義 101 81 */ 102 82 #include "target_config.h" 103 83 104 84 /* 105 * ãã¹ã¦ã®é¢æ°ãã³ã³ãã¤ã«ããããã®å®ç¾©85 * すべての関数をコンパイルするための定義 106 86 */ 107 87 #ifdef ALLFUNC … … 110 90 111 91 /* 112 * ããããã£ã¼ã«ãã§ã®ç¬¦å·ç¡ãæ´æ°å 113 * 114 * 8ããã以ä¸ã®å¹ 115 ã®ããããã£ã¼ã«ãã§ï¼ç¬¦å·ç¡ãæ´æ°å¤ãä¿æãããå ´å 116 * ã«ç¨ããã¹ããã¼ã¿åï¼ANSI Cã§ã¯ï¼ããããã£ã¼ã«ãã®ãã¼ã¿åã«ã¯ 117 * intã¨unsigned intãã許ãããªãããï¼ããã©ã«ãã®å®ç¾©ã¯unsigned 118 * intã¨ãã¦ãããï¼ã¿ã¼ã²ããããã³ãã¼ã«ä¾åã§ï¼unsigned charã¾ã㯠119 * unsigned shortã«å®ç¾©ããæ¹ãå¹çãè¯ãå ´åãããï¼ 92 * ビットフィールドでの符号無し整数型 93 * 94 * 8ビット以下の幅のビットフィールドで,符号無し整数値を保持したい場合 95 * に用いるべきデータ型.ANSI Cでは,ビットフィールドのデータ型には 96 * intとunsigned intしか許されないため,デフォルトの定義はunsigned 97 * intとしているが,ターゲットおよびツール依存で,unsigned charまたは 98 * unsigned shortに定義した方が効率が良い場合がある. 120 99 */ 121 100 #ifndef BIT_FIELD_UINT … … 124 103 125 104 /* 126 * ããããã£ã¼ã«ãã§ã®ãã¼ã«å 127 * 128 * 1ãããå¹ 129 ã®ããããã£ã¼ã«ãã§ï¼ãã¼ã«å¤ãä¿æãããå ´åã«ç¨ããã¹ã 130 * ãã¼ã¿åï¼ããã©ã«ãã§ã¯BIT_FIELD_UINTã¨åä¸ã«å®ç¾©ãã¦ãããï¼ãã¼ 131 * ã«å¤ãä¿æãããã¨ãæ示ããããã«å¥ã®å称ã¨ãã¦ããï¼ 105 * ビットフィールドでのブール型 106 * 107 * 1ビット幅のビットフィールドで,ブール値を保持したい場合に用いるべき 108 * データ型.デフォルトではBIT_FIELD_UINTと同一に定義しているが,ブー 109 * ル値を保持することを明示するために別の名称としている. 132 110 */ 133 111 #ifndef BIT_FIELD_BOOL … … 136 114 137 115 /* 138 * ãªãã¸ã§ã¯ãIDã®æå°å¤ã®å®ç¾© 139 */ 140 #define TMIN_TSKID 1 /* ã¿ã¹ã¯IDã®æå°å¤ */ 141 #define TMIN_SEMID 1 /* ã»ããã©IDã®æå°å¤ */ 142 #define TMIN_FLGID 1 /* ãã©ã°IDã®æå°å¤ */ 143 #define TMIN_DTQID 1 /* ãã¼ã¿ãã¥ã¼IDã®æå°å¤ */ 144 #define TMIN_PDQID 1 /* åªå 145 度ãã¼ã¿ãã¥ã¼IDã®æå°å¤ */ 146 #define TMIN_MBXID 1 /* ã¡ã¼ã«ããã¯ã¹IDã®æå°å¤ */ 147 #define TMIN_MPFID 1 /* åºå®é·ã¡ã¢ãªãã¼ã«IDã®æå°å¤ */ 148 #define TMIN_CYCID 1 /* å¨æãã³ãã©IDã®æå°å¤ */ 149 #define TMIN_ALMID 1 /* ã¢ã©ã¼ã ãã³ãã©IDã®æå°å¤ */ 150 #define TMIN_ISRID 1 /* å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³IDã®æå°å¤ */ 151 152 /* 153 * åªå 154 度ã®æ®µéæ°ã®å®ç¾© 116 * オブジェクトIDの最小値の定義 117 */ 118 #define TMIN_TSKID 1 /* タスクIDの最小値 */ 119 #define TMIN_SEMID 1 /* セマフォIDの最小値 */ 120 #define TMIN_FLGID 1 /* フラグIDの最小値 */ 121 #define TMIN_DTQID 1 /* データキューIDの最小値 */ 122 #define TMIN_PDQID 1 /* 優先度データキューIDの最小値 */ 123 #define TMIN_MBXID 1 /* メールボックスIDの最小値 */ 124 #define TMIN_MPFID 1 /* 固定長メモリプールIDの最小値 */ 125 #define TMIN_CYCID 1 /* 周期ハンドラIDの最小値 */ 126 #define TMIN_ALMID 1 /* アラームハンドラIDの最小値 */ 127 #define TMIN_ISRID 1 /* 割込みサービスルーチンIDの最小値 */ 128 129 /* 130 * 優先度の段階数の定義 155 131 */ 156 132 #define TNUM_TPRI (TMAX_TPRI - TMIN_TPRI + 1) … … 159 135 160 136 /* 161 * ã«ã¼ãã«å 162 é¨ã§ä½¿ç¨ããå±æ§ã®å®ç¾© 163 */ 164 #define TA_NOEXS ((ATR)(-1)) /* æªç»é²ç¶æ 165 */ 137 * カーネル内部で使用する属性の定義 138 */ 139 #define TA_NOEXS ((ATR)(-1)) /* 未登録状態 */ 166 140 167 141 #ifndef TA_MEMALLOC 168 #define TA_MEMALLOC UINT_C(0x8000) /* ã¡ã¢ãªé åãã«ã¼ãã«ã§ç¢ºä¿*/142 #define TA_MEMALLOC UINT_C(0x8000) /* メモリ領域をカーネルで確保 */ 169 143 #endif /* TA_MEMALLOC */ 170 144 #ifndef TA_MBALLOC 171 #define TA_MBALLOC UINT_C(0x4000) /* 管çé åãã«ã¼ãã«ã§ç¢ºä¿*/145 #define TA_MBALLOC UINT_C(0x4000) /* 管理領域をカーネルで確保 */ 172 146 #endif /* TA_MBALLOC */ 173 147 174 148 /* 175 * ã¿ã¼ã²ããå®ç¾©ã®ã¨ã©ã¼ãã§ãã¯ãã¯ãã®ããã©ã«ãå¤ã®å®ç¾©149 * ターゲット定義のエラーチェックマクロのデフォルト値の定義 176 150 */ 177 151 #ifndef TARGET_TSKATR 178 #define TARGET_TSKATR 0U /* ã¿ã¼ã²ããå®ç¾©ã®ã¿ã¹ã¯å±æ§*/152 #define TARGET_TSKATR 0U /* ターゲット定義のタスク属性 */ 179 153 #endif /* TARGET_TSKATR */ 180 154 181 155 #ifndef TARGET_ISRATR 182 #define TARGET_ISRATR 0U /* ã¿ã¼ã²ããå®ç¾©ã®ISRå±æ§*/156 #define TARGET_ISRATR 0U /* ターゲット定義のISR属性 */ 183 157 #endif /* TARGET_ISRATR */ 184 158 185 159 /* 186 * ããããã¡ã¤ã«ãæããªãã¢ã¸ã¥ã¼ã«ã®é¢æ°ã»å¤æ°ã®å®£è¨160 * ヘッダファイルを持たないモジュールの関数・変数の宣言 187 161 */ 188 162 #ifndef TOPPERS_MACRO_ONLY 189 163 190 164 /* 191 * åã¢ã¸ã¥ã¼ã«ã®åæåï¼kernel_cfg.cï¼165 * 各モジュールの初期化(kernel_cfg.c) 192 166 */ 193 167 extern void initialize_object(void); 194 168 195 169 /* 196 * åæåã«ã¼ãã³ã®å®è¡ï¼kernel_cfg.cï¼170 * 初期化ルーチンの実行(kernel_cfg.c) 197 171 */ 198 172 extern void call_inirtn(void); 199 173 200 174 /* 201 * çµäºå¦çã«ã¼ãã³ã®å®è¡ï¼kernel_cfg.cï¼175 * 終了処理ルーチンの実行(kernel_cfg.c) 202 176 */ 203 177 extern void call_terrtn(void); 204 178 205 179 /* 206 * éã¿ã¹ã¯ã³ã³ããã¹ãç¨ã®ã¹ã¿ãã¯é åï¼kernel_cfg.cï¼ 207 */ 208 extern const SIZE istksz; /* ã¹ã¿ãã¯é åã®ãµã¤ãºï¼ä¸¸ããå¤ï¼ */ 209 extern STK_T *const istk; /* ã¹ã¿ãã¯é åã®å 210 é çªå° */ 180 * 非タスクコンテキスト用のスタック領域(kernel_cfg.c) 181 */ 182 extern const SIZE istksz; /* スタック領域のサイズ(丸めた値) */ 183 extern STK_T *const istk; /* スタック領域の先頭番地 */ 211 184 #ifdef TOPPERS_ISTKPT 212 extern STK_T *const istkpt; /* ã¹ã¿ãã¯ãã¤ã³ã¿ã®åæå¤*/185 extern STK_T *const istkpt; /* スタックポインタの初期値 */ 213 186 #endif /* TOPPERS_ISTKPT */ 214 187 215 188 /* 216 * ã«ã¼ãã«ãå²ãä»ããã¡ã¢ãªé åï¼kernel_cfg.cï¼ 217 */ 218 extern const SIZE kmmsz; /* ã«ã¼ãã«ãå²ãä»ããã¡ã¢ãªé åã®ãµã¤ãº */ 219 extern MB_T *const kmm; /* ã«ã¼ãã«ãå²ãä»ããã¡ã¢ãªé åã®å 220 é çªå° */ 221 222 /* 223 * ã«ã¼ãã«åä½ç¶æ 224 ãã©ã°ï¼startup.cï¼ 189 * カーネルが割り付けるメモリ領域(kernel_cfg.c) 190 */ 191 extern const SIZE kmmsz; /* カーネルが割り付けるメモリ領域のサイズ */ 192 extern MB_T *const kmm; /* カーネルが割り付けるメモリ領域の先頭番地 */ 193 194 /* 195 * カーネル動作状態フラグ(startup.c) 225 196 */ 226 197 extern bool_t kerflg; 227 198 228 199 /* 229 * ã«ã¼ãã«ã®èµ·åï¼startup.cï¼200 * カーネルの起動(startup.c) 230 201 */ 231 202 extern void sta_ker(void); 232 203 233 204 /* 234 * ã«ã¼ãã«ã®çµäºå¦çï¼startup.cï¼205 * カーネルの終了処理(startup.c) 235 206 */ 236 207 extern void exit_kernel(void); 237 208 238 209 /* 239 * ã«ã¼ãã«ã®å²ãä»ããã¡ã¢ãªé åã®ç®¡çï¼startup.cï¼210 * カーネルの割り付けるメモリ領域の管理(startup.c) 240 211 */ 241 212 extern void initialize_kmm(void); -
Property svn:mime-type
changed from
-
rubycfg_asp/trunk/asp_dcre/kernel/kernel_int.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 * kernel_cfg.c ï¼ããã³cfg1_out.cï¼ç¨ããããã¡ã¤ã«44 * kernel_cfg.c(およびcfg1_out.c)用ヘッダファイル 60 45 */ 61 46 … … 64 49 65 50 /* 66 * ã«ã¼ãã«æ¨æºããããã¡ã¤ã«51 * カーネル標準ヘッダファイル 67 52 */ 68 53 #include "kernel_impl.h" 69 54 70 55 /* 71 * ã«ã¼ãã«ã®åããããã¡ã¤ã«56 * カーネルの各ヘッダファイル 72 57 */ 73 58 #include "task.h" … … 85 70 86 71 /* 87 * ãªãã¼ã ããã·ã³ãã«ãå 88 ã«æ»ãããã®ããããã¡ã¤ã« 72 * リネームしたシンボルを元に戻すためのヘッダファイル 89 73 */ 90 74 #include "kernel_unrename.h" 91 75 92 76 /* 93 * å 94 容ã空ã®é 95 åãçæããããã®ãã¯ã 77 * 内容が空の配列を生成するためのマクロ 96 78 */ 97 79 #ifndef TOPPERS_EMPTY_LABEL -
Property svn:mime-type
changed from
-
rubycfg_asp/trunk/asp_dcre/kernel/kernel_rename.h
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr; charset=UTF-8
-
Property svn:mime-type
changed from
-
rubycfg_asp/trunk/asp_dcre/kernel/kernel_unrename.h
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr; charset=UTF-8
-
Property svn:mime-type
changed from
-
rubycfg_asp/trunk/asp_dcre/kernel/mailbox.c
-
Property svn:mime-type
changed from
text/x-csrc
totext/x-csrc; 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 * ã¡ã¼ã«ããã¯ã¹æ©è½44 * メールボックス機能 60 45 */ 61 46 … … 67 52 68 53 /* 69 * ãã¬ã¼ã¹ãã°ãã¯ãã®ããã©ã«ãå®ç¾©54 * トレースログマクロのデフォルト定義 70 55 */ 71 56 #ifndef LOG_ACRE_MBX_ENTER … … 134 119 135 120 /* 136 * ã¡ã¼ã«ããã¯ã¹ã®æ°121 * メールボックスの数 137 122 */ 138 123 #define tnum_mbx ((uint_t)(tmax_mbxid - TMIN_MBXID + 1)) … … 140 125 141 126 /* 142 * ã¡ã¼ã«ããã¯ã¹IDããã¡ã¼ã«ããã¯ã¹ç®¡çãããã¯ãåãåºãããã®ãã¯ã127 * メールボックスIDからメールボックス管理ブロックを取り出すためのマクロ 143 128 */ 144 129 #define INDEX_MBX(mbxid) ((uint_t)((mbxid) - TMIN_MBXID)) … … 148 133 149 134 /* 150 * 使ç¨ãã¦ããªãã¡ã¼ã«ããã¯ã¹ç®¡çãããã¯ã®ãªã¹ã135 * 使用していないメールボックス管理ブロックのリスト 151 136 */ 152 137 QUEUE free_mbxcb; 153 138 154 139 /* 155 * ã¡ã¼ã«ããã¯ã¹æ©è½ã®åæå140 * メールボックス機能の初期化 156 141 */ 157 142 void … … 181 166 182 167 /* 183 * ã¡ãã»ã¼ã¸åªå 184 度ã®ååºã 168 * メッセージ優先度の取出し 185 169 */ 186 170 #define MSGPRI(pk_msg) (((T_MSG_PRI *)(pk_msg))->msgpri) 187 171 188 172 /* 189 * åªå 190 度é ã¡ãã»ã¼ã¸ãã¥ã¼ã¸ã®æ¿å 191 ¥ 173 * 優先度順メッセージキューへの挿入 192 174 */ 193 175 Inline void … … 207 189 208 190 /* 209 * ã¡ã¼ã«ããã¯ã¹ã®çæ191 * メールボックスの生成 210 192 */ 211 193 #ifdef TOPPERS_acre_mbx … … 248 230 249 231 /* 250 * ã¡ã¼ã«ããã¯ã¹ã®åé¤232 * メールボックスの削除 251 233 */ 252 234 #ifdef TOPPERS_del_mbx … … 292 274 293 275 /* 294 * ã¡ã¼ã«ããã¯ã¹ã¸ã®éä¿¡276 * メールボックスへの送信 295 277 */ 296 278 #ifdef TOPPERS_snd_mbx … … 350 332 351 333 /* 352 * ã¡ã¼ã«ããã¯ã¹ããã®åä¿¡334 * メールボックスからの受信 353 335 */ 354 336 #ifdef TOPPERS_rcv_mbx … … 394 376 395 377 /* 396 * ã¡ã¼ã«ããã¯ã¹ããã®åä¿¡ï¼ãã¼ãªã³ã°ï¼378 * メールボックスからの受信(ポーリング) 397 379 */ 398 380 #ifdef TOPPERS_prcv_mbx … … 431 413 432 414 /* 433 * ã¡ã¼ã«ããã¯ã¹ããã®åä¿¡ï¼ã¿ã¤ã ã¢ã¦ãããï¼415 * メールボックスからの受信(タイムアウトあり) 434 416 */ 435 417 #ifdef TOPPERS_trcv_mbx … … 481 463 482 464 /* 483 * ã¡ã¼ã«ããã¯ã¹ã®ååæå465 * メールボックスの再初期化 484 466 */ 485 467 #ifdef TOPPERS_ini_mbx … … 519 501 520 502 /* 521 * ã¡ã¼ã«ããã¯ã¹ã®ç¶æ 522 åç 523 § 503 * メールボックスの状態参照 524 504 */ 525 505 #ifdef TOPPERS_ref_mbx -
Property svn:mime-type
changed from
-
rubycfg_asp/trunk/asp_dcre/kernel/mailbox.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 * ã¡ã¼ã«ããã¯ã¹æ©è½44 * メールボックス機能 60 45 */ 61 46 … … 66 51 67 52 /* 68 * ã¡ã¼ã«ããã¯ã¹åæåãããã¯53 * メールボックス初期化ブロック 69 54 * 70 * ãã®æ§é ä½ã¯ï¼åæã»éä¿¡ãªãã¸ã§ã¯ãã®åæåãããã¯ã®å 71 ±éé¨å 72 * ï¼WOBJINIBï¼ãæ¡å¼µï¼ãªãã¸ã§ã¯ãæåè¨èªã®ç¶æ¿ã«ç¸å½ï¼ãããã®ã§ï¼ 73 * æåã®ãã£ã¼ã«ããå 74 ±éã«ãªã£ã¦ããï¼ 55 * この構造体は,同期・通信オブジェクトの初期化ブロックの共通部分 56 * (WOBJINIB)を拡張(オブジェクト指向言語の継承に相当)したもので, 57 * 最初のフィールドが共通になっている. 75 58 */ 76 59 typedef struct mailbox_initialization_block { 77 ATR mbxatr; /* ã¡ã¼ã«ããã¯ã¹å±æ§ */ 78 PRI maxmpri; /* ã¡ãã»ã¼ã¸åªå 79 度ã®æå¤§å¤ */ 60 ATR mbxatr; /* メールボックス属性 */ 61 PRI maxmpri; /* メッセージ優先度の最大値 */ 80 62 } MBXINIB; 81 63 82 64 /* 83 * ã¡ã¼ã«ããã¯ã¹ç®¡çãããã¯65 * メールボックス管理ブロック 84 66 * 85 * ãã®æ§é ä½ã¯ï¼åæã»éä¿¡ãªãã¸ã§ã¯ãã®ç®¡çãããã¯ã®å 86 ±éé¨åï¼WOBJCBï¼ 87 * ãæ¡å¼µï¼ãªãã¸ã§ã¯ãæåè¨èªã®ç¶æ¿ã«ç¸å½ï¼ãããã®ã§ï¼æåã®2ã¤ã® 88 * ãã£ã¼ã«ããå 89 ±éã«ãªã£ã¦ããï¼ 67 * この構造体は,同期・通信オブジェクトの管理ブロックの共通部分(WOBJCB) 68 * を拡張(オブジェクト指向言語の継承に相当)したもので,最初の2つの 69 * フィールドが共通になっている. 90 70 * 91 * ã¡ãã»ã¼ã¸ãã¥ã¼ãã¡ãã»ã¼ã¸ã®åªå 92 度é ã®å ´åã«ã¯ï¼pk_lastã¯ä½¿ã㪠93 * ãï¼ã¾ãï¼ã¡ãã»ã¼ã¸ãã¥ã¼ã空ã®å ´åï¼pk_headãNULLã®å ´åï¼ã«ãï¼ 94 * pk_lastã¯ç¡å¹ã§ããï¼ 71 * メッセージキューがメッセージの優先度順の場合には,pk_lastは使わな 72 * い.また,メッセージキューが空の場合(pk_headがNULLの場合)にも, 73 * pk_lastは無効である. 95 74 */ 96 75 typedef struct mailbox_control_block { 97 QUEUE wait_queue; /* ã¡ã¼ã«ããã¯ã¹å¾ 98 ã¡ãã¥ã¼ */ 99 const MBXINIB *p_mbxinib; /* åæåãããã¯ã¸ã®ãã¤ã³ã¿ */ 100 T_MSG *pk_head; /* å 101 é ã®ã¡ãã»ã¼ã¸ */ 102 T_MSG *pk_last; /* æ«å°¾ã®ã¡ãã»ã¼ã¸ */ 76 QUEUE wait_queue; /* メールボックス待ちキュー */ 77 const MBXINIB *p_mbxinib; /* 初期化ブロックへのポインタ */ 78 T_MSG *pk_head; /* 先頭のメッセージ */ 79 T_MSG *pk_last; /* 末尾のメッセージ */ 103 80 } MBXCB; 104 81 105 82 /* 106 * ã¡ã¼ã«ããã¯ã¹å¾ 107 ã¡æ 108 å ±ãããã¯ã®å®ç¾© 83 * メールボックス待ち情報ブロックの定義 109 84 * 110 * ãã®æ§é ä½ã¯ï¼åæã»éä¿¡ãªãã¸ã§ã¯ãã®å¾ 111 ã¡æ 112 å ±ãããã¯ã®å 113 ±éé¨å 114 * ï¼WINFO_WOBJï¼ãæ¡å¼µï¼ãªãã¸ã§ã¯ãæåè¨èªã®ç¶æ¿ã«ç¸å½ï¼ãããã®ã§ï¼ 115 * æåã®2ã¤ã®ãã£ã¼ã«ããå 116 ±éã«ãªã£ã¦ããï¼ 85 * この構造体は,同期・通信オブジェクトの待ち情報ブロックの共通部分 86 * (WINFO_WOBJ)を拡張(オブジェクト指向言語の継承に相当)したもので, 87 * 最初の2つのフィールドが共通になっている. 117 88 */ 118 89 typedef struct mailbox_waiting_information { 119 WINFO winfo; /* æ¨æºã®å¾ 120 ã¡æ 121 å ±ããã㯠*/ 122 MBXCB *p_mbxcb; /* å¾ 123 ã£ã¦ããã¡ã¼ã«ããã¯ã¹ã®ç®¡çããã㯠*/ 124 T_MSG *pk_msg; /* åä¿¡ããã¡ãã»ã¼ã¸ */ 90 WINFO winfo; /* 標準の待ち情報ブロック */ 91 MBXCB *p_mbxcb; /* 待っているメールボックスの管理ブロック */ 92 T_MSG *pk_msg; /* 受信したメッセージ */ 125 93 } WINFO_MBX; 126 94 127 95 /* 128 * 使ç¨ãã¦ããªãã¡ã¼ã«ããã¯ã¹ç®¡çãããã¯ã®ãªã¹ã96 * 使用していないメールボックス管理ブロックのリスト 129 97 */ 130 98 extern QUEUE free_mbxcb; 131 99 132 100 /* 133 * ã¡ã¼ã«ããã¯ã¹IDã®æ大å¤ï¼kernel_cfg.cï¼101 * メールボックスIDの最大値(kernel_cfg.c) 134 102 */ 135 103 extern const ID tmax_mbxid; … … 137 105 138 106 /* 139 * ã¡ã¼ã«ããã¯ã¹åæåãããã¯ã®ã¨ãªã¢ï¼kernel_cfg.cï¼107 * メールボックス初期化ブロックのエリア(kernel_cfg.c) 140 108 */ 141 109 extern const MBXINIB mbxinib_table[]; … … 143 111 144 112 /* 145 * ã¡ã¼ã«ããã¯ã¹ç®¡çãããã¯ã®ã¨ãªã¢ï¼kernel_cfg.cï¼113 * メールボックス管理ブロックのエリア(kernel_cfg.c) 146 114 */ 147 115 extern MBXCB mbxcb_table[]; 148 116 149 117 /* 150 * ã¡ã¼ã«ããã¯ã¹ç®¡çãããã¯ããã¡ã¼ã«ããã¯ã¹IDãåãåºãããã®ãã¯ã118 * メールボックス管理ブロックからメールボックスIDを取り出すためのマクロ 151 119 */ 152 120 #define MBXID(p_mbxcb) ((ID)(((p_mbxcb) - mbxcb_table) + TMIN_MBXID)) 153 121 154 122 /* 155 * ã¡ã¼ã«ããã¯ã¹æ©è½ã®åæå123 * メールボックス機能の初期化 156 124 */ 157 125 extern void initialize_mailbox(void); -
Property svn:mime-type
changed from
-
rubycfg_asp/trunk/asp_dcre/kernel/mailbox.trb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby; 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: mailbox.trb 630 2016-02-14 11:30:17Z ertl-hiro $ … … 57 42 58 43 # 59 # ã¡ã¼ã«ããã¯ã¹æ©è½ã®çæã¹ã¯ãªãã44 # メールボックス機能の生成スクリプト 60 45 # 61 46 … … 66 51 67 52 def prepare(key, params) 68 # mbxatr ãç¡å¹ã®å ´åï¼E_RSATRï¼69 # ï¼TA_NULLï¼TA_TPRIï¼TA_MPRIã®ãããã§ããªãå ´åï¼53 # mbxatrが無効の場合(E_RSATR) 54 # (TA_NULL,TA_TPRI,TA_MPRIのいずれでもない場合) 70 55 if !(params[:mbxatr] == $TA_NULL || params[:mbxatr] == $TA_TPRI \ 71 56 || params[:mbxatr] == $TA_MPRI) … … 74 59 75 60 if params[:mbxatr] == $TA_MPRI 76 # åªå 77 度ä¸éã¡ã¼ã«ããã¯ã¹ã®å ´å 78 # maxmpriãæªæå®ã®å ´åã¯ã¨ã©ã¼ã¨ãã 61 # 優先度上限メールボックスの場合 62 # maxmpriが未指定の場合はエラーとする 79 63 if params[:maxmpri].nil? 80 64 error_api(params, "maxmpri must be specified in %apiname of %mbxid") 81 65 82 # (TMIN_MPRI <= maxmpri && maxmpri <= TMAX_MPRI) ã§ãªãå ´åï¼E_PARï¼66 # (TMIN_MPRI <= maxmpri && maxmpri <= TMAX_MPRI)でない場合(E_PAR) 83 67 elsif !($TMIN_MPRI <= params[:maxmpri] && params[:maxmpri] <= $TMAX_MPRI) 84 68 error_illegal_id("E_PAR", params, :maxmpri, :mbxid) 85 69 end 86 70 else 87 # åªå 88 度ä¸éã¡ã¼ã«ããã¯ã¹ã§ãªãå ´å 89 # maxmpriãæå®ããã¦ããå ´åã¯è¦åã¡ãã»ã¼ã¸ãåºã 71 # 優先度上限メールボックスでない場合 72 # maxmpriが指定されている場合は警告メッセージを出す 90 73 if !params[:maxmpri].nil? 91 74 warning_api(params, "%%maxmpri is ignored in %apiname of %mbxid") … … 94 77 end 95 78 96 # mprihd ãNULLã§ãªãå ´åï¼E_NOSPTï¼79 # mprihdがNULLでない場合(E_NOSPT) 97 80 if !params[:mprihd].nil? && params[:mprihd] != "NULL" 98 81 error_illegal_id("E_NOSPT", params, :mprihd, :mbxid) … … 106 89 107 90 # 108 # ã¡ã¼ã«ããã¯ã¹ã«é¢ããæ 109 å ±ã®çæ 91 # メールボックスに関する情報の生成 110 92 # 111 93 $kernelCfgC.comment_header("Mailbox Functions") -
Property svn:mime-type
changed from
-
rubycfg_asp/trunk/asp_dcre/kernel/mempfix.c
-
Property svn:mime-type
changed from
text/x-csrc
totext/x-csrc; 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 * åºå®é·ã¡ã¢ãªãã¼ã«æ©è½44 * 固定長メモリプール機能 60 45 */ 61 46 … … 67 52 68 53 /* 69 * ãã¬ã¼ã¹ãã°ãã¯ãã®ããã©ã«ãå®ç¾©54 * トレースログマクロのデフォルト定義 70 55 */ 71 56 #ifndef LOG_ACRE_MPF_ENTER … … 134 119 135 120 /* 136 * åºå®é·ã¡ã¢ãªãã¼ã«ã®æ°121 * 固定長メモリプールの数 137 122 */ 138 123 #define tnum_mpf ((uint_t)(tmax_mpfid - TMIN_MPFID + 1)) … … 140 125 141 126 /* 142 * åºå®é·ã¡ã¢ãªãã¼ã«IDããåºå®é·ã¡ã¢ãªãã¼ã«ç®¡çãããã¯ãåãåºãã143 * ãã®ãã¯ã127 * 固定長メモリプールIDから固定長メモリプール管理ブロックを取り出すた 128 * めのマクロ 144 129 */ 145 130 #define INDEX_MPF(mpfid) ((uint_t)((mpfid) - TMIN_MPFID)) … … 147 132 148 133 /* 149 * ç¹æ®ãªã¤ã³ããã¯ã¹å¤ã®å®ç¾©150 */ 151 #define INDEX_NULL (~0U) /* 空ããããã¯ãªã¹ãã®æå¾*/152 #define INDEX_ALLOC (~1U) /* å²å½ã¦æ¸ã¿ã®ãããã¯*/134 * 特殊なインデックス値の定義 135 */ 136 #define INDEX_NULL (~0U) /* 空きブロックリストの最後 */ 137 #define INDEX_ALLOC (~1U) /* 割当て済みのブロック */ 153 138 154 139 #ifdef TOPPERS_mpfini 155 140 156 141 /* 157 * 使ç¨ãã¦ããªãåºå®é·ã¡ã¢ãªãã¼ã«ç®¡çãããã¯ã®ãªã¹ã142 * 使用していない固定長メモリプール管理ブロックのリスト 158 143 */ 159 144 QUEUE free_mpfcb; 160 145 161 146 /* 162 * åºå®é·ã¡ã¢ãªãã¼ã«æ©è½ã®åæå147 * 固定長メモリプール機能の初期化 163 148 */ 164 149 void … … 190 175 191 176 /* 192 * åºå®é·ã¡ã¢ãªãã¼ã«ãããããã¯ãç²å¾177 * 固定長メモリプールからブロックを獲得 193 178 */ 194 179 #ifdef TOPPERS_mpfget … … 216 201 217 202 /* 218 * åºå®é·ã¡ã¢ãªãã¼ã«ã®çæ203 * 固定長メモリプールの生成 219 204 */ 220 205 #ifdef TOPPERS_acre_mpf … … 295 280 296 281 /* 297 * åºå®é·ã¡ã¢ãªãã¼ã«ã®åé¤282 * 固定長メモリプールの削除 298 283 */ 299 284 #ifdef TOPPERS_del_mpf … … 345 330 346 331 /* 347 * åºå®é·ã¡ã¢ãªãããã¯ã®ç²å¾332 * 固定長メモリブロックの獲得 348 333 */ 349 334 #ifdef TOPPERS_get_mpf … … 388 373 389 374 /* 390 * åºå®é·ã¡ã¢ãªãããã¯ã®ç²å¾ï¼ãã¼ãªã³ã°ï¼375 * 固定長メモリブロックの獲得(ポーリング) 391 376 */ 392 377 #ifdef TOPPERS_pget_mpf … … 424 409 425 410 /* 426 * åºå®é·ã¡ã¢ãªãããã¯ã®ç²å¾ï¼ã¿ã¤ã ã¢ã¦ãããï¼411 * 固定長メモリブロックの獲得(タイムアウトあり) 427 412 */ 428 413 #ifdef TOPPERS_tget_mpf … … 473 458 474 459 /* 475 * åºå®é·ã¡ã¢ãªãããã¯ã®è¿å´460 * 固定長メモリブロックの返却 476 461 */ 477 462 #ifdef TOPPERS_rel_mpf … … 530 515 531 516 /* 532 * åºå®é·ã¡ã¢ãªãã¼ã«ã®ååæå517 * 固定長メモリプールの再初期化 533 518 */ 534 519 #ifdef TOPPERS_ini_mpf … … 570 555 571 556 /* 572 * åºå®é·ã¡ã¢ãªãã¼ã«ã®ç¶æ 573 åç 574 § 557 * 固定長メモリプールの状態参照 575 558 */ 576 559 #ifdef TOPPERS_ref_mpf -
Property svn:mime-type
changed from
-
rubycfg_asp/trunk/asp_dcre/kernel/mempfix.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 * åºå®é·ã¡ã¢ãªãã¼ã«æ©è½44 * 固定長メモリプール機能 60 45 */ 61 46 … … 66 51 67 52 /* 68 * åºå®é·ã¡ã¢ãªãããã¯ç®¡çãããã¯53 * 固定長メモリブロック管理ブロック 69 54 * 70 * next ãã£ã¼ã«ãã«ã¯ï¼ã¡ã¢ãªãããã¯ãå²å½ã¦æ¸ã¿ã®å ´åã¯INDEX_ALLOCãï¼71 * æªå²å½ã¦ã®å ´åã¯æ¬¡ã®æªå²å½ã¦ãããã¯ã®ã¤ã³ããã¯ã¹çªå·ãæ ¼ç´ããï¼72 * æå¾ã®æªå²å½ã¦ãããã¯ã®å ´åã«ã¯ï¼INDEX_NULLãæ ¼ç´ããï¼55 * nextフィールドには,メモリブロックが割当て済みの場合はINDEX_ALLOCを, 56 * 未割当ての場合は次の未割当てブロックのインデックス番号を格納する. 57 * 最後の未割当てブロックの場合には,INDEX_NULLを格納する. 73 58 */ 74 59 typedef struct fixed_memoryblock_management_block { 75 uint_t next; /* 次ã®æªå²å½ã¦ãããã¯*/60 uint_t next; /* 次の未割当てブロック */ 76 61 } MPFMB; 77 62 78 63 /* 79 * åºå®é·ã¡ã¢ãªãã¼ã«åæåãããã¯64 * 固定長メモリプール初期化ブロック 80 65 * 81 * ãã®æ§é ä½ã¯ï¼åæã»éä¿¡ãªãã¸ã§ã¯ãã®åæåãããã¯ã®å 82 ±éé¨å 83 * ï¼WOBJINIBï¼ãæ¡å¼µï¼ãªãã¸ã§ã¯ãæåè¨èªã®ç¶æ¿ã«ç¸å½ï¼ãããã®ã§ï¼ 84 * æåã®ãã£ã¼ã«ããå 85 ±éã«ãªã£ã¦ããï¼ 66 * この構造体は,同期・通信オブジェクトの初期化ブロックの共通部分 67 * (WOBJINIB)を拡張(オブジェクト指向言語の継承に相当)したもので, 68 * 最初のフィールドが共通になっている. 86 69 */ 87 70 typedef struct fixed_memorypool_initialization_block { 88 ATR mpfatr; /* åºå®é·ã¡ã¢ãªãã¼ã«å±æ§ */ 89 uint_t blkcnt; /* ã¡ã¢ãªãããã¯æ° */ 90 uint_t blksz; /* ã¡ã¢ãªãããã¯ã®ãµã¤ãºï¼ä¸¸ããå¤ï¼ */ 91 void *mpf; /* åºå®é·ã¡ã¢ãªãã¼ã«é åã®å 92 é çªå° */ 93 MPFMB *p_mpfmb; /* åºå®é·ã¡ã¢ãªãã¼ã«ç®¡çé åã®å 94 é çªå° */ 71 ATR mpfatr; /* 固定長メモリプール属性 */ 72 uint_t blkcnt; /* メモリブロック数 */ 73 uint_t blksz; /* メモリブロックのサイズ(丸めた値) */ 74 void *mpf; /* 固定長メモリプール領域の先頭番地 */ 75 MPFMB *p_mpfmb; /* 固定長メモリプール管理領域の先頭番地 */ 95 76 } MPFINIB; 96 77 97 78 /* 98 * åºå®é·ã¡ã¢ãªãã¼ã«ç®¡çãããã¯79 * 固定長メモリプール管理ブロック 99 80 * 100 * ãã®æ§é ä½ã¯ï¼åæã»éä¿¡ãªãã¸ã§ã¯ãã®ç®¡çãããã¯ã®å 101 ±éé¨åï¼WOBJCBï¼ 102 * ãæ¡å¼µï¼ãªãã¸ã§ã¯ãæåè¨èªã®ç¶æ¿ã«ç¸å½ï¼ãããã®ã§ï¼æåã®2ã¤ã® 103 * ãã£ã¼ã«ããå 104 ±éã«ãªã£ã¦ããï¼ 81 * この構造体は,同期・通信オブジェクトの管理ブロックの共通部分(WOBJCB) 82 * を拡張(オブジェクト指向言語の継承に相当)したもので,最初の2つの 83 * フィールドが共通になっている. 105 84 */ 106 85 typedef struct fixed_memorypool_control_block { 107 QUEUE wait_queue; /* åºå®é·ã¡ã¢ãªãã¼ã«å¾ 108 ã¡ãã¥ã¼ */ 109 const MPFINIB *p_mpfinib; /* åæåãããã¯ã¸ã®ãã¤ã³ã¿ */ 110 uint_t fblkcnt; /* æªå²å½ã¦ãããã¯æ° */ 111 uint_t unused; /* æªä½¿ç¨ãããã¯ã®å 112 é */ 113 uint_t freelist; /* æªå²å½ã¦ãããã¯ã®ãªã¹ã */ 86 QUEUE wait_queue; /* 固定長メモリプール待ちキュー */ 87 const MPFINIB *p_mpfinib; /* 初期化ブロックへのポインタ */ 88 uint_t fblkcnt; /* 未割当てブロック数 */ 89 uint_t unused; /* 未使用ブロックの先頭 */ 90 uint_t freelist; /* 未割当てブロックのリスト */ 114 91 } MPFCB; 115 92 116 93 /* 117 * åºå®é·ã¡ã¢ãªãã¼ã«å¾ 118 ã¡æ 119 å ±ãããã¯ã®å®ç¾© 94 * 固定長メモリプール待ち情報ブロックの定義 120 95 * 121 * ãã®æ§é ä½ã¯ï¼åæã»éä¿¡ãªãã¸ã§ã¯ãã®å¾ 122 ã¡æ 123 å ±ãããã¯ã®å 124 ±éé¨å 125 * ï¼WINFO_WOBJï¼ãæ¡å¼µï¼ãªãã¸ã§ã¯ãæåè¨èªã®ç¶æ¿ã«ç¸å½ï¼ãããã®ã§ï¼ 126 * æåã®2ã¤ã®ãã£ã¼ã«ããå 127 ±éã«ãªã£ã¦ããï¼ 96 * この構造体は,同期・通信オブジェクトの待ち情報ブロックの共通部分 97 * (WINFO_WOBJ)を拡張(オブジェクト指向言語の継承に相当)したもので, 98 * 最初の2つのフィールドが共通になっている. 128 99 */ 129 100 typedef struct fixed_memorypool_waiting_information { 130 WINFO winfo; /* æ¨æºã®å¾ 131 ã¡æ 132 å ±ããã㯠*/ 133 MPFCB *p_mpfcb; /* å¾ 134 ã£ã¦ããåºå®é·ã¡ã¢ãªãã¼ã«ã®ç®¡çãããã¯*/ 135 void *blk; /* ç²å¾ããã¡ã¢ãªããã㯠*/ 101 WINFO winfo; /* 標準の待ち情報ブロック */ 102 MPFCB *p_mpfcb; /* 待っている固定長メモリプールの管理ブロック*/ 103 void *blk; /* 獲得したメモリブロック */ 136 104 } WINFO_MPF; 137 105 138 106 /* 139 * 使ç¨ãã¦ããªãåºå®é·ã¡ã¢ãªãã¼ã«ç®¡çãããã¯ã®ãªã¹ã107 * 使用していない固定長メモリプール管理ブロックのリスト 140 108 */ 141 109 extern QUEUE free_mpfcb; 142 110 143 111 /* 144 * åºå®é·ã¡ã¢ãªãã¼ã«IDã®æ大å¤ï¼kernel_cfg.cï¼112 * 固定長メモリプールIDの最大値(kernel_cfg.c) 145 113 */ 146 114 extern const ID tmax_mpfid; … … 148 116 149 117 /* 150 * åºå®é·ã¡ã¢ãªãã¼ã«åæåãããã¯ã®ã¨ãªã¢ï¼kernel_cfg.cï¼118 * 固定長メモリプール初期化ブロックのエリア(kernel_cfg.c) 151 119 */ 152 120 extern const MPFINIB mpfinib_table[]; … … 154 122 155 123 /* 156 * åºå®é·ã¡ã¢ãªãã¼ã«ç®¡çãããã¯ã®ã¨ãªã¢ï¼kernel_cfg.cï¼124 * 固定長メモリプール管理ブロックのエリア(kernel_cfg.c) 157 125 */ 158 126 extern MPFCB mpfcb_table[]; 159 127 160 128 /* 161 * åºå®é·ã¡ã¢ãªãã¼ã«ç®¡çãããã¯ããåºå®é·ã¡ã¢ãªãã¼ã«IDãåãåºãã162 * ãã®ãã¯ã129 * 固定長メモリプール管理ブロックから固定長メモリプールIDを取り出すた 130 * めのマクロ 163 131 */ 164 132 #define MPFID(p_mpfcb) ((ID)(((p_mpfcb) - mpfcb_table) + TMIN_MPFID)) 165 133 166 134 /* 167 * åºå®é·ã¡ã¢ãªãã¼ã«æ©è½ã®åæå135 * 固定長メモリプール機能の初期化 168 136 */ 169 137 extern void initialize_mempfix(void); 170 138 171 139 /* 172 * åºå®é·ã¡ã¢ãªãã¼ã«ãããããã¯ãç²å¾140 * 固定長メモリプールからブロックを獲得 173 141 */ 174 142 extern void get_mpf_block(MPFCB *p_mpfcb, void **p_blk); -
Property svn:mime-type
changed from
-
rubycfg_asp/trunk/asp_dcre/kernel/mempfix.trb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby; 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: mempfix.trb 672 2016-03-05 15:33:08Z ertl-hiro $ … … 57 42 58 43 # 59 # åºå®é·ã¡ã¢ãªãã¼ã«æ©è½ã®çæã¹ã¯ãªãã44 # 固定長メモリプール機能の生成スクリプト 60 45 # 61 46 … … 66 51 67 52 def prepare(key, params) 68 # ãã©ã¡ã¼ã¿ãçç¥ãããæã®ããã©ã«ãå¤ã®è¨å®53 # パラメータが省略された時のデフォルト値の設定 69 54 params[:mpf] ||= "NULL" 70 55 params[:mpfmb] ||= "NULL" 71 56 72 # mpfatr ãç¡å¹ã®å ´åï¼E_RSATRï¼ï¼»NGKI2225ï¼½73 # ï¼TA_TPRI以å¤ã®ããããã»ããããã¦ããå ´åï¼57 # mpfatrが無効の場合(E_RSATR)[NGKI2225] 58 #(TA_TPRI以外のビットがセットされている場合) 74 59 if (params[:mpfatr] & ~($TA_TPRI)) != 0 75 60 error_illegal_id("E_RSATR", params, :mpfatr, :mpfid) 76 61 end 77 62 78 # blkcnt ã0ã®å ´åï¼E_PARï¼ï¼»NGKI2229ï¼½63 # blkcntが0の場合(E_PAR)[NGKI2229] 79 64 if params[:blkcnt] == 0 80 65 error_illegal_id("E_PAR", params, :blkcnt, :mpfid) 81 66 end 82 67 83 # blksz ã0ã®å ´åï¼E_PARï¼ï¼»NGKI2230ï¼½68 # blkszが0の場合(E_PAR)[NGKI2230] 84 69 if params[:blksz] == 0 85 70 error_illegal_id("E_PAR", params, :blksz, :mpfid) 86 71 end 87 72 88 # åºå®é·ã¡ã¢ãªãã¼ã«é å73 # 固定長メモリプール領域 89 74 if params[:mpf] == "NULL" 90 75 mpfName = "_kernel_mpf_#{params[:mpfid]}" … … 96 81 end 97 82 98 # mpfmb ãNULLã§ãªãå ´åï¼E_NOSPTï¼ï¼»ASPS0166ï¼½83 # mpfmbがNULLでない場合(E_NOSPT)[ASPS0166] 99 84 if params[:mpfmb] != "NULL" 100 85 error_illegal_id("E_NOSPT", params, :mpfmb, :mpfid) 101 86 end 102 87 103 # åºå®é·ã¡ã¢ãªãã¼ã«ç®¡çé å88 # 固定長メモリプール管理領域 104 89 mpfmbName = "_kernel_mpfmb_#{params[:mpfid]}" 105 90 $kernelCfgC.add("static MPFMB #{mpfmbName}[#{params[:blkcnt]}];") … … 115 100 116 101 # 117 # åºå®é·ã¡ã¢ãªãã¼ã«ã«é¢ããæ 118 å ±ã®çæ 102 # 固定長メモリプールに関する情報の生成 119 103 # 120 104 $kernelCfgC.comment_header("Fixed-sized Memorypool Functions") -
Property svn:mime-type
changed from
-
rubycfg_asp/trunk/asp_dcre/kernel/pridataq.c
-
Property svn:mime-type
changed from
text/x-csrc
totext/x-csrc; 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 * åªå 60 度ãã¼ã¿ãã¥ã¼æ©è½ 44 * 優先度データキュー機能 61 45 */ 62 46 … … 68 52 69 53 /* 70 * ãã¬ã¼ã¹ãã°ãã¯ãã®ããã©ã«ãå®ç¾©54 * トレースログマクロのデフォルト定義 71 55 */ 72 56 #ifndef LOG_ACRE_PDQ_ENTER … … 159 143 160 144 /* 161 * åªå 162 度ãã¼ã¿ãã¥ã¼ã®æ° 145 * 優先度データキューの数 163 146 */ 164 147 #define tnum_pdq ((uint_t)(tmax_pdqid - TMIN_PDQID + 1)) … … 166 149 167 150 /* 168 * åªå 169 度ãã¼ã¿ãã¥ã¼IDããåªå 170 度ãã¼ã¿ãã¥ã¼ç®¡çãããã¯ãåãåºãã 171 * ãã®ãã¯ã 151 * 優先度データキューIDから優先度データキュー管理ブロックを取り出すた 152 * めのマクロ 172 153 */ 173 154 #define INDEX_PDQ(pdqid) ((uint_t)((pdqid) - TMIN_PDQID)) … … 177 158 178 159 /* 179 * 使ç¨ãã¦ããªãåªå 180 度ãã¼ã¿ãã¥ã¼ç®¡çãããã¯ã®ãªã¹ã 160 * 使用していない優先度データキュー管理ブロックのリスト 181 161 */ 182 162 QUEUE free_pdqcb; 183 163 184 164 /* 185 * åªå 186 度ãã¼ã¿ãã¥ã¼æ©è½ã®åæå 165 * 優先度データキュー機能の初期化 187 166 */ 188 167 void … … 216 195 217 196 /* 218 * åªå 219 度ãã¼ã¿ãã¥ã¼ç®¡çé åã¸ã®ãã¼ã¿ã®æ ¼ç´ 197 * 優先度データキュー管理領域へのデータの格納 220 198 */ 221 199 #ifdef TOPPERS_pdqenq … … 254 232 255 233 /* 256 * åªå 257 度ãã¼ã¿ãã¥ã¼ç®¡çé åããã®ãã¼ã¿ã®ååºã 234 * 優先度データキュー管理領域からのデータの取出し 258 235 */ 259 236 #ifdef TOPPERS_pdqdeq … … 278 255 279 256 /* 280 * åªå 281 度ãã¼ã¿ãã¥ã¼ã¸ã®ãã¼ã¿éä¿¡ 257 * 優先度データキューへのデータ送信 282 258 */ 283 259 #ifdef TOPPERS_pdqsnd … … 308 284 309 285 /* 310 * åªå 311 度ãã¼ã¿ãã¥ã¼ããã®ãã¼ã¿åä¿¡ 286 * 優先度データキューからのデータ受信 312 287 */ 313 288 #ifdef TOPPERS_pdqrcv … … 350 325 351 326 /* 352 * åªå 353 度ãã¼ã¿ãã¥ã¼ã®çæ 327 * 優先度データキューの生成 354 328 */ 355 329 #ifdef TOPPERS_acre_pdq … … 413 387 414 388 /* 415 * åªå 416 度ãã¼ã¿ãã¥ã¼ã®åé¤ 389 * 優先度データキューの削除 417 390 */ 418 391 #ifdef TOPPERS_del_pdq … … 464 437 465 438 /* 466 * åªå 467 度ãã¼ã¿ãã¥ã¼ã¸ã®éä¿¡ 439 * 優先度データキューへの送信 468 440 */ 469 441 #ifdef TOPPERS_snd_pdq … … 514 486 515 487 /* 516 * åªå 517 度ãã¼ã¿ãã¥ã¼ã¸ã®éä¿¡ï¼ãã¼ãªã³ã°ï¼ 488 * 優先度データキューへの送信(ポーリング) 518 489 */ 519 490 #ifdef TOPPERS_psnd_pdq … … 558 529 559 530 /* 560 * åªå 561 度ãã¼ã¿ãã¥ã¼ã¸ã®éä¿¡ï¼ãã¼ãªã³ã°ï¼éã¿ã¹ã¯ã³ã³ããã¹ãç¨ï¼ 531 * 優先度データキューへの送信(ポーリング,非タスクコンテキスト用) 562 532 */ 563 533 #ifdef TOPPERS_ipsnd_pdq … … 602 572 603 573 /* 604 * åªå 605 度ãã¼ã¿ãã¥ã¼ã¸ã®éä¿¡ï¼ã¿ã¤ã ã¢ã¦ãããï¼ 574 * 優先度データキューへの送信(タイムアウトあり) 606 575 */ 607 576 #ifdef TOPPERS_tsnd_pdq … … 658 627 659 628 /* 660 * åªå 661 度ãã¼ã¿ãã¥ã¼ããã®åä¿¡ 629 * 優先度データキューからの受信 662 630 */ 663 631 #ifdef TOPPERS_rcv_pdq … … 709 677 710 678 /* 711 * åªå 712 度ãã¼ã¿ãã¥ã¼ããã®åä¿¡ï¼ãã¼ãªã³ã°ï¼ 679 * 優先度データキューからの受信(ポーリング) 713 680 */ 714 681 #ifdef TOPPERS_prcv_pdq … … 749 716 750 717 /* 751 * åªå 752 度ãã¼ã¿ãã¥ã¼ããã®åä¿¡ï¼ã¿ã¤ã ã¢ã¦ãããï¼ 718 * 優先度データキューからの受信(タイムアウトあり) 753 719 */ 754 720 #ifdef TOPPERS_trcv_pdq … … 805 771 806 772 /* 807 * åªå 808 度ãã¼ã¿ãã¥ã¼ã®ååæå 773 * 優先度データキューの再初期化 809 774 */ 810 775 #ifdef TOPPERS_ini_pdq … … 850 815 851 816 /* 852 * åªå 853 度ãã¼ã¿ãã¥ã¼ã®ç¶æ 854 åç 855 § 817 * 優先度データキューの状態参照 856 818 */ 857 819 #ifdef TOPPERS_ref_pdq -
Property svn:mime-type
changed from
-
rubycfg_asp/trunk/asp_dcre/kernel/pridataq.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 * åªå 60 度ãã¼ã¿ãã¥ã¼æ©è½ 44 * 優先度データキュー機能 61 45 */ 62 46 … … 67 51 68 52 /* 69 * åªå 70 度ãã¼ã¿ç®¡çããã㯠53 * 優先度データ管理ブロック 71 54 */ 72 55 typedef struct pridata_management_block PDQMB; 73 56 74 57 struct pridata_management_block { 75 PDQMB *p_next; /* 次ã®ãã¼ã¿ */ 76 intptr_t data; /* ãã¼ã¿æ¬ä½ */ 77 PRI datapri; /* ãã¼ã¿åªå 78 度 */ 58 PDQMB *p_next; /* 次のデータ */ 59 intptr_t data; /* データ本体 */ 60 PRI datapri; /* データ優先度 */ 79 61 }; 80 62 81 63 /* 82 * åªå 83 度ãã¼ã¿ãã¥ã¼åæåããã㯠64 * 優先度データキュー初期化ブロック 84 65 * 85 * ãã®æ§é ä½ã¯ï¼åæã»éä¿¡ãªãã¸ã§ã¯ãã®åæåãããã¯ã®å 86 ±éé¨å 87 * ï¼WOBJINIBï¼ãæ¡å¼µï¼ãªãã¸ã§ã¯ãæåè¨èªã®ç¶æ¿ã«ç¸å½ï¼ãããã®ã§ï¼ 88 * æåã®ãã£ã¼ã«ããå 89 ±éã«ãªã£ã¦ããï¼ 66 * この構造体は,同期・通信オブジェクトの初期化ブロックの共通部分 67 * (WOBJINIB)を拡張(オブジェクト指向言語の継承に相当)したもので, 68 * 最初のフィールドが共通になっている. 90 69 */ 91 70 typedef struct pridataq_initialization_block { 92 ATR pdqatr; /* åªå 93 度ãã¼ã¿ãã¥ã¼å±æ§ */ 94 uint_t pdqcnt; /* åªå 95 度ãã¼ã¿ãã¥ã¼ã®å®¹é */ 96 PRI maxdpri; /* ãã¼ã¿åªå 97 度ã®æå¤§å¤ */ 98 PDQMB *p_pdqmb; /* åªå 99 度ãã¼ã¿ãã¥ã¼ç®¡çé åã®å 100 é çªå° */ 71 ATR pdqatr; /* 優先度データキュー属性 */ 72 uint_t pdqcnt; /* 優先度データキューの容量 */ 73 PRI maxdpri; /* データ優先度の最大値 */ 74 PDQMB *p_pdqmb; /* 優先度データキュー管理領域の先頭番地 */ 101 75 } PDQINIB; 102 76 103 77 /* 104 * åªå 105 度ãã¼ã¿ãã¥ã¼ç®¡çããã㯠78 * 優先度データキュー管理ブロック 106 79 * 107 * ãã®æ§é ä½ã¯ï¼åæã»éä¿¡ãªãã¸ã§ã¯ãã®ç®¡çãããã¯ã®å 108 ±éé¨åï¼WOBJCBï¼ 109 * ãæ¡å¼µï¼ãªãã¸ã§ã¯ãæåè¨èªã®ç¶æ¿ã«ç¸å½ï¼ãããã®ã§ï¼æåã®2ã¤ã® 110 * ãã£ã¼ã«ããå 111 ±éã«ãªã£ã¦ããï¼ 80 * この構造体は,同期・通信オブジェクトの管理ブロックの共通部分(WOBJCB) 81 * を拡張(オブジェクト指向言語の継承に相当)したもので,最初の2つの 82 * フィールドが共通になっている. 112 83 */ 113 84 typedef struct pridataq_control_block { 114 QUEUE swait_queue; /* åªå 115 度ãã¼ã¿ãã¥ã¼éä¿¡å¾ 116 ã¡ãã¥ã¼ */ 117 const PDQINIB *p_pdqinib; /* åæåãããã¯ã¸ã®ãã¤ã³ã¿ */ 118 QUEUE rwait_queue; /* åªå 119 度ãã¼ã¿ãã¥ã¼åä¿¡å¾ 120 ã¡ãã¥ã¼ */ 121 uint_t count; /* åªå 122 度ãã¼ã¿ãã¥ã¼ä¸ã®ãã¼ã¿ã®æ° */ 123 PDQMB *p_head; /* æåã®ãã¼ã¿ */ 124 uint_t unused; /* æªä½¿ç¨ãã¼ã¿ç®¡çãããã¯ã®å 125 é */ 126 PDQMB *p_freelist; /* æªå²å½ã¦ãã¼ã¿ç®¡çãããã¯ã®ãªã¹ã */ 85 QUEUE swait_queue; /* 優先度データキュー送信待ちキュー */ 86 const PDQINIB *p_pdqinib; /* 初期化ブロックへのポインタ */ 87 QUEUE rwait_queue; /* 優先度データキュー受信待ちキュー */ 88 uint_t count; /* 優先度データキュー中のデータの数 */ 89 PDQMB *p_head; /* 最初のデータ */ 90 uint_t unused; /* 未使用データ管理ブロックの先頭 */ 91 PDQMB *p_freelist; /* 未割当てデータ管理ブロックのリスト */ 127 92 } PDQCB; 128 93 129 94 /* 130 * åªå 131 度ãã¼ã¿ãã¥ã¼å¾ 132 ã¡æ 133 å ±ãããã¯ã®å®ç¾© 95 * 優先度データキュー待ち情報ブロックの定義 134 96 * 135 * ãã®æ§é ä½ã¯ï¼åæã»éä¿¡ãªãã¸ã§ã¯ãã®å¾ 136 ã¡æ 137 å ±ãããã¯ã®å 138 ±éé¨å 139 * ï¼WINFO_WOBJï¼ãæ¡å¼µï¼ãªãã¸ã§ã¯ãæåè¨èªã®ç¶æ¿ã«ç¸å½ï¼ãããã®ã§ï¼ 140 * æåã®2ã¤ã®ãã£ã¼ã«ããå 141 ±éã«ãªã£ã¦ããï¼ 142 * åªå 143 度ãã¼ã¿ãã¥ã¼ã¸ã®éä¿¡å¾ 144 ã¡ã¨åªå 145 度ãã¼ã¿ãã¥ã¼ããã®åä¿¡å¾ 146 ã¡ã§ï¼ 147 * åãå¾ 148 ã¡æ 149 å ±ãããã¯ã使ãï¼ 97 * この構造体は,同期・通信オブジェクトの待ち情報ブロックの共通部分 98 * (WINFO_WOBJ)を拡張(オブジェクト指向言語の継承に相当)したもので, 99 * 最初の2つのフィールドが共通になっている. 100 * 優先度データキューへの送信待ちと優先度データキューからの受信待ちで, 101 * 同じ待ち情報ブロックを使う. 150 102 */ 151 103 typedef struct pridataq_waiting_information { 152 WINFO winfo; /* æ¨æºã®å¾ 153 ã¡æ 154 å ±ããã㯠*/ 155 PDQCB *p_pdqcb; /* å¾ 156 ã£ã¦ããåªå 157 度ãã¼ã¿ãã¥ã¼ã®ç®¡çãããã¯*/ 158 intptr_t data; /* éåä¿¡ãã¼ã¿ */ 159 PRI datapri; /* ãã¼ã¿åªå 160 度 */ 104 WINFO winfo; /* 標準の待ち情報ブロック */ 105 PDQCB *p_pdqcb; /* 待っている優先度データキューの管理ブロック*/ 106 intptr_t data; /* 送受信データ */ 107 PRI datapri; /* データ優先度 */ 161 108 } WINFO_PDQ; 162 109 163 110 /* 164 * 使ç¨ãã¦ããªãåªå 165 度ãã¼ã¿ãã¥ã¼ç®¡çãããã¯ã®ãªã¹ã 111 * 使用していない優先度データキュー管理ブロックのリスト 166 112 */ 167 113 extern QUEUE free_pdqcb; 168 114 169 115 /* 170 * åªå 171 度ãã¼ã¿ãã¥ã¼IDã®æ大å¤ï¼kernel_cfg.cï¼ 116 * 優先度データキューIDの最大値(kernel_cfg.c) 172 117 */ 173 118 extern const ID tmax_pdqid; … … 175 120 176 121 /* 177 * åªå 178 度ãã¼ã¿ãã¥ã¼åæåãããã¯ã®ã¨ãªã¢ï¼kernel_cfg.cï¼ 122 * 優先度データキュー初期化ブロックのエリア(kernel_cfg.c) 179 123 */ 180 124 extern const PDQINIB pdqinib_table[]; … … 182 126 183 127 /* 184 * åªå 185 度ãã¼ã¿ãã¥ã¼ç®¡çãããã¯ã®ã¨ãªã¢ï¼kernel_cfg.cï¼ 128 * 優先度データキュー管理ブロックのエリア(kernel_cfg.c) 186 129 */ 187 130 extern PDQCB pdqcb_table[]; 188 131 189 132 /* 190 * åªå 191 度ãã¼ã¿ãã¥ã¼ç®¡çãããã¯ããåªå 192 度ãã¼ã¿ãã¥ã¼IDãåãåºãã 193 * ãã®ãã¯ã 133 * 優先度データキュー管理ブロックから優先度データキューIDを取り出すた 134 * めのマクロ 194 135 */ 195 136 #define PDQID(p_pdqcb) ((ID)(((p_pdqcb) - pdqcb_table) + TMIN_PDQID)) 196 137 197 138 /* 198 * åªå 199 度ãã¼ã¿ãã¥ã¼æ©è½ã®åæå 139 * 優先度データキュー機能の初期化 200 140 */ 201 141 extern void initialize_pridataq(void); 202 142 203 143 /* 204 * åªå 205 度ãã¼ã¿ãã¥ã¼ç®¡çé åã¸ã®ãã¼ã¿ã®æ ¼ç´ 144 * 優先度データキュー管理領域へのデータの格納 206 145 */ 207 146 extern void enqueue_pridata(PDQCB *p_pdqcb, intptr_t data, PRI datapri); 208 147 209 148 /* 210 * åªå 211 度ãã¼ã¿ãã¥ã¼ç®¡çé åããã®ãã¼ã¿ã®ååºã 149 * 優先度データキュー管理領域からのデータの取出し 212 150 */ 213 151 extern void dequeue_pridata(PDQCB *p_pdqcb, intptr_t *p_data, PRI *p_datapri); 214 152 215 153 /* 216 * åªå 217 度ãã¼ã¿ãã¥ã¼ã¸ã®ãã¼ã¿éä¿¡ 154 * 優先度データキューへのデータ送信 218 155 */ 219 156 extern bool_t send_pridata(PDQCB *p_pdqcb, intptr_t data, … … 221 158 222 159 /* 223 * åªå 224 度ãã¼ã¿ãã¥ã¼ããã®ãã¼ã¿åä¿¡ 160 * 優先度データキューからのデータ受信 225 161 */ 226 162 extern bool_t receive_pridata(PDQCB *p_pdqcb, intptr_t *p_data, -
Property svn:mime-type
changed from
-
rubycfg_asp/trunk/asp_dcre/kernel/pridataq.trb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby; 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: pridataq.trb 668 2016-03-03 13:57:53Z ertl-hiro $ … … 57 42 58 43 # 59 # åªå 60 度ãã¼ã¿ãã¥ã¼æ©è½ã®çæã¹ã¯ãªãã 44 # 優先度データキュー機能の生成スクリプト 61 45 # 62 46 … … 67 51 68 52 def prepare(key, params) 69 # ãã©ã¡ã¼ã¿ãçç¥ãããæã®ããã©ã«ãå¤ã®è¨å®53 # パラメータが省略された時のデフォルト値の設定 70 54 params[:pdqmb] ||= "NULL" 71 55 72 # pdqatr ãç¡å¹ã®å ´åï¼E_RSATRï¼ï¼»NGKI1804ï¼½73 # ï¼TA_TPRI以å¤ã®ããããã»ããããã¦ããå ´åï¼56 # pdqatrが無効の場合(E_RSATR)[NGKI1804] 57 #(TA_TPRI以外のビットがセットされている場合) 74 58 if (params[:pdqatr] & ~($TA_TPRI)) != 0 75 59 error_illegal_id("E_RSATR", params, :pdqatr, :pdqid) 76 60 end 77 61 78 # (TMIN_DPRI <= maxdpri && maxdpri <= TMAX_DPRI) ã§ãªãå ´åï¼E_PARï¼79 # ï¼»NGKI1819ï¼½62 # (TMIN_DPRI <= maxdpri && maxdpri <= TMAX_DPRI)でない場合(E_PAR) 63 # [NGKI1819] 80 64 if !($TMIN_DPRI <= params[:maxdpri] && params[:maxdpri] <= $TMAX_DPRI) 81 65 error_illegal_id("E_PAR", params, :maxdpri, :pdqid) 82 66 end 83 67 84 # pdqmb ãNULLã§ãªãå ´åï¼E_NOSPTï¼ï¼»ASPS0142ï¼½68 # pdqmbがNULLでない場合(E_NOSPT)[ASPS0142] 85 69 if params[:pdqmb] != "NULL" 86 70 error_illegal_id("E_NOSPT", params, :pdqmb, :pdqid) 87 71 end 88 72 89 # åªå 90 度ãã¼ã¿ãã¥ã¼ç®¡çé å 73 # 優先度データキュー管理領域 91 74 if params[:pdqcnt] > 0 92 75 pdqmbName = "_kernel_pdqmb_#{params[:pdqid]}" … … 105 88 106 89 # 107 # åªå 108 度ãã¼ã¿ãã¥ã¼ã«é¢ããæ 109 å ±ã®çæ 90 # 優先度データキューに関する情報の生成 110 91 # 111 92 $kernelCfgC.comment_header("Priority Dataqueue Functions") -
Property svn:mime-type
changed from
-
rubycfg_asp/trunk/asp_dcre/kernel/semaphore.c
-
Property svn:mime-type
changed from
text/x-csrc
totext/x-csrc; 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 * ã»ããã©æ©è½44 * セマフォ機能 60 45 */ 61 46 … … 67 52 68 53 /* 69 * ãã¬ã¼ã¹ãã°ãã¯ãã®ããã©ã«ãå®ç¾©54 * トレースログマクロのデフォルト定義 70 55 */ 71 56 #ifndef LOG_ACRE_SEM_ENTER … … 142 127 143 128 /* 144 * ã»ããã©ã®æ°129 * セマフォの数 145 130 */ 146 131 #define tnum_sem ((uint_t)(tmax_semid - TMIN_SEMID + 1)) … … 148 133 149 134 /* 150 * ã»ããã©IDããã»ããã©ç®¡çãããã¯ãåãåºãããã®ãã¯ã135 * セマフォIDからセマフォ管理ブロックを取り出すためのマクロ 151 136 */ 152 137 #define INDEX_SEM(semid) ((uint_t)((semid) - TMIN_SEMID)) … … 156 141 157 142 /* 158 * 使ç¨ãã¦ããªãã»ããã©ç®¡çãããã¯ã®ãªã¹ã143 * 使用していないセマフォ管理ブロックのリスト 159 144 */ 160 145 QUEUE free_semcb; 161 146 162 147 /* 163 * ã»ããã©æ©è½ã®åæå148 * セマフォ機能の初期化 164 149 */ 165 150 void … … 189 174 190 175 /* 191 * ã»ããã©ã®çæ176 * セマフォの生成 192 177 */ 193 178 #ifdef TOPPERS_acre_sem … … 231 216 232 217 /* 233 * ã»ããã©ã®åé¤218 * セマフォの削除 234 219 */ 235 220 #ifdef TOPPERS_del_sem … … 275 260 276 261 /* 277 * ã»ããã©è³æºã®è¿å´262 * セマフォ資源の返却 278 263 */ 279 264 #ifdef TOPPERS_sig_sem … … 319 304 320 305 /* 321 * ã»ããã©è³æºã®è¿å´ï¼éã¿ã¹ã¯ã³ã³ããã¹ãç¨ï¼306 * セマフォ資源の返却(非タスクコンテキスト用) 322 307 */ 323 308 #ifdef TOPPERS_isig_sem … … 363 348 364 349 /* 365 * ã»ããã©è³æºã®ç²å¾350 * セマフォ資源の獲得 366 351 */ 367 352 #ifdef TOPPERS_wai_sem … … 403 388 404 389 /* 405 * ã»ããã©è³æºã®ç²å¾ï¼ãã¼ãªã³ã°ï¼390 * セマフォ資源の獲得(ポーリング) 406 391 */ 407 392 #ifdef TOPPERS_pol_sem … … 439 424 440 425 /* 441 * ã»ããã©è³æºã®ç²å¾ï¼ã¿ã¤ã ã¢ã¦ãããï¼426 * セマフォ資源の獲得(タイムアウトあり) 442 427 */ 443 428 #ifdef TOPPERS_twai_sem … … 485 470 486 471 /* 487 * ã»ããã©ã®ååæå472 * セマフォの再初期化 488 473 */ 489 474 #ifdef TOPPERS_ini_sem … … 523 508 524 509 /* 525 * ã»ããã©ã®ç¶æ 526 åç 527 § 510 * セマフォの状態参照 528 511 */ 529 512 #ifdef TOPPERS_ref_sem -
Property svn:mime-type
changed from
-
rubycfg_asp/trunk/asp_dcre/kernel/semaphore.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 * ã»ããã©æ©è½44 * セマフォ機能 60 45 */ 61 46 … … 66 51 67 52 /* 68 * ã»ããã©åæåãããã¯53 * セマフォ初期化ブロック 69 54 * 70 * ãã®æ§é ä½ã¯ï¼åæã»éä¿¡ãªãã¸ã§ã¯ãã®åæåãããã¯ã®å 71 ±éé¨å 72 * ï¼WOBJINIBï¼ãæ¡å¼µï¼ãªãã¸ã§ã¯ãæåè¨èªã®ç¶æ¿ã«ç¸å½ï¼ãããã®ã§ï¼ 73 * æåã®ãã£ã¼ã«ããå 74 ±éã«ãªã£ã¦ããï¼ 55 * この構造体は,同期・通信オブジェクトの初期化ブロックの共通部分 56 * (WOBJINIB)を拡張(オブジェクト指向言語の継承に相当)したもので, 57 * 最初のフィールドが共通になっている. 75 58 */ 76 59 typedef struct semaphore_initialization_block { 77 ATR sematr; /* ã»ããã©å±æ§*/78 uint_t isemcnt; /* ã»ããã©ã®è³æºæ°ã®åæå¤*/79 uint_t maxsem; /* ã»ããã©ã®æ大è³æºæ°*/60 ATR sematr; /* セマフォ属性 */ 61 uint_t isemcnt; /* セマフォの資源数の初期値 */ 62 uint_t maxsem; /* セマフォの最大資源数 */ 80 63 } SEMINIB; 81 64 82 65 /* 83 * ã»ããã©ç®¡çãããã¯66 * セマフォ管理ブロック 84 67 * 85 * ãã®æ§é ä½ã¯ï¼åæã»éä¿¡ãªãã¸ã§ã¯ãã®ç®¡çãããã¯ã®å 86 ±éé¨åï¼WOBJCBï¼ 87 * ãæ¡å¼µï¼ãªãã¸ã§ã¯ãæåè¨èªã®ç¶æ¿ã«ç¸å½ï¼ãããã®ã§ï¼æåã®2ã¤ã® 88 * ãã£ã¼ã«ããå 89 ±éã«ãªã£ã¦ããï¼ 68 * この構造体は,同期・通信オブジェクトの管理ブロックの共通部分(WOBJCB) 69 * を拡張(オブジェクト指向言語の継承に相当)したもので,最初の2つの 70 * フィールドが共通になっている. 90 71 */ 91 72 typedef struct semaphore_control_block { 92 QUEUE wait_queue; /* ã»ããã©å¾ 93 ã¡ãã¥ã¼ */ 94 const SEMINIB *p_seminib; /* åæåãããã¯ã¸ã®ãã¤ã³ã¿ */ 95 uint_t semcnt; /* ã»ããã©ç¾å¨ã«ã¦ã³ãå¤ */ 73 QUEUE wait_queue; /* セマフォ待ちキュー */ 74 const SEMINIB *p_seminib; /* 初期化ブロックへのポインタ */ 75 uint_t semcnt; /* セマフォ現在カウント値 */ 96 76 } SEMCB; 97 77 98 78 /* 99 * ã»ããã©å¾ 100 ã¡æ 101 å ±ãããã¯ã®å®ç¾© 79 * セマフォ待ち情報ブロックの定義 102 80 * 103 * ãã®æ§é ä½ã¯ï¼åæã»éä¿¡ãªãã¸ã§ã¯ãã®å¾ 104 ã¡æ 105 å ±ãããã¯ã®å 106 ±éé¨å 107 * ï¼WINFO_WOBJï¼ãæ¡å¼µï¼ãªãã¸ã§ã¯ãæåè¨èªã®ç¶æ¿ã«ç¸å½ï¼ãããã®ã§ï¼ 108 * ãã¹ã¦ã®ãã£ã¼ã«ããå 109 ±éã«ãªã£ã¦ããï¼ 81 * この構造体は,同期・通信オブジェクトの待ち情報ブロックの共通部分 82 * (WINFO_WOBJ)を拡張(オブジェクト指向言語の継承に相当)したもので, 83 * すべてのフィールドが共通になっている. 110 84 */ 111 85 typedef struct semaphore_waiting_information { 112 WINFO winfo; /* æ¨æºã®å¾ 113 ã¡æ 114 å ±ããã㯠*/ 115 SEMCB *p_semcb; /* å¾ 116 ã£ã¦ããã»ããã©ã®ç®¡çããã㯠*/ 86 WINFO winfo; /* 標準の待ち情報ブロック */ 87 SEMCB *p_semcb; /* 待っているセマフォの管理ブロック */ 117 88 } WINFO_SEM; 118 89 119 90 /* 120 * 使ç¨ãã¦ããªãã»ããã©ç®¡çãããã¯ã®ãªã¹ã91 * 使用していないセマフォ管理ブロックのリスト 121 92 */ 122 93 extern QUEUE free_semcb; 123 94 124 95 /* 125 * ã»ããã©IDã®æ大å¤ï¼kernel_cfg.cï¼96 * セマフォIDの最大値(kernel_cfg.c) 126 97 */ 127 98 extern const ID tmax_semid; … … 129 100 130 101 /* 131 * ã»ããã©åæåãããã¯ã®ã¨ãªã¢ï¼kernel_cfg.cï¼102 * セマフォ初期化ブロックのエリア(kernel_cfg.c) 132 103 */ 133 104 extern const SEMINIB seminib_table[]; … … 135 106 136 107 /* 137 * ã»ããã©ç®¡çãããã¯ã®ã¨ãªã¢ï¼kernel_cfg.cï¼108 * セマフォ管理ブロックのエリア(kernel_cfg.c) 138 109 */ 139 110 extern SEMCB semcb_table[]; 140 111 141 112 /* 142 * ã»ããã©ç®¡çãããã¯ããã»ããã©IDãåãåºãããã®ãã¯ã113 * セマフォ管理ブロックからセマフォIDを取り出すためのマクロ 143 114 */ 144 115 #define SEMID(p_semcb) ((ID)(((p_semcb) - semcb_table) + TMIN_SEMID)) 145 116 146 117 /* 147 * ã»ããã©æ©è½ã®åæå118 * セマフォ機能の初期化 148 119 */ 149 120 extern void initialize_semaphore(void); -
Property svn:mime-type
changed from
-
rubycfg_asp/trunk/asp_dcre/kernel/semaphore.trb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby; 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: semaphore.trb 588 2016-02-05 12:54:58Z ertl-hiro $ … … 57 42 58 43 # 59 # ã»ããã©æ©è½ã®çæã¹ã¯ãªãã44 # セマフォ機能の生成スクリプト 60 45 # 61 46 … … 66 51 67 52 def prepare(key, params) 68 # sematr ãç¡å¹ã®å ´åï¼E_RSATRï¼ï¼»NGKI1456ï¼½69 # ï¼TA_TPRI以å¤ã®ããããã»ããããã¦ããå ´åï¼53 # sematrが無効の場合(E_RSATR)[NGKI1456] 54 #(TA_TPRI以外のビットがセットされている場合) 70 55 if (params[:sematr] & ~($TA_TPRI)) != 0 71 56 error_illegal_id("E_RSATR", params, :sematr, :semid) 72 57 end 73 58 74 # (1 <= maxsem && maxsem <= TMAX_MAXSEM) ã§ãªãå ´åï¼E_PARï¼ï¼»NGKI1468ï¼½59 # (1 <= maxsem && maxsem <= TMAX_MAXSEM)でない場合(E_PAR)[NGKI1468] 75 60 if !(1 <= params[:maxsem] && params[:maxsem] <= $TMAX_MAXSEM) 76 61 error_illegal_id("E_PAR", params, :maxsem, :semid) 77 62 end 78 63 79 # (0 <= isemcnt && isemcnt <= maxsem) ã§ãªãå ´åï¼E_PARï¼ï¼»NGKI1466ï¼½64 # (0 <= isemcnt && isemcnt <= maxsem)でない場合(E_PAR)[NGKI1466] 80 65 if !(0 <= params[:isemcnt] && params[:isemcnt] <= params[:maxsem]) 81 66 error_wrong_id("E_PAR", params, :isemcnt, :semid, "too large") … … 89 74 90 75 # 91 # ã»ããã©ã«é¢ããæ 92 å ±ã®çæ 76 # セマフォに関する情報の生成 93 77 # 94 78 $kernelCfgC.comment_header("Semaphore Functions") -
Property svn:mime-type
changed from
-
rubycfg_asp/trunk/asp_dcre/kernel/startup.c
-
Property svn:mime-type
changed from
text/x-csrc
totext/x-csrc; 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 責ãããã¨ï¼ 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 * ã«ã¼ãã«ã®åæåã¨çµäºå¦ç44 * カーネルの初期化と終了処理 60 45 */ 61 46 … … 65 50 66 51 /* 67 * ãã¬ã¼ã¹ãã°ãã¯ãã®ããã©ã«ãå®ç¾©52 * トレースログマクロのデフォルト定義 68 53 */ 69 54 #ifndef LOG_KER_ENTER … … 86 71 87 72 /* 88 * ã«ã¼ãã«åä½ç¶æ 89 ãã©ã° 73 * カーネル動作状態フラグ 90 74 * 91 * ã¹ã¿ã¼ãã¢ããã«ã¼ãã³ã§ï¼falseï¼ï¼0ï¼ã«åæåããããã¨ãæå¾ 92 ã㦠93 * ããï¼ 75 * スタートアップルーチンで,false(=0)に初期化されることを期待して 76 * いる. 94 77 */ 95 78 bool_t kerflg = false; 96 79 97 80 /* 98 * ã«ã¼ãã«ã®èµ·å81 * カーネルの起動 99 82 */ 100 83 void … … 102 85 { 103 86 /* 104 * ã¿ã¼ã²ããä¾åã®åæå87 * ターゲット依存の初期化 105 88 */ 106 89 target_initialize(); 107 90 108 91 /* 109 * åã¢ã¸ã¥ã¼ã«ã®åæå92 * 各モジュールの初期化 110 93 * 111 * ã¿ã¤ã ã¤ãã³ã管çã¢ã¸ã¥ã¼ã«ã¯ä»ã®ã¢ã¸ã¥ã¼ã«ããå 112 ã«åæå 113 * ããå¿ 114 è¦ãããï¼ 94 * タイムイベント管理モジュールは他のモジュールより先に初期化 95 * する必要がある. 115 96 */ 116 97 initialize_kmm(); … … 119 100 120 101 /* 121 * åæåã«ã¼ãã³ã®å®è¡102 * 初期化ルーチンの実行 122 103 */ 123 104 call_inirtn(); 124 105 125 106 /* 126 * ã«ã¼ãã«åä½ã®éå§107 * カーネル動作の開始 127 108 */ 128 109 kerflg = true; … … 135 116 136 117 /* 137 * ã«ã¼ãã«ã®çµäº118 * カーネルの終了 138 119 */ 139 120 #ifdef TOPPERS_ext_ker … … 147 128 148 129 /* 149 * å²è¾¼ã¿ããã¯ç¶æ 150 ã«ç§»è¡ 130 * 割込みロック状態に移行 151 131 */ 152 132 SIL_LOC_INT(); 153 133 154 134 /* 155 * ã«ã¼ãã«åä½ã®çµäº135 * カーネル動作の終了 156 136 */ 157 137 LOG_KER_LEAVE(); … … 159 139 160 140 /* 161 * ã«ã¼ãã«ã®çµäºå¦çã®å¼åºã141 * カーネルの終了処理の呼出し 162 142 * 163 * éã¿ã¹ã¯ã³ã³ããã¹ãã«åãæãã¦ï¼exit_kernelãå¼ã³åºãï¼143 * 非タスクコンテキストに切り換えて,exit_kernelを呼び出す. 164 144 */ 165 145 call_exit_kernel(); 166 146 167 147 /* 168 * ã³ã³ãã¤ã©ã®è¦å対çï¼ããã¸æ¥ããã¨ã¯ãªãã¯ãï¼148 * コンパイラの警告対策(ここへ来ることはないはず) 169 149 */ 170 150 SIL_UNL_INT(); … … 174 154 175 155 /* 176 * ã«ã¼ãã«ã®çµäºå¦ç156 * カーネルの終了処理 177 157 */ 178 158 void … … 180 160 { 181 161 /* 182 * çµäºå¦çã«ã¼ãã³ã®å®è¡162 * 終了処理ルーチンの実行 183 163 */ 184 164 call_terrtn(); 185 165 186 166 /* 187 * ã¿ã¼ã²ããä¾åã®çµäºå¦ç167 * ターゲット依存の終了処理 188 168 */ 189 169 target_exit(); … … 194 174 195 175 /* 196 * ã«ã¼ãã«ã®å²ãä»ããã¡ã¢ãªé åã®ç®¡ç176 * カーネルの割り付けるメモリ領域の管理 197 177 * 198 * ã¡ã¢ãªé åãå 199 é ããé ã«å²ãå½ã¦ï¼è§£æ¾ãããã¡ã¢ãªé åãåå©ç¨ã㪠200 * ãã¡ã¢ãªç®¡çã¢ã¸ã¥ã¼ã«ï¼ 178 * メモリ領域を先頭から順に割り当て,解放されたメモリ領域を再利用しな 179 * いメモリ管理モジュール. 201 180 */ 202 181 #ifdef TOPPERS_kermem -
Property svn:mime-type
changed from
-
rubycfg_asp/trunk/asp_dcre/kernel/sys_manage.c
-
Property svn:mime-type
changed from
text/x-csrc
totext/x-csrc; 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 * ã·ã¹ãã ç¶æ 60 管çæ©è½ 44 * システム状態管理機能 61 45 */ 62 46 … … 66 50 67 51 /* 68 * ãã¬ã¼ã¹ãã°ãã¯ãã®ããã©ã«ãå®ç¾©52 * トレースログマクロのデフォルト定義 69 53 */ 70 54 #ifndef LOG_ROT_RDQ_ENTER … … 189 173 190 174 /* 191 * ã¿ã¹ã¯ã®åªå 192 é ä½ã®å転 175 * タスクの優先順位の回転 193 176 */ 194 177 #ifdef TOPPERS_rot_rdq … … 220 203 221 204 /* 222 * ã¿ã¹ã¯ã®åªå 223 é ä½ã®å転ï¼éã¿ã¹ã¯ã³ã³ããã¹ãç¨ï¼ 205 * タスクの優先順位の回転(非タスクコンテキスト用) 224 206 */ 225 207 #ifdef TOPPERS_irot_rdq … … 249 231 250 232 /* 251 * å®è¡ç¶æ 252 ã®ã¿ã¹ã¯IDã®åç 253 § 233 * 実行状態のタスクIDの参照 254 234 */ 255 235 #ifdef TOPPERS_get_tid … … 276 256 277 257 /* 278 * å®è¡ç¶æ 279 ã®ã¿ã¹ã¯IDã®åç 280 §ï¼éã¿ã¹ã¯ã³ã³ããã¹ãç¨ï¼ 258 * 実行状態のタスクIDの参照(非タスクコンテキスト用) 281 259 */ 282 260 #ifdef TOPPERS_iget_tid … … 303 281 304 282 /* 305 * CPUããã¯ç¶æ 306 ã¸ã®ç§»è¡ 283 * CPUロック状態への移行 307 284 */ 308 285 #ifdef TOPPERS_loc_cpu … … 329 306 330 307 /* 331 * CPUããã¯ç¶æ 332 ã¸ã®ç§»è¡ï¼éã¿ã¹ã¯ã³ã³ããã¹ãç¨ï¼ 308 * CPUロック状態への移行(非タスクコンテキスト用) 333 309 */ 334 310 #ifdef TOPPERS_iloc_cpu … … 355 331 356 332 /* 357 * CPUããã¯ç¶æ 358 ã®è§£é¤ 333 * CPUロック状態の解除 359 334 * 360 * CPUããã¯ä¸ã¯ï¼ãã£ã¹ããããå¿ 361 è¦ã¨ãªããµã¼ãã¹ã³ã¼ã«ãå¼ã³åºãã 362 * ã¨ã¯ã§ããªãããï¼CPUããã¯ç¶æ 363 ã®è§£é¤æã«ãã£ã¹ãããã£ãèµ·åãã 364 * å¿ 365 è¦ã¯ãªãï¼ 335 * CPUロック中は,ディスパッチが必要となるサービスコールを呼び出すこ 336 * とはできないため,CPUロック状態の解除時にディスパッチャを起動する 337 * 必要はない. 366 338 */ 367 339 #ifdef TOPPERS_unl_cpu … … 388 360 389 361 /* 390 * CPUããã¯ç¶æ 391 ã®è§£é¤ï¼éã¿ã¹ã¯ã³ã³ããã¹ãç¨ï¼ 362 * CPUロック状態の解除(非タスクコンテキスト用) 392 363 * 393 * CPUããã¯ä¸ã¯ï¼ãã£ã¹ããããå¿ 394 è¦ã¨ãªããµã¼ãã¹ã³ã¼ã«ãå¼ã³åºãã 395 * ã¨ã¯ã§ããªãããï¼CPUããã¯ç¶æ 396 ã®è§£é¤æã«ãã£ã¹ãããã£ã®èµ·åãè¦ 397 * æ±ããå¿ 398 è¦ã¯ãªãï¼ 364 * CPUロック中は,ディスパッチが必要となるサービスコールを呼び出すこ 365 * とはできないため,CPUロック状態の解除時にディスパッチャの起動を要 366 * 求する必要はない. 399 367 */ 400 368 #ifdef TOPPERS_iunl_cpu … … 421 389 422 390 /* 423 * ãã£ã¹ãããã®ç¦æ¢391 * ディスパッチの禁止 424 392 */ 425 393 #ifdef TOPPERS_dis_dsp … … 447 415 448 416 /* 449 * ãã£ã¹ãããã®è¨±å¯417 * ディスパッチの許可 450 418 */ 451 419 #ifdef TOPPERS_ena_dsp … … 478 446 479 447 /* 480 * ã³ã³ããã¹ãã®åç 481 § 448 * コンテキストの参照 482 449 */ 483 450 #ifdef TOPPERS_sns_ctx … … 497 464 498 465 /* 499 * CPUããã¯ç¶æ 500 ã®åç 501 § 466 * CPUロック状態の参照 502 467 */ 503 468 #ifdef TOPPERS_sns_loc … … 517 482 518 483 /* 519 * ãã£ã¹ãããç¦æ¢ç¶æ 520 ã®åç 521 § 484 * ディスパッチ禁止状態の参照 522 485 */ 523 486 #ifdef TOPPERS_sns_dsp … … 537 500 538 501 /* 539 * ãã£ã¹ãããä¿çç¶æ 540 ã®åç 541 § 502 * ディスパッチ保留状態の参照 542 503 */ 543 504 #ifdef TOPPERS_sns_dpn … … 557 518 558 519 /* 559 * ã«ã¼ãã«éåä½ç¶æ 560 ã®åç 561 § 520 * カーネル非動作状態の参照 562 521 */ 563 522 #ifdef TOPPERS_sns_ker -
Property svn:mime-type
changed from
-
rubycfg_asp/trunk/asp_dcre/kernel/task.c
-
Property svn:mime-type
changed from
text/x-csrc
totext/x-csrc; 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 * ã¿ã¹ã¯ç®¡çã¢ã¸ã¥ã¼ã«44 * タスク管理モジュール 60 45 */ 61 46 … … 65 50 66 51 /* 67 * ãã¬ã¼ã¹ãã°ãã¯ãã®ããã©ã«ãå®ç¾©52 * トレースログマクロのデフォルト定義 68 53 */ 69 54 #ifndef LOG_TEX_ENTER … … 78 63 79 64 /* 80 * å®è¡ç¶æ 81 ã®ã¿ã¹ã¯ 65 * 実行状態のタスク 82 66 */ 83 67 TCB *p_runtsk; 84 68 85 69 /* 86 * æé«åªå 87 é ä½ã®ã¿ã¹ã¯ 70 * 最高優先順位のタスク 88 71 */ 89 72 TCB *p_schedtsk; 90 73 91 74 /* 92 * ã¿ã¹ã¯ãã£ã¹ãããï¼ã¿ã¹ã¯ä¾å¤å¦çã«ã¼ãã³èµ·åè¦æ±ãã©ã°75 * タスクディスパッチ/タスク例外処理ルーチン起動要求フラグ 93 76 */ 94 77 bool_t reqflg; 95 78 96 79 /* 97 * å²è¾¼ã¿åªå 98 度ãã¹ã¯å 99 ¨è§£é¤ç¶æ 100 80 * 割込み優先度マスク全解除状態 101 81 */ 102 82 bool_t ipmflg; 103 83 104 84 /* 105 * ãã£ã¹ãããç¦æ¢ç¶æ 106 85 * ディスパッチ禁止状態 107 86 */ 108 87 bool_t disdsp; 109 88 110 89 /* 111 * ã¿ã¹ã¯ãã£ã¹ãããå¯è½ç¶æ 112 90 * タスクディスパッチ可能状態 113 91 */ 114 92 bool_t dspflg; 115 93 116 94 /* 117 * ã¬ãã£ãã¥ã¼95 * レディキュー 118 96 */ 119 97 QUEUE ready_queue[TNUM_TPRI]; 120 98 121 99 /* 122 * ã¬ãã£ãã¥ã¼ãµã¼ãã®ããã®ãããããã100 * レディキューサーチのためのビットマップ 123 101 */ 124 102 uint16_t ready_primap; 125 103 126 104 /* 127 * 使ç¨ãã¦ããªãTCBã®ãªã¹ã105 * 使用していないTCBのリスト 128 106 */ 129 107 QUEUE free_tcb; 130 108 131 109 /* 132 * ã¿ã¹ã¯ç®¡çã¢ã¸ã¥ã¼ã«ã®åæå110 * タスク管理モジュールの初期化 133 111 */ 134 112 void … … 174 152 175 153 /* 176 * ãããããããµã¼ãé¢æ° 177 * 178 * bitmapå 179 ã®1ã®ãããã®å 180 ï¼æãä¸ä½ï¼å³ï¼ã®ãã®ããµã¼ããï¼ãã®ãã 181 * ãçªå·ãè¿ãï¼ãããçªå·ã¯ï¼æä¸ä½ãããã0ã¨ããï¼bitmapã«0ãæå® 182 * ãã¦ã¯ãªããªãï¼ãã®é¢æ°ã§ã¯ï¼bitmapã16ãããã§ãããã¨ãä»®å®ãï¼ 183 * uint16_tåã¨ãã¦ããï¼ 184 * 185 * ããããµã¼ãå½ä»¤ãæã¤ããã»ããµã§ã¯ï¼ããããµã¼ãå½ä»¤ã使ãããã« 186 * æ¸ãç´ããæ¹ãå¹çãè¯ãå ´åãããï¼ãã®ãããªå ´åã«ã¯ï¼ã¿ã¼ã²ãã 187 * ä¾åé¨ã§ããããµã¼ãå½ä»¤ã使ã£ãbitmap_searchãå®ç¾©ãï¼ 188 * OMIT_BITMAP_SEARCHããã¯ãå®ç¾©ããã°ããï¼ã¾ãï¼ããããµã¼ãå½ä»¤ã® 189 * ãµã¼ãæ¹åãéãªã©ã®çç±ã§åªå 190 度ã¨ãããã¨ã®å¯¾å¿ãå¤æ´ãããå ´åã« 191 * ã¯ï¼PRIMAP_BITããã¯ãå®ç¾©ããã°ããï¼ 192 * 193 * ã¾ãï¼ã©ã¤ãã©ãªã«ffsããããªãï¼æ¬¡ã®ããã«å®ç¾©ãã¦ã©ã¤ãã©ãªé¢æ°ã 194 * 使ã£ãæ¹ãå¹çãè¯ãå¯è½æ§ãããï¼ 154 * ビットマップサーチ関数 155 * 156 * bitmap内の1のビットの内,最も下位(右)のものをサーチし,そのビッ 157 * ト番号を返す.ビット番号は,最下位ビットを0とする.bitmapに0を指定 158 * してはならない.この関数では,bitmapが16ビットであることを仮定し, 159 * uint16_t型としている. 160 * 161 * ビットサーチ命令を持つプロセッサでは,ビットサーチ命令を使うように 162 * 書き直した方が効率が良い場合がある.このような場合には,ターゲット 163 * 依存部でビットサーチ命令を使ったbitmap_searchを定義し, 164 * OMIT_BITMAP_SEARCHをマクロ定義すればよい.また,ビットサーチ命令の 165 * サーチ方向が逆などの理由で優先度とビットとの対応を変更したい場合に 166 * は,PRIMAP_BITをマクロ定義すればよい. 167 * 168 * また,ライブラリにffsがあるなら,次のように定義してライブラリ関数を 169 * 使った方が効率が良い可能性もある. 195 170 * #define bitmap_search(bitmap) (ffs(bitmap) - 1) 196 171 */ … … 224 199 225 200 /* 226 * åªå 227 度ããããããã空ãã®ãã§ã㯠201 * 優先度ビットマップが空かのチェック 228 202 */ 229 203 Inline bool_t … … 234 208 235 209 /* 236 * åªå 237 度ããããããã®ãµã¼ã 210 * 優先度ビットマップのサーチ 238 211 */ 239 212 Inline uint_t … … 244 217 245 218 /* 246 * åªå 247 度ããããããã®ã»ãã 219 * 優先度ビットマップのセット 248 220 */ 249 221 Inline void … … 254 226 255 227 /* 256 * åªå 257 度ããããããã®ã¯ãªã¢ 228 * 優先度ビットマップのクリア 258 229 */ 259 230 Inline void … … 264 235 265 236 /* 266 * æé«åªå 267 é ä½ã¿ã¹ã¯ã®ãµã¼ã 237 * 最高優先順位タスクのサーチ 268 238 */ 269 239 #ifdef TOPPERS_tsksched … … 281 251 282 252 /* 283 * å®è¡ã§ããç¶æ 284 ã¸ã®é·ç§» 285 * 286 * æé«åªå 287 é ä½ã®ã¿ã¹ã¯ãæ´æ°ããã®ã¯ï¼å®è¡ã§ããã¿ã¹ã¯ããªãã£ãå ´å 288 * ã¨ï¼p_tcbã®åªå 289 度ãæé«åªå 290 é ä½ã®ã¿ã¹ã¯ã®åªå 291 度ãããé«ãå ´åã§ã 292 * ãï¼ 253 * 実行できる状態への遷移 254 * 255 * 最高優先順位のタスクを更新するのは,実行できるタスクがなかった場合 256 * と,p_tcbの優先度が最高優先順位のタスクの優先度よりも高い場合であ 257 * る. 293 258 */ 294 259 #ifdef TOPPERS_tskrun … … 312 277 313 278 /* 314 * å®è¡ã§ããç¶æ 315 ããä»ã®ç¶æ 316 ã¸ã®é·ç§» 317 * 318 * æé«åªå 319 é ä½ã®ã¿ã¹ã¯ãæ´æ°ããã®ã¯ï¼p_tcbãæé«åªå 320 é ä½ã®ã¿ã¹ã¯ã§ 321 * ãã£ãå ´åã§ããï¼p_tcbã¨åãåªå 322 度ã®ã¿ã¹ã¯ãä»ã«ããå ´åã¯ï¼p_tcb 323 * ã®æ¬¡ã®ã¿ã¹ã¯ãæé«åªå 324 é ä½ã«ãªãï¼ããã§ãªãå ´åã¯ï¼ã¬ãã£ãã¥ã¼ã 325 * ãµã¼ãããå¿ 326 è¦ãããï¼ 279 * 実行できる状態から他の状態への遷移 280 * 281 * 最高優先順位のタスクを更新するのは,p_tcbが最高優先順位のタスクで 282 * あった場合である.p_tcbと同じ優先度のタスクが他にある場合は,p_tcb 283 * の次のタスクが最高優先順位になる.そうでない場合は,レディキューを 284 * サーチする必要がある. 327 285 */ 328 286 #ifdef TOPPERS_tsknrun … … 354 312 355 313 /* 356 * ä¼æ¢ç¶æ 357 ã¸ã®é·ç§» 314 * 休止状態への遷移 358 315 */ 359 316 #ifdef TOPPERS_tskdmt … … 373 330 374 331 /* 375 * ä¼æ¢ç¶æ 376 ããå®è¡ã§ããç¶æ 377 ã¸ã®é·ç§» 332 * 休止状態から実行できる状態への遷移 378 333 */ 379 334 #ifdef TOPPERS_tskact … … 391 346 392 347 /* 393 * ã¿ã¹ã¯ã®åªå 394 度ã®å¤æ´ 395 * 396 * ã¿ã¹ã¯ãå®è¡ã§ããç¶æ 397 ã®å ´åã«ã¯ï¼ã¬ãã£ãã¥ã¼ã®ä¸ã§ã®ä½ç½®ãå¤æ´ã 398 * ãï¼ãªãã¸ã§ã¯ãã®å¾ 399 ã¡ãã¥ã¼ã®ä¸ã§å¾ 400 ã¡ç¶æ 401 ã«ãªã£ã¦ããå ´åã«ã¯ï¼å¾ 402 403 * ã¡ãã¥ã¼ã®ä¸ã§ã®ä½ç½®ãå¤æ´ããï¼ 404 * 405 * æé«åªå 406 é ä½ã®ã¿ã¹ã¯ãæ´æ°ããã®ã¯ï¼(1) p_tcbãæé«åªå 407 é ä½ã®ã¿ã¹ 408 * ã¯ã§ãã£ã¦ï¼ãã®åªå 409 度ãä¸ããå ´åï¼(2) p_tcbãæé«åªå 410 é ä½ã®ã¿ã¹ 411 * ã¯ã§ã¯ãªãï¼å¤æ´å¾ã®åªå 412 度ãæé«åªå 413 é ä½ã®ã¿ã¹ã¯ã®åªå 414 度ãããé«ã 415 * å ´åã§ããï¼(1)ã®å ´åã«ã¯ï¼ã¬ãã£ãã¥ã¼ããµã¼ãããå¿ 416 è¦ãããï¼ 348 * タスクの優先度の変更 349 * 350 * タスクが実行できる状態の場合には,レディキューの中での位置を変更す 351 * る.オブジェクトの待ちキューの中で待ち状態になっている場合には,待 352 * ちキューの中での位置を変更する. 353 * 354 * 最高優先順位のタスクを更新するのは,(1) p_tcbが最高優先順位のタス 355 * クであって,その優先度を下げた場合,(2) p_tcbが最高優先順位のタス 356 * クではなく,変更後の優先度が最高優先順位のタスクの優先度よりも高い 357 * 場合である.(1)の場合には,レディキューをサーチする必要がある. 417 358 */ 418 359 #ifdef TOPPERS_tskpri … … 428 369 if (TSTAT_RUNNABLE(p_tcb->tstat)) { 429 370 /* 430 * ã¿ã¹ã¯ãå®è¡ã§ããç¶æ 431 ã®å ´å 371 * タスクが実行できる状態の場合 432 372 */ 433 373 queue_delete(&(p_tcb->task_queue)); … … 454 394 if (TSTAT_WAIT_WOBJCB(p_tcb->tstat)) { 455 395 /* 456 * ã¿ã¹ã¯ãï¼åæã»éä¿¡ãªãã¸ã§ã¯ãã®ç®¡çãããã¯ã®å 457 ±éé¨ 458 * åï¼WOBJCBï¼ã®å¾ 459 ã¡ãã¥ã¼ã«ã¤ãªããã¦ããå ´å 396 * タスクが,同期・通信オブジェクトの管理ブロックの共通部 397 * 分(WOBJCB)の待ちキューにつながれている場合 460 398 */ 461 399 wobj_change_priority(((WINFO_WOBJ *)(p_tcb->p_winfo))->p_wobjcb, … … 469 407 470 408 /* 471 * ã¬ãã£ãã¥ã¼ã®å転 472 * 473 * æé«åªå 474 é ä½ã®ã¿ã¹ã¯ãæ´æ°ããã®ã¯ï¼æé«åªå 475 é ä½ã®ã¿ã¹ã¯ãã¿ã¹ã¯ã 476 * ã¥ã¼ã®æ«å°¾ã«ç§»åããå ´åã§ããï¼ 409 * レディキューの回転 410 * 411 * 最高優先順位のタスクを更新するのは,最高優先順位のタスクがタスクキ 412 * ューの末尾に移動した場合である. 477 413 */ 478 414 #ifdef TOPPERS_tskrot … … 498 434 499 435 /* 500 * ã¿ã¹ã¯ä¾å¤å¦çã«ã¼ãã³ã®å¼åºã 501 * 502 * ASPã«ã¼ãã«ã§ã¯ï¼ã¿ã¹ã¯ä¾å¤å¦çã«ã¼ãã³å 503 ã§CPUããã¯ç¶æ 504 ã«é·ç§»ãï¼ 505 * å 506 ã®ç¶æ 507 ã«æ»ããã«ãªã¿ã¼ã³ããå ´åï¼ã«ã¼ãã«ãå 508 ã®ç¶æ 509 ã«æ»ãï¼ 436 * タスク例外処理ルーチンの呼出し 437 * 438 * ASPカーネルでは,タスク例外処理ルーチン内でCPUロック状態に遷移し, 439 * 元の状態に戻さずにリターンした場合,カーネルが元の状態に戻す. 510 440 */ 511 441 #ifdef TOPPERS_tsktex … … 540 470 if (p_runtsk != p_schedtsk && dspflg) { 541 471 /* 542 * ããã§dispatchãå¼ã³åºãå¦çã¯ï¼ç¸äºå帰å¼åºãã«ãªã£ã¦ 543 * ãããï¼dispatchãå¼ã¶åã«p_runtsk->enatexãfalseã«ã㦠544 * ããã°æ¯éããªãï¼ãã®çç±ã«ã¤ãã¦ã¯ï¼ãTOPPERS/ASP ã«ã¼ 545 * ãã« è¨è¨ã¡ã¢ããåç 546 §ã®ãã¨ï¼ 472 * ここでdispatchを呼び出す処理は,相互再帰呼出しになって 473 * いるが,dispatchを呼ぶ前にp_runtsk->enatexをfalseにして 474 * おけば支障がない.その理由については,「TOPPERS/ASP カー 475 * ネル 設計メモ」を参照のこと. 547 476 */ 548 477 dispatch(); … … 553 482 554 483 /* 555 * ã¿ã¹ã¯ä¾å¤å¦çã«ã¼ãã³ã®èµ·å484 * タスク例外処理ルーチンの起動 556 485 */ 557 486 #ifndef OMIT_CALLTEX -
Property svn:mime-type
changed from
-
rubycfg_asp/trunk/asp_dcre/kernel/task.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 * ã¿ã¹ã¯ç®¡çã¢ã¸ã¥ã¼ã«44 * タスク管理モジュール 60 45 */ 61 46 … … 67 52 68 53 /* 69 * ãã¬ã¼ã¹ãã°ãã¯ãã®ããã©ã«ãå®ç¾©54 * トレースログマクロのデフォルト定義 70 55 */ 71 56 #ifndef LOG_TSKSTAT … … 74 59 75 60 /* 76 * ã¿ã¹ã¯åªå 77 度ã®å 78 é¨è¡¨ç¾ã»å¤é¨è¡¨ç¾å¤æãã¯ã 61 * タスク優先度の内部表現・外部表現変換マクロ 79 62 */ 80 63 #define INT_PRIORITY(x) ((uint_t)((x) - TMIN_TPRI)) … … 82 65 83 66 /* 84 * ã¿ã¹ã¯ç¶æ 85 ã®å 86 é¨è¡¨ç¾ 87 * 88 * TCBä¸ã®ã¿ã¹ã¯ç¶æ 89 ã§ã¯ï¼å®è¡ç¶æ 90 ï¼RUNNINGï¼ã¨å®è¡å¯è½ç¶æ 91 ï¼READYï¼ 92 * ã¯åºå¥ããªãï¼ä¸¡ç¶æ 93 ãç·ç§°ãã¦ï¼å®è¡ã§ããç¶æ 94 ï¼RUNNABLEï¼ã¨å¼ã¶ï¼ 95 * äºéå¾ 96 ã¡ç¶æ 97 ã¯ï¼(TS_WAITING | TS_SUSPENDED)ã§è¡¨ãï¼TS_WAIT_???ã¯å¾ 98 99 * ã¡è¦å ã表ãï¼å¾ 100 ã¡ç¶æ 101 ï¼äºéå¾ 102 ã¡ç¶æ 103 ãå«ãï¼ã®å ´åã«ã®ã¿è¨å®ããï¼ 104 */ 105 #define TS_DORMANT 0x00U /* ä¼æ¢ç¶æ 106 */ 107 #define TS_RUNNABLE 0x01U /* å®è¡ã§ããç¶æ 108 */ 109 #define TS_WAITING 0x02U /* å¾ 110 ã¡ç¶æ 111 */ 112 #define TS_SUSPENDED 0x04U /* å¼·å¶å¾ 113 ã¡ç¶æ 114 */ 115 116 #define TS_WAIT_DLY (0x00U << 3) /* æéçµéå¾ 117 ã¡ */ 118 #define TS_WAIT_SLP (0x01U << 3) /* èµ·åºå¾ 119 ã¡ */ 120 #define TS_WAIT_RDTQ (0x02U << 3) /* ãã¼ã¿ãã¥ã¼ããã®åä¿¡å¾ 121 ã¡ */ 122 #define TS_WAIT_RPDQ (0x03U << 3) /* åªå 123 度ãã¼ã¿ãã¥ã¼ããã®åä¿¡å¾ 124 ã¡ */ 125 #define TS_WAIT_SEM (0x04U << 3) /* ã»ããã©è³æºã®ç²å¾å¾ 126 ã¡ */ 127 #define TS_WAIT_FLG (0x05U << 3) /* ã¤ãã³ããã©ã°å¾ 128 ã¡ */ 129 #define TS_WAIT_SDTQ (0x06U << 3) /* ãã¼ã¿ãã¥ã¼ã¸ã®éä¿¡å¾ 130 ã¡ */ 131 #define TS_WAIT_SPDQ (0x07U << 3) /* åªå 132 度ãã¼ã¿ãã¥ã¼ã¸ã®éä¿¡å¾ 133 ã¡ */ 134 #define TS_WAIT_MBX (0x08U << 3) /* ã¡ã¼ã«ããã¯ã¹ããã®åä¿¡å¾ 135 ã¡ */ 136 #define TS_WAIT_MPF (0x09U << 3) /* åºå®é·ã¡ã¢ãªãããã¯ã®ç²å¾å¾ 137 ã¡ */ 138 139 /* 140 * ã¿ã¹ã¯ç¶æ 141 å¤å¥ãã¯ã 142 * 143 * TSTAT_DORMANTã¯ã¿ã¹ã¯ãä¼æ¢ç¶æ 144 ã§ãããã©ãããï¼TSTAT_RUNNABLE㯠145 * ã¿ã¹ã¯ãå®è¡ã§ããç¶æ 146 ã§ãããã©ãããå¤å¥ããï¼TSTAT_WAITINGã¯å¾ 147 148 * ã¡ç¶æ 149 ã¨äºéå¾ 150 ã¡ç¶æ 151 ã®ããããã§ãããã©ãããï¼TSTAT_SUSPENDED㯠152 * å¼·å¶å¾ 153 ã¡ç¶æ 154 ã¨äºéå¾ 155 ã¡ç¶æ 156 ã®ããããã§ãããã©ãããå¤å¥ããï¼ 67 * タスク状態の内部表現 68 * 69 * TCB中のタスク状態では,実行状態(RUNNING)と実行可能状態(READY) 70 * は区別しない.両状態を総称して,実行できる状態(RUNNABLE)と呼ぶ. 71 * 二重待ち状態は,(TS_WAITING | TS_SUSPENDED)で表す.TS_WAIT_???は待 72 * ち要因を表し,待ち状態(二重待ち状態を含む)の場合にのみ設定する. 73 */ 74 #define TS_DORMANT 0x00U /* 休止状態 */ 75 #define TS_RUNNABLE 0x01U /* 実行できる状態 */ 76 #define TS_WAITING 0x02U /* 待ち状態 */ 77 #define TS_SUSPENDED 0x04U /* 強制待ち状態 */ 78 79 #define TS_WAIT_DLY (0x00U << 3) /* 時間経過待ち */ 80 #define TS_WAIT_SLP (0x01U << 3) /* 起床待ち */ 81 #define TS_WAIT_RDTQ (0x02U << 3) /* データキューからの受信待ち */ 82 #define TS_WAIT_RPDQ (0x03U << 3) /* 優先度データキューからの受信待ち */ 83 #define TS_WAIT_SEM (0x04U << 3) /* セマフォ資源の獲得待ち */ 84 #define TS_WAIT_FLG (0x05U << 3) /* イベントフラグ待ち */ 85 #define TS_WAIT_SDTQ (0x06U << 3) /* データキューへの送信待ち */ 86 #define TS_WAIT_SPDQ (0x07U << 3) /* 優先度データキューへの送信待ち */ 87 #define TS_WAIT_MBX (0x08U << 3) /* メールボックスからの受信待ち */ 88 #define TS_WAIT_MPF (0x09U << 3) /* 固定長メモリブロックの獲得待ち */ 89 90 /* 91 * タスク状態判別マクロ 92 * 93 * TSTAT_DORMANTはタスクが休止状態であるかどうかを,TSTAT_RUNNABLEは 94 * タスクが実行できる状態であるかどうかを判別する.TSTAT_WAITINGは待 95 * ち状態と二重待ち状態のいずれかであるかどうかを,TSTAT_SUSPENDEDは 96 * 強制待ち状態と二重待ち状態のいずれかであるかどうかを判別する. 157 97 */ 158 98 #define TSTAT_DORMANT(tstat) ((tstat) == TS_DORMANT) … … 162 102 163 103 /* 164 * ã¿ã¹ã¯å¾ 165 ã¡è¦å å¤å¥ãã¯ã 166 * 167 * TSTAT_WAIT_SLPã¯ã¿ã¹ã¯ãèµ·åºå¾ 168 ã¡ã§ãããã©ãããï¼TSTAT_WAIT_WOBJ 169 * ã¯ã¿ã¹ã¯ãåæã»éä¿¡ãªãã¸ã§ã¯ãã«å¯¾ããå¾ 170 ã¡ã§ãããï¼è¨ãæããã¨ï¼ 171 * åæéä¿¡ãªãã¸ã§ã¯ãã®å¾ 172 ã¡ãã¥ã¼ã«ã¤ãªããã¦ãããï¼ã©ãããå¤å¥ã 173 * ãï¼ã¾ãï¼TSTAT_WAIT_WOBJCBã¯ã¿ã¹ã¯ãåæã»éä¿¡ãªãã¸ã§ã¯ãã®ç®¡ç 174 * ãããã¯ã®å 175 ±éé¨åï¼WOBJCBï¼ã®å¾ 176 ã¡ãã¥ã¼ã«ã¤ãªããã¦ãããã©ããã 177 * å¤å¥ããï¼ 178 * 179 * TSTAT_WAIT_SLPã¯ï¼ä»»æã®ã¿ã¹ã¯ç¶æ 180 ã®ä¸ããï¼ã¿ã¹ã¯ãèµ·åºå¾ 181 ã¡ã§ãã 182 * ãã¨ãå¤å¥ã§ããï¼ããªãã¡ï¼TSTAT_WAITINGã«ããå¾ 183 ã¡ç¶æ 184 ã§ãããã¨ã 185 * å¤å¥ããã«ï¼TSTAT_SLPã ããç¨ãã¦èµ·åºå¾ 186 ã¡ç¶æ 187 ã§ãããã¨ãå¤å¥ã§ããï¼ 188 * ãããå¹ççã«å®ç¾ããããã«ï¼TS_WAIT_SLPã®å¤ãï¼(0x00U << 3)ã§ã¯ãª 189 * ã(0x01U << 3)ã¨ãã¦ããï¼ãã®ããï¼ã¿ã¹ã¯ãæéçµéå¾ 190 ã¡ç¶æ 191 ã§ãã 192 * ãã¨ãå¤å¥ããããã®TSTAT_WAIT_DLYãï¼TSTAT_WAIT_SLPã¨åæ§ã®æ¹æ³ã§ 193 * å®ç¾ãããã¨ã¯ã§ããªãï¼ 194 */ 195 #define TS_WAIT_MASK (0x0fU << 3) /* å¾ 196 ã¡è¦å ã®ååºããã¹ã¯ */ 104 * タスク待ち要因判別マクロ 105 * 106 * TSTAT_WAIT_SLPはタスクが起床待ちであるかどうかを,TSTAT_WAIT_WOBJ 107 * はタスクが同期・通信オブジェクトに対する待ちであるか(言い換えると, 108 * 同期通信オブジェクトの待ちキューにつながれているか)どうかを判別す 109 * る.また,TSTAT_WAIT_WOBJCBはタスクが同期・通信オブジェクトの管理 110 * ブロックの共通部分(WOBJCB)の待ちキューにつながれているかどうかを 111 * 判別する. 112 * 113 * TSTAT_WAIT_SLPは,任意のタスク状態の中から,タスクが起床待ちである 114 * ことを判別できる.すなわち,TSTAT_WAITINGにより待ち状態であることを 115 * 判別せずに,TSTAT_SLPだけを用いて起床待ち状態であることを判別できる. 116 * これを効率的に実現するために,TS_WAIT_SLPの値を,(0x00U << 3)ではな 117 * く(0x01U << 3)としている.そのため,タスクが時間経過待ち状態である 118 * ことを判別するためのTSTAT_WAIT_DLYを,TSTAT_WAIT_SLPと同様の方法で 119 * 実現することはできない. 120 */ 121 #define TS_WAIT_MASK (0x0fU << 3) /* 待ち要因の取出しマスク */ 197 122 198 123 #define TSTAT_WAIT_SLP(tstat) (((tstat) & TS_WAIT_MASK) == TS_WAIT_SLP) … … 201 126 202 127 /* 203 * å¾ 204 ã¡æ 205 å ±ãããã¯ï¼WINFOï¼ã®å®ç¾© 206 * 207 * ã¿ã¹ã¯ãå¾ 208 ã¡ç¶æ 209 ã®éã¯ï¼TCBããã³ãã®p_winfoã§æãããWINFOã次㮠210 * ããã«è¨å®ããªããã°ãªããªãï¼ 211 * 212 * (a) TCBã®ã¿ã¹ã¯ç¶æ 213 ãå¾ 214 ã¡ç¶æ 215 ï¼TS_WAITINGï¼ã«ããï¼ãã®éã«ï¼å¾ 216 ã¡ 217 * è¦å ï¼TS_WAIT_???ï¼ãè¨å®ããï¼ 218 * 219 * (b) ã¿ã¤ã ã¢ã¦ããç£è¦ããããã«ï¼ã¿ã¤ã ã¤ãã³ããããã¯ãç»é²ããï¼ 220 * ç»é²ããã¿ã¤ã ã¤ãã³ããããã¯ã¯ï¼å¾ 221 ã¡ã«å 222 ¥ããµã¼ãã¹ã³ã¼ã«å¦çé¢æ° 223 * ã®ãã¼ã«ã«å¤æ°ã¨ãã¦ç¢ºä¿ãï¼ããã¸ã®ãã¤ã³ã¿ãWINFOã®p_tmevtbã«è¨ 224 * æ¶ããï¼ã¿ã¤ã ã¢ã¦ãã®ç£è¦ãå¿ 225 è¦ãªãå ´åï¼æ°¸ä¹ 226 å¾ 227 ã¡ã®å ´åï¼ã«ã¯ï¼ 228 * p_tmevtbãNULLã«ããï¼ 229 * 230 * åæã»éä¿¡ãªãã¸ã§ã¯ãã«å¯¾ããå¾ 231 ã¡ç¶æ 232 ã®å ´åã«ã¯ï¼æ¨æºã®WINFOã« 233 * p_wobjcbãã£ã¼ã«ãã追å ããæ§é ä½ï¼WINFO_WOBJï¼wait.hã§å®ç¾©ï¼ã使 234 * ãï¼ã¾ãï¼ä»¥ä¸ã®(c)ï½(e)ã®è¨å®ãè¡ãå¿ 235 è¦ãããï¼åæã»éä¿¡ãªãã¸ã§ 236 * ã¯ãã«é¢ä¿ããªãå¾ 237 ã¡ï¼èµ·åºå¾ 238 ã¡ï¼æéçµéå¾ 239 ã¡ï¼ã®å ´åã«ã¯ï¼(c)ï½(e) 240 * ã¯å¿ 241 è¦ãªãï¼ 242 * 243 * (c) TCBãå¾ 244 ã¡å¯¾è±¡ã®åæã»éä¿¡ãªãã¸ã§ã¯ãã®å¾ 245 ã¡ãã¥ã¼ã«ã¤ãªãï¼å¾ 246 247 * ã¡ãã¥ã¼ã«ã¤ãªãããã«ï¼task_queueã使ãï¼ 248 * 249 * (d) å¾ 250 ã¡å¯¾è±¡ã®åæã»éä¿¡ãªãã¸ã§ã¯ãã®ç®¡çãããã¯ã¸ã®ãã¤ã³ã¿ãï¼ 251 * WINFO_WOBJã®p_wobjcbã«è¨æ¶ããï¼ 252 * 253 * (e) å¾ 254 ã¡å¯¾è±¡ã®åæã»éä¿¡ãªãã¸ã§ã¯ãã«ä¾åãã¦è¨æ¶ãããã¨ãå¿ 255 è¦ãª 256 * æ 257 å ±ãããå ´åã«ã¯ï¼WINFO_WOBJã«å¿ 258 è¦ãªæ 259 å ±ã®ããã®ãã£ã¼ã«ãã追å 260 * ããæ§é ä½ãå®ç¾©ãï¼WINFO_WOBJã®ä»£ããã«ç¨ããï¼ 261 * 262 * å¾ 263 ã¡ç¶æ 264 ã解é¤ããéã«ã¯ï¼å¾ 265 ã¡è§£é¤ããã¿ã¹ã¯ã«å¯¾ããè¿å¤ãWINFOã® 266 * wercdã«è¨å®ããï¼wercdãå¿ 267 è¦ãªã®ã¯å¾ 268 ã¡è§£é¤ä»¥éã§ããã®ã«å¯¾ãã¦ï¼ 269 * p_tmevtbã¯å¾ 270 ã¡è§£é¤å¾ã¯å¿ 271 è¦ãªãããï¼ã¡ã¢ãªç¯ç´ã®ããã«å 272 ±ç¨ä½ã使㣠273 * ã¦ããï¼ãã®ããï¼wercdã¸ã¨ã©ã¼ã³ã¼ããè¨å®ããã®ã¯ï¼ã¿ã¤ã ã¤ãã³ã 274 * ãããã¯ãç»é²è§£é¤ããå¾ã«ããªããã°ãªããªãï¼ 128 * 待ち情報ブロック(WINFO)の定義 129 * 130 * タスクが待ち状態の間は,TCBおよびそのp_winfoで指されるWINFOを次の 131 * ように設定しなければならない. 132 * 133 * (a) TCBのタスク状態を待ち状態(TS_WAITING)にする.その際に,待ち 134 * 要因(TS_WAIT_???)も設定する. 135 * 136 * (b) タイムアウトを監視するために,タイムイベントブロックを登録する. 137 * 登録するタイムイベントブロックは,待ちに入るサービスコール処理関数 138 * のローカル変数として確保し,それへのポインタをWINFOのp_tmevtbに記 139 * 憶する.タイムアウトの監視が必要ない場合(永久待ちの場合)には, 140 * p_tmevtbをNULLにする. 141 * 142 * 同期・通信オブジェクトに対する待ち状態の場合には,標準のWINFOに 143 * p_wobjcbフィールドを追加した構造体(WINFO_WOBJ,wait.hで定義)を使 144 * う.また,以下の(c)~(e)の設定を行う必要がある.同期・通信オブジェ 145 * クトに関係しない待ち(起床待ち,時間経過待ち)の場合には,(c)~(e) 146 * は必要ない. 147 * 148 * (c) TCBを待ち対象の同期・通信オブジェクトの待ちキューにつなぐ.待 149 * ちキューにつなぐために,task_queueを使う. 150 * 151 * (d) 待ち対象の同期・通信オブジェクトの管理ブロックへのポインタを, 152 * WINFO_WOBJのp_wobjcbに記憶する. 153 * 154 * (e) 待ち対象の同期・通信オブジェクトに依存して記憶することが必要な 155 * 情報がある場合には,WINFO_WOBJに必要な情報のためのフィールドを追加 156 * した構造体を定義し,WINFO_WOBJの代わりに用いる. 157 * 158 * 待ち状態を解除する際には,待ち解除したタスクに対する返値をWINFOの 159 * wercdに設定する.wercdが必要なのは待ち解除以降であるのに対して, 160 * p_tmevtbは待ち解除後は必要ないため,メモリ節約のために共用体を使っ 161 * ている.そのため,wercdへエラーコードを設定するのは,タイムイベント 162 * ブロックを登録解除した後にしなければならない. 275 163 */ 276 164 typedef union waiting_information { 277 ER wercd; /* å¾ 278 ã¡è§£é¤æã®ã¨ã©ã¼ã³ã¼ã */ 279 TMEVTB *p_tmevtb; /* å¾ 280 ã¡ç¶æ 281 ç¨ã®ã¿ã¤ã ã¤ãã³ãããã㯠*/ 165 ER wercd; /* 待ち解除時のエラーコード */ 166 TMEVTB *p_tmevtb; /* 待ち状態用のタイムイベントブロック */ 282 167 } WINFO; 283 168 284 169 /* 285 * ã¿ã¹ã¯åæåããã㯠286 * 287 * ã¿ã¹ã¯ã«é¢ããæ 288 å ±ãï¼å¤ãå¤ãããªãããã«ROMã«ç½®ããé¨åï¼ã¿ã¹ã¯ 289 * åæåãããã¯ï¼ã¨ï¼å¤ãå¤åããããã«RAMã«ç½®ããªããã°ãªããªãé¨ 290 * åï¼ã¿ã¹ã¯ç®¡çãããã¯ï¼TCBï¼ã«åé¢ãï¼TCBå 291 ã«å¯¾å¿ããã¿ã¹ã¯åæå 292 * ãããã¯ãæããã¤ã³ã¿ãå 293 ¥ããï¼ã¿ã¹ã¯åæåãããã¯å 294 ã«å¯¾å¿ãã 295 * TCBãæããã¤ã³ã¿ãå 296 ¥ããæ¹æ³ã®æ¹ãï¼RAMã®ç¯ç´ã®è¦³ç¹ããã¯æã¾ãã 297 * ãï¼å®è¡å¹çãæªããªãããã«æ¡ç¨ãã¦ããªãï¼ä»ã®ãªãã¸ã§ã¯ãã«ã¤ã 298 * ã¦ãåæ§ã«æ±ãï¼ 299 * 300 * ã¿ã¹ã¯åæåãããã¯ã«ã¯ï¼DEF_TEXã§å®ç¾©ãããã¿ã¹ã¯ä¾å¤å¦çã«ã¼ã 301 * ã³ã«é¢ããæ 302 å ±ãå«ãï¼ 170 * タスク初期化ブロック 171 * 172 * タスクに関する情報を,値が変わらないためにROMに置ける部分(タスク 173 * 初期化ブロック)と,値が変化するためにRAMに置かなければならない部 174 * 分(タスク管理ブロック,TCB)に分離し,TCB内に対応するタスク初期化 175 * ブロックを指すポインタを入れる.タスク初期化ブロック内に対応する 176 * TCBを指すポインタを入れる方法の方が,RAMの節約の観点からは望ましい 177 * が,実行効率が悪くなるために採用していない.他のオブジェクトについ 178 * ても同様に扱う. 179 * 180 * タスク初期化ブロックには,DEF_TEXで定義されるタスク例外処理ルーチ 181 * ンに関する情報も含む. 303 182 */ 304 183 typedef struct task_initialization_block { 305 ATR tskatr; /* ã¿ã¹ã¯å±æ§ */ 306 intptr_t exinf; /* ã¿ã¹ã¯ã®æ¡å¼µæ 307 å ± */ 308 TASK task; /* ã¿ã¹ã¯ã®èµ·åçªå° */ 309 uint_t ipriority; /* ã¿ã¹ã¯ã®èµ·åæåªå 310 度ï¼å 311 é¨è¡¨ç¾ï¼ */ 184 ATR tskatr; /* タスク属性 */ 185 intptr_t exinf; /* タスクの拡張情報 */ 186 TASK task; /* タスクの起動番地 */ 187 uint_t ipriority; /* タスクの起動時優先度(内部表現) */ 312 188 313 189 #ifdef USE_TSKINICTXB 314 TSKINICTXB tskinictxb; /* ã¿ã¹ã¯åæåã³ã³ããã¹ããããã¯*/190 TSKINICTXB tskinictxb; /* タスク初期化コンテキストブロック */ 315 191 #else /* USE_TSKINICTXB */ 316 SIZE stksz; /* ã¹ã¿ãã¯é åã®ãµã¤ãºï¼ä¸¸ããå¤ï¼ */ 317 void *stk; /* ã¹ã¿ãã¯é åã®å 318 é çªå° */ 192 SIZE stksz; /* スタック領域のサイズ(丸めた値) */ 193 void *stk; /* スタック領域の先頭番地 */ 319 194 #endif /* USE_TSKINICTXB */ 320 195 321 ATR texatr; /* ã¿ã¹ã¯ä¾å¤å¦çã«ã¼ãã³å±æ§*/322 TEXRTN texrtn; /* ã¿ã¹ã¯ä¾å¤å¦çã«ã¼ãã³ã®èµ·åçªå°*/196 ATR texatr; /* タスク例外処理ルーチン属性 */ 197 TEXRTN texrtn; /* タスク例外処理ルーチンの起動番地 */ 323 198 } TINIB; 324 199 325 200 /* 326 * TCBä¸ã®ãã£ã¼ã«ãã®ãããå¹ 327 ã®å®ç¾© 328 * 329 * ããã»ããµã«ãã£ã¦ã¯ï¼TCBä¸ã®ãã£ã¼ã«ãã®ãããå¹ 330 ã§ã¡ã¢ãªä½¿ç¨é㨠331 * æ§è½ããã¬ã¼ããªãã«ãªãããï¼ã¿ã¼ã²ããä¾åã«ãã£ã¼ã«ãã®ãããå¹ 332 333 * ãå¤æ´ãããã¨ã許ãã¦ããï¼ 201 * TCB中のフィールドのビット幅の定義 202 * 203 * プロセッサによっては,TCB中のフィールドのビット幅でメモリ使用量と 204 * 性能がトレードオフになるため,ターゲット依存にフィールドのビット幅 205 * を変更することを許している. 334 206 */ 335 207 #ifndef TBIT_TCB_PRIORITY 336 #define TBIT_TCB_PRIORITY 8 /* priorityãã£ã¼ã«ãã®ãããå¹ 337 */ 208 #define TBIT_TCB_PRIORITY 8 /* priorityフィールドのビット幅 */ 338 209 #endif /* TBIT_TCB_PRIORITY */ 339 210 340 211 /* 341 * ã¿ã¹ã¯ç®¡çãããã¯ï¼TCBï¼ 342 * 343 * ASPã«ã¼ãã«ã§ã¯ï¼ã¿ã¹ã¯ã®èµ·åè¦æ±ãã¥ã¼ã¤ã³ã°æ°ã®æ大å¤ï¼TMAX_ACTCNTï¼ 344 * ã¨èµ·åºè¦æ±ãã¥ã¼ã¤ã³ã°æ°ã®æ大å¤ï¼TMAX_WUPCNTï¼ã¯1ã«åºå®ããã¦ãã 345 * ããï¼ãã¥ã¼ã¤ã³ã°ããã¦ãããã©ããã®çå½å¤ã§è¡¨ç¾ãããã¨ãã§ããï¼ 346 * ã¾ãï¼å¼·å¶å¾ 347 ã¡è¦æ±ãã¹ãæ°ã®æ大å¤ï¼TMAX_SUSCNTï¼ã1ã«åºå®ããã¦ã 348 * ãã®ã§ï¼å¼·å¶å¾ 349 ã¡è¦æ±ãã¹ãæ°ï¼suscntï¼ã¯å¿ 350 è¦ãªãï¼ 351 * 352 * TCBã®ããã¤ãã®ãã£ã¼ã«ãã¯ï¼ç¹å®ã®ã¿ã¹ã¯ç¶æ 353 ã§ã®ã¿æå¹ãªå¤ãä¿æãï¼ 354 * ãã以å¤ã®å ´åã¯å¤ãä¿è¨¼ãããªãï¼ãã£ã¦ï¼åç 355 §ãã¦ã¯ãªããªãï¼ï¼å 356 * ãã£ã¼ã«ããæå¹ãªå¤ãä¿æããæ¡ä»¶ã¯æ¬¡ã®éãï¼ 357 * 358 * ã»åæåå¾ã¯å¸¸ã«æå¹ï¼ 359 * p_tinibï¼tstatï¼actque 360 * ã»ä¼æ¢ç¶æ 361 以å¤ã§æå¹ï¼ä¼æ¢ç¶æ 362 ã§ã¯åæå¤ã«ãªã£ã¦ããï¼ï¼ 363 * priorityï¼wupqueï¼enatexï¼texptn 364 * ã»å¾ 365 ã¡ç¶æ 366 ï¼äºéå¾ 367 ã¡ç¶æ 368 ãå«ãï¼ã§æå¹ï¼ 212 * タスク管理ブロック(TCB) 213 * 214 * ASPカーネルでは,タスクの起動要求キューイング数の最大値(TMAX_ACTCNT) 215 * と起床要求キューイング数の最大値(TMAX_WUPCNT)は1に固定されている 216 * ため,キューイングされているかどうかの真偽値で表現することができる. 217 * また,強制待ち要求ネスト数の最大値(TMAX_SUSCNT)が1に固定されてい 218 * るので,強制待ち要求ネスト数(suscnt)は必要ない. 219 * 220 * TCBのいくつかのフィールドは,特定のタスク状態でのみ有効な値を保持し, 221 * それ以外の場合は値が保証されない(よって,参照してはならない).各 222 * フィールドが有効な値を保持する条件は次の通り. 223 * 224 * ・初期化後は常に有効: 225 * p_tinib,tstat,actque 226 * ・休止状態以外で有効(休止状態では初期値になっている): 227 * priority,wupque,enatex,texptn 228 * ・待ち状態(二重待ち状態を含む)で有効: 369 229 * p_winfo 370 * ã»å®è¡ã§ããç¶æ 371 ã¨åæã»éä¿¡ãªãã¸ã§ã¯ãã«å¯¾ããå¾ 372 ã¡ç¶æ 373 ã§æå¹ï¼ 230 * ・実行できる状態と同期・通信オブジェクトに対する待ち状態で有効: 374 231 * task_queue 375 * ã»å®è¡å¯è½ç¶æ 376 ï¼å¾ 377 ã¡ç¶æ 378 ï¼å¼·å¶å¾ 379 ã¡ç¶æ 380 ï¼äºéå¾ 381 ã¡ç¶æ 382 ã§æå¹ï¼ 232 * ・実行可能状態,待ち状態,強制待ち状態,二重待ち状態で有効: 383 233 * tskctxb 384 234 */ 385 235 typedef struct task_control_block { 386 QUEUE task_queue; /* ã¿ã¹ã¯ãã¥ã¼*/387 const TINIB *p_tinib; /* åæåãããã¯ã¸ã®ãã¤ã³ã¿*/236 QUEUE task_queue; /* タスクキュー */ 237 const TINIB *p_tinib; /* 初期化ブロックへのポインタ */ 388 238 389 239 #ifdef UINT8_MAX 390 uint8_t tstat; /* ã¿ã¹ã¯ç¶æ 391 ï¼å 392 é¨è¡¨ç¾ï¼*/ 240 uint8_t tstat; /* タスク状態(内部表現)*/ 393 241 #else /* UINT8_MAX */ 394 BIT_FIELD_UINT tstat : 8; /* ã¿ã¹ã¯ç¶æ 395 ï¼å 396 é¨è¡¨ç¾ï¼*/ 242 BIT_FIELD_UINT tstat : 8; /* タスク状態(内部表現)*/ 397 243 #endif /* UINT8_MAX */ 398 244 #if defined(UINT8_MAX) && (TBIT_TCB_PRIORITY == 8) 399 uint8_t priority; /* ç¾å¨ã®åªå 400 度ï¼å 401 é¨è¡¨ç¾ï¼*/ 245 uint8_t priority; /* 現在の優先度(内部表現)*/ 402 246 #else /* defined(UINT8_MAX) && (TBIT_TCB_PRIORITY == 8) */ 403 247 BIT_FIELD_UINT priority : TBIT_TCB_PRIORITY; 404 /* ç¾å¨ã®åªå 405 度ï¼å 406 é¨è¡¨ç¾ï¼*/ 248 /* 現在の優先度(内部表現)*/ 407 249 #endif /* defined(UINT8_MAX) && (TBIT_TCB_PRIORITY == 8) */ 408 BIT_FIELD_BOOL actque : 1; /* èµ·åè¦æ±ãã¥ã¼ã¤ã³ã° */ 409 BIT_FIELD_BOOL wupque : 1; /* èµ·åºè¦æ±ãã¥ã¼ã¤ã³ã° */ 410 BIT_FIELD_BOOL enatex : 1; /* ã¿ã¹ã¯ä¾å¤å¦ç許å¯ç¶æ 411 */ 412 413 TEXPTN texptn; /* ä¿çä¾å¤è¦å */ 414 WINFO *p_winfo; /* å¾ 415 ã¡æ 416 å ±ãããã¯ã¸ã®ãã¤ã³ã¿ */ 417 TSKCTXB tskctxb; /* ã¿ã¹ã¯ã³ã³ããã¹ãããã㯠*/ 250 BIT_FIELD_BOOL actque : 1; /* 起動要求キューイング */ 251 BIT_FIELD_BOOL wupque : 1; /* 起床要求キューイング */ 252 BIT_FIELD_BOOL enatex : 1; /* タスク例外処理許可状態 */ 253 254 TEXPTN texptn; /* 保留例外要因 */ 255 WINFO *p_winfo; /* 待ち情報ブロックへのポインタ */ 256 TSKCTXB tskctxb; /* タスクコンテキストブロック */ 418 257 } TCB; 419 258 420 259 /* 421 * å®è¡ç¶æ 422 ã®ã¿ã¹ã¯ 423 * 424 * å®è¡ç¶æ 425 ã®ã¿ã¹ã¯ï¼ï¼ããã»ããµãã³ã³ããã¹ããæã£ã¦ããã¿ã¹ã¯ï¼ã® 426 * TCBãæããã¤ã³ã¿ï¼å®è¡ç¶æ 427 ã®ã¿ã¹ã¯ããªãå ´åã¯NULLã«ããï¼ 428 * 429 * ãµã¼ãã¹ã³ã¼ã«ã®å¦çä¸ã§ï¼èªã¿ã¹ã¯ï¼ãµã¼ãã¹ã³ã¼ã«ãå¼ã³åºããã¿ã¹ 430 * ã¯ï¼ã«é¢ããæ 431 å ±ãåç 432 §ããå ´åã¯p_runtskã使ãï¼p_runtskãæ¸ãæã 433 * ãã®ã¯ï¼ãã£ã¹ãããã£ï¼ã¨åæåå¦çï¼ã®ã¿ã§ããï¼ 260 * 実行状態のタスク 261 * 262 * 実行状態のタスク(=プロセッサがコンテキストを持っているタスク)の 263 * TCBを指すポインタ.実行状態のタスクがない場合はNULLにする. 264 * 265 * サービスコールの処理中で,自タスク(サービスコールを呼び出したタス 266 * ク)に関する情報を参照する場合はp_runtskを使う.p_runtskを書き換え 267 * るのは,ディスパッチャ(と初期化処理)のみである. 434 268 */ 435 269 extern TCB *p_runtsk; 436 270 437 271 /* 438 * æé«åªå 439 é ä½ã®ã¿ã¹ã¯ 440 * 441 * å®è¡ã§ããã¿ã¹ã¯ã®ä¸ã§æé«åªå 442 é ä½ã®ã¿ã¹ã¯ã®TCBãæããã¤ã³ã¿ï¼å® 443 * è¡ã§ããã¿ã¹ã¯ããªãå ´åã¯NULLã«ããï¼ 444 * 445 * ãã£ã¹ãããç¦æ¢ç¶æ 446 ãªã©ï¼ãã£ã¹ããããä¿çããã¦ããéã¯p_runtsk 447 * ã¨ä¸è´ãã¦ããã¨ã¯éããªãï¼ 272 * 最高優先順位のタスク 273 * 274 * 実行できるタスクの中で最高優先順位のタスクのTCBを指すポインタ.実 275 * 行できるタスクがない場合はNULLにする. 276 * 277 * ディスパッチ禁止状態など,ディスパッチが保留されている間はp_runtsk 278 * と一致しているとは限らない. 448 279 */ 449 280 extern TCB *p_schedtsk; 450 281 451 282 /* 452 * ãã£ã¹ãããï¼ã¿ã¹ã¯ä¾å¤å¦çã«ã¼ãã³èµ·åè¦æ±ãã©ã°453 * 454 * å²è¾¼ã¿ãã³ãã©ï¼CPUä¾å¤ãã³ãã©ã®åºå£å¦çã«ï¼ãã£ã¹ãããã¾ãã¯455 * ã¿ã¹ã¯ä¾å¤å¦çã«ã¼ãã³ã®èµ·åãè¦æ±ãããã¨ã示ããã©ã°ï¼283 * ディスパッチ/タスク例外処理ルーチン起動要求フラグ 284 * 285 * 割込みハンドラ/CPU例外ハンドラの出口処理に,ディスパッチまたは 286 * タスク例外処理ルーチンの起動を要求することを示すフラグ. 456 287 */ 457 288 extern bool_t reqflg; 458 289 459 290 /* 460 * å²è¾¼ã¿åªå 461 度ãã¹ã¯å 462 ¨è§£é¤ç¶æ 463 464 * 465 * å²è¾¼ã¿åªå 466 度ãã¹ã¯å 467 ¨è§£é¤ç¶æ 468 ã§ãããã¨ã示ããã©ã°ï¼ 291 * 割込み優先度マスク全解除状態 292 * 293 * 割込み優先度マスク全解除状態であることを示すフラグ. 469 294 */ 470 295 extern bool_t ipmflg; 471 296 472 297 /* 473 * ãã£ã¹ãããç¦æ¢ç¶æ 474 475 * 476 * ãã£ã¹ãããç¦æ¢ç¶æ 477 ã§ãããã¨ã示ããã©ã°ï¼ 298 * ディスパッチ禁止状態 299 * 300 * ディスパッチ禁止状態であることを示すフラグ. 478 301 */ 479 302 extern bool_t disdsp; 480 303 481 304 /* 482 * ã¿ã¹ã¯ãã£ã¹ãããå¯è½ç¶æ 483 484 * 485 * å²è¾¼ã¿åªå 486 度ãã¹ã¯å 487 ¨è§£é¤ç¶æ 488 ã§ããï¼ãã£ã¹ããã許å¯ç¶æ 489 ã§ããï¼ã㣠490 * ã¹ãããç¦æ¢ç¶æ 491 ã§ãªãï¼ãã¨ã示ããã©ã°ï¼ 305 * タスクディスパッチ可能状態 306 * 307 * 割込み優先度マスク全解除状態であり,ディスパッチ許可状態である(ディ 308 * スパッチ禁止状態でない)ことを示すフラグ. 492 309 */ 493 310 extern bool_t dspflg; 494 311 495 312 /* 496 * ã¬ãã£ãã¥ã¼ 497 * 498 * ã¬ãã£ãã¥ã¼ã¯ï¼å®è¡ã§ããç¶æ 499 ã®ã¿ã¹ã¯ã管çããããã®ãã¥ã¼ã§ããï¼ 500 * å®è¡ç¶æ 501 ã®ã¿ã¹ã¯ã管çãã¦ããããï¼ã¬ãã£ï¼å®è¡å¯è½ï¼ãã¥ã¼ã¨ãã 502 * å称ã¯æ£ç¢ºã§ã¯ãªããï¼ã¬ãã£ãã¥ã¼ã¨ããå称ãå®çãã¦ããããï¼ã 503 * ã®å称ã§å¼ã¶ãã¨ã«ããï¼ 504 * 505 * ã¬ãã£ãã¥ã¼ã¯ï¼åªå 506 度ãã¨ã®ã¿ã¹ã¯ãã¥ã¼ã§æ§æããã¦ããï¼ã¿ã¹ã¯ã® 507 * TCBã¯ï¼è©²å½ããåªå 508 度ã®ãã¥ã¼ã«ç»é²ãããï¼ 313 * レディキュー 314 * 315 * レディキューは,実行できる状態のタスクを管理するためのキューである. 316 * 実行状態のタスクも管理しているため,レディ(実行可能)キューという 317 * 名称は正確ではないが,レディキューという名称が定着しているため,こ 318 * の名称で呼ぶことにする. 319 * 320 * レディキューは,優先度ごとのタスクキューで構成されている.タスクの 321 * TCBは,該当する優先度のキューに登録される. 509 322 */ 510 323 extern QUEUE ready_queue[TNUM_TPRI]; 511 324 512 325 /* 513 * ã¬ãã£ãã¥ã¼ãµã¼ãã®ããã®ãããããã 514 * 515 * ã¬ãã£ãã¥ã¼ã®ãµã¼ããå¹çããè¡ãããã«ï¼åªå 516 度ãã¨ã®ã¿ã¹ã¯ãã¥ã¼ 517 * ã«ã¿ã¹ã¯ãå 518 ¥ã£ã¦ãããã©ããã示ããããããããç¨æãã¦ããï¼ãã 519 * ããããã使ããã¨ã§ï¼ã¡ã¢ãªã¢ã¯ã»ã¹ã®åæ°ãæ¸ãããã¨ãã§ãããï¼ 520 * ãããæä½å½ä»¤ãå 521 522 å®ãã¦ããªãããã»ããµã§ï¼åªå 523 度ã®æ®µéæ°ãå°ãªã 524 * å ´åã«ã¯ï¼ããããããæä½ã®ãªã¼ãã¼ãããã®ããã«ï¼éã«å¹çãè½ã¡ 525 * ãå¯è½æ§ãããï¼ 526 * 527 * åªå 528 度ã16段éã§ãããã¨ãä»®å®ãã¦ããããï¼uint16_tåã¨ãã¦ããï¼ 326 * レディキューサーチのためのビットマップ 327 * 328 * レディキューのサーチを効率よく行うために,優先度ごとのタスクキュー 329 * にタスクが入っているかどうかを示すビットマップを用意している.ビッ 330 * トマップを使うことで,メモリアクセスの回数を減らすことができるが, 331 * ビット操作命令が充実していないプロセッサで,優先度の段階数が少ない 332 * 場合には,ビットマップ操作のオーバーヘッドのために,逆に効率が落ち 333 * る可能性もある. 334 * 335 * 優先度が16段階であることを仮定しているため,uint16_t型としている. 529 336 */ 530 337 extern uint16_t ready_primap; 531 338 532 339 /* 533 * 使ç¨ãã¦ããªãTCBã®ãªã¹ã340 * 使用していないTCBのリスト 534 341 */ 535 342 extern QUEUE free_tcb; 536 343 537 344 /* 538 * ã¿ã¹ã¯IDã®æ大å¤ï¼kernel_cfg.cï¼345 * タスクIDの最大値(kernel_cfg.c) 539 346 */ 540 347 extern const ID tmax_tskid; … … 542 349 543 350 /* 544 * ã¿ã¹ã¯åæåãããã¯ã®ã¨ãªã¢ï¼kernel_cfg.cï¼351 * タスク初期化ブロックのエリア(kernel_cfg.c) 545 352 */ 546 353 extern const TINIB tinib_table[]; … … 548 355 549 356 /* 550 * ã¿ã¹ã¯çæé åºãã¼ãã«ï¼kernel_cfg.cï¼357 * タスク生成順序テーブル(kernel_cfg.c) 551 358 */ 552 359 extern const ID torder_table[]; 553 360 554 361 /* 555 * TCB ã®ã¨ãªã¢ï¼kernel_cfg.cï¼362 * TCBのエリア(kernel_cfg.c) 556 363 */ 557 364 extern TCB tcb_table[]; 558 365 559 366 /* 560 * ã¿ã¹ã¯ã®æ°367 * タスクの数 561 368 */ 562 369 #define tnum_tsk ((uint_t)(tmax_tskid - TMIN_TSKID + 1)) … … 564 371 565 372 /* 566 * ã¿ã¹ã¯IDããTCBãåãåºãããã®ãã¯ã373 * タスクIDからTCBを取り出すためのマクロ 567 374 */ 568 375 #define INDEX_TSK(tskid) ((uint_t)((tskid) - TMIN_TSKID)) … … 571 378 572 379 /* 573 * TCB ããã¿ã¹ã¯IDãåãåºãããã®ãã¯ã380 * TCBからタスクIDを取り出すためのマクロ 574 381 */ 575 382 #define TSKID(p_tcb) ((ID)(((p_tcb) - tcb_table) + TMIN_TSKID)) 576 383 577 384 /* 578 * ã¿ã¹ã¯ç®¡çã¢ã¸ã¥ã¼ã«ã®åæå385 * タスク管理モジュールの初期化 579 386 */ 580 387 extern void initialize_task(void); 581 388 582 389 /* 583 * æé«åªå 584 é ä½ã¿ã¹ã¯ã®ãµã¼ã 585 * 586 * ã¬ãã£ãã¥ã¼ä¸ã®æé«åªå 587 é ä½ã®ã¿ã¹ã¯ããµã¼ããï¼ãã®TCBã¸ã®ãã¤ã³ã¿ 588 * ãè¿ãï¼ã¬ãã£ãã¥ã¼ã空ã®å ´åã«ã¯ï¼ãã®é¢æ°ãå¼ã³åºãã¦ã¯ãªããªãï¼ 390 * 最高優先順位タスクのサーチ 391 * 392 * レディキュー中の最高優先順位のタスクをサーチし,そのTCBへのポインタ 393 * を返す.レディキューが空の場合には,この関数を呼び出してはならない. 589 394 */ 590 395 extern TCB *search_schedtsk(void); 591 396 592 397 /* 593 * å®è¡ã§ããç¶æ 594 ã¸ã®é·ç§» 595 * 596 * p_tcbã§æå®ãããã¿ã¹ã¯ãã¬ãã£ãã¥ã¼ã«æ¿å 597 ¥ããï¼ã¬ãã£ãã¥ã¼ã«æ¿å 598 ¥ 599 * ããã¿ã¹ã¯ã®åªå 600 度ãï¼æé«åªå 601 é ä½ã®ã¿ã¹ã¯ã®åªå 602 度ãããé«ãå ´åã¯ï¼ 603 * æé«åªå 604 é ä½ã®ã¿ã¹ã¯ãæ´æ°ãï¼ãã£ã¹ããã許å¯ç¶æ 605 ã§ããã°trueãè¿ 606 * ãï¼ããã§ãªãå ´åã¯falseãè¿ãï¼ 398 * 実行できる状態への遷移 399 * 400 * p_tcbで指定されるタスクをレディキューに挿入する.レディキューに挿入 401 * したタスクの優先度が,最高優先順位のタスクの優先度よりも高い場合は, 402 * 最高優先順位のタスクを更新し,ディスパッチ許可状態であればtrueを返 403 * す.そうでない場合はfalseを返す. 607 404 */ 608 405 extern bool_t make_runnable(TCB *p_tcb); 609 406 610 407 /* 611 * å®è¡ã§ããç¶æ 612 ããä»ã®ç¶æ 613 ã¸ã®é·ç§» 614 * 615 * p_tcbã§æå®ãããã¿ã¹ã¯ãã¬ãã£ãã¥ã¼ããåé¤ããï¼p_tcbã§æå®ãã 616 * ã¿ã¹ã¯ãæé«åªå 617 é ä½ã®ã¿ã¹ã¯ã§ãã£ãå ´åã«ã¯ï¼æé«åªå 618 é ä½ã®ã¿ã¹ã¯ 619 * ãè¨å®ããªããï¼ãã£ã¹ããã許å¯ç¶æ 620 ã§ããã°trueãè¿ãï¼ããã§ãªã 621 * å ´åã¯falseãè¿ãï¼ã¿ã¹ã¯ã®ç¶æ 622 ã¯æ´æ°ããªãï¼ 408 * 実行できる状態から他の状態への遷移 409 * 410 * p_tcbで指定されるタスクをレディキューから削除する.p_tcbで指定した 411 * タスクが最高優先順位のタスクであった場合には,最高優先順位のタスク 412 * を設定しなおし,ディスパッチ許可状態であればtrueを返す.そうでない 413 * 場合はfalseを返す.タスクの状態は更新しない. 623 414 */ 624 415 extern bool_t make_non_runnable(TCB *p_tcb); 625 416 626 417 /* 627 * ä¼æ¢ç¶æ 628 ã¸ã®é·ç§» 629 * 630 * p_tcbã§æå®ãããã¿ã¹ã¯ã®ç¶æ 631 ãä¼æ¢ç¶æ 632 ã¨ããï¼ã¾ãï¼ã¿ã¹ã¯ã®èµ·å 633 * æã«åæåãã¹ãå¤æ°ã®åæåã¨ï¼ã¿ã¹ã¯èµ·åã®ããã®ã³ã³ããã¹ããè¨ 634 * å®ããï¼ 418 * 休止状態への遷移 419 * 420 * p_tcbで指定されるタスクの状態を休止状態とする.また,タスクの起動 421 * 時に初期化すべき変数の初期化と,タスク起動のためのコンテキストを設 422 * 定する. 635 423 */ 636 424 extern void make_dormant(TCB *p_tcb); 637 425 638 426 /* 639 * ä¼æ¢ç¶æ 640 ããå®è¡ã§ããç¶æ 641 ã¸ã®é·ç§» 642 * 643 * p_tcbã§æå®ãããã¿ã¹ã¯ã®ç¶æ 644 ãä¼æ¢ç¶æ 645 ããå®è¡ã§ããç¶æ 646 ã¨ããï¼ 647 * å®è¡ã§ããç¶æ 648 ã«é·ç§»ããã¿ã¹ã¯ã¸ã®ãã£ã¹ããããå¿ 649 è¦ãªå ´åã¯trueï¼ 650 * ããã§ãªãå ´åã¯falseãè¿ãï¼ 427 * 休止状態から実行できる状態への遷移 428 * 429 * p_tcbで指定されるタスクの状態を休止状態から実行できる状態とする. 430 * 実行できる状態に遷移したタスクへのディスパッチが必要な場合はtrue, 431 * そうでない場合はfalseを返す. 651 432 */ 652 433 extern bool_t make_active(TCB *p_tcb); 653 434 654 435 /* 655 * ã¿ã¹ã¯ã®åªå 656 度ã®å¤æ´ 657 * 658 * p_tcbã§æå®ãããã¿ã¹ã¯ã®åªå 659 度ãnewpriï¼å 660 é¨è¡¨ç¾ï¼ã«å¤æ´ããï¼ã¾ãï¼ 661 * å¿ 662 è¦ãªå ´åã«ã¯æé«åªå 663 é ä½ã®ã¿ã¹ã¯ãæ´æ°ãï¼ãã£ã¹ããã許å¯ç¶æ 664 㧠665 * ããã°trueãè¿ãï¼ããã§ãªãå ´åã¯falseãè¿ãï¼ 436 * タスクの優先度の変更 437 * 438 * p_tcbで指定されるタスクの優先度をnewpri(内部表現)に変更する.また, 439 * 必要な場合には最高優先順位のタスクを更新し,ディスパッチ許可状態で 440 * あればtrueを返す.そうでない場合はfalseを返す. 666 441 */ 667 442 extern bool_t change_priority(TCB *p_tcb, uint_t newpri); 668 443 669 444 /* 670 * ã¬ãã£ãã¥ã¼ã®å転 671 * 672 * ã¬ãã£ãã¥ã¼ä¸ã®ï¼priã§æå®ãããåªå 673 度ã®ã¿ã¹ã¯ãã¥ã¼ãå転ãããï¼ 674 * ã¾ãï¼å¿ 675 è¦ãªå ´åã«ã¯æé«åªå 676 é ä½ã®ã¿ã¹ã¯ãå¤æ´ãï¼ãã£ã¹ããããä¿ 677 * çããã¦ããªããã°trueãè¿ãï¼ããã§ãªãå ´åã¯falseãè¿ãï¼ 445 * レディキューの回転 446 * 447 * レディキュー中の,priで指定される優先度のタスクキューを回転させる. 448 * また,必要な場合には最高優先順位のタスクを変更し,ディスパッチが保 449 * 留されていなければtrueを返す.そうでない場合はfalseを返す. 678 450 */ 679 451 extern bool_t rotate_ready_queue(uint_t pri); 680 452 681 453 /* 682 * ã¿ã¹ã¯ä¾å¤å¦çã«ã¼ãã³ã®å¼åºã 683 * 684 * ã¿ã¹ã¯ä¾å¤å¦çã«ã¼ãã³ãå¼ã³åºãï¼å¼ã³åºãåã«ï¼å®è¡ç¶æ 685 ã®ã¿ã¹ã¯ã® 686 * ä¿çä¾å¤è¦å ãã¯ãªã¢ãï¼ã¿ã¹ã¯ä¾å¤å¦çç¦æ¢ç¶æ 687 ã«ãï¼CPUããã¯ã解 688 * é¤ããï¼ 689 * 690 * ã¿ã¹ã¯ä¾å¤å¦çã«ã¼ãã³ããæ»ãã¨ï¼ã¾ãCPUããã¯ç¶æ 691 ã«æ»ãï¼ãã®é 692 * ã«ä¿çä¾å¤è¦å ã0ã§ãªããªã£ã¦ããã°ï¼åã³ã¿ã¹ã¯ä¾å¤å¦çã«ã¼ãã³ã 693 * å¼ã³åºãï¼ä¿çä¾å¤è¦å ã0ã®å ´åã«ã¯ï¼ä¾å¤å¦ç許å¯ç¶æ 694 ã«ãã¦é¢æ°ã 695 * ããªã¿ã¼ã³ããï¼ 696 * 697 * ãã®é¢æ°ã¯ï¼å®è¡ç¶æ 698 ã®ã¿ã¹ã¯ãï¼ã¿ã¹ã¯ä¾å¤å¦ç許å¯ç¶æ 699 ï¼enatexã 700 * trueï¼ã§ï¼ä¿çä¾å¤è¦å ã0ã§ãªãï¼texptnã0ã§ãªãï¼å ´åã«å¼ã³åºãã 701 * ã¨ãæ³å®ãã¦ããï¼ãã®é¢æ°ã¯ï¼CPUããã¯ç¶æ 702 ã§å¼ã³åºããªããã°ãªã 703 * ãªãï¼ 454 * タスク例外処理ルーチンの呼出し 455 * 456 * タスク例外処理ルーチンを呼び出す.呼び出す前に,実行状態のタスクの 457 * 保留例外要因をクリアし,タスク例外処理禁止状態にし,CPUロックを解 458 * 除する. 459 * 460 * タスク例外処理ルーチンから戻ると,まずCPUロック状態に戻し,その間 461 * に保留例外要因が0でなくなっていれば,再びタスク例外処理ルーチンを 462 * 呼び出す.保留例外要因が0の場合には,例外処理許可状態にして関数か 463 * らリターンする. 464 * 465 * この関数は,実行状態のタスクが,タスク例外処理許可状態(enatexが 466 * true)で,保留例外要因が0でない(texptnが0でない)場合に呼び出すこ 467 * とを想定している.この関数は,CPUロック状態で呼び出さなければなら 468 * ない. 704 469 */ 705 470 extern void call_texrtn(void); 706 471 707 472 /* 708 * ã¿ã¹ã¯ä¾å¤å¦çã«ã¼ãã³ã®èµ·å 709 * 710 * å®è¡ç¶æ 711 ã®ã¿ã¹ã¯ãã¿ã¹ã¯ä¾å¤å¦çã«ã¼ãã³ã®èµ·åæ¡ä»¶ãæºããã¦ããã°ï¼ 712 * ã¿ã¹ã¯ä¾å¤å¦çã«ã¼ãã³ãå¼ã³åºãï¼CPUä¾å¤å¦çã«ã¼ãã³ãå¼ã³åºãæ 713 * ã¯ï¼ä¸æçã«CPUããã¯ã解é¤ããï¼ 714 * 715 * ãã®é¢æ°ã¯ï¼ãã£ã¹ãããã£ãå²è¾¼ã¿ãã³ãã©ï¼CPUä¾å¤ãã³ãã©ã®åºå£ 716 * å¦çããå¼ã³åºããããã¨ãæ³å®ãã¦ããï¼ãã®é¢æ°ã¯ï¼CPUããã¯ç¶æ 717 718 * ã§å¼ã³åºããªããã°ãªããªãï¼ 719 * 720 * å®è¡å¹çãä¸ããããã«ï¼ãã®é¢æ°ãã¿ã¼ã²ããä¾åé¨ã§è¨è¿°ãã¦ãããï¼ 721 * ãã®å ´åã«ã¯ï¼OMIT_CALLTEXããã¯ãå®ç¾©ããï¼ 473 * タスク例外処理ルーチンの起動 474 * 475 * 実行状態のタスクがタスク例外処理ルーチンの起動条件を満たしていれば, 476 * タスク例外処理ルーチンを呼び出す.CPU例外処理ルーチンを呼び出す時 477 * は,一時的にCPUロックを解除する. 478 * 479 * この関数は,ディスパッチャや割込みハンドラ/CPU例外ハンドラの出口 480 * 処理から呼び出されることを想定している.この関数は,CPUロック状態 481 * で呼び出さなければならない. 482 * 483 * 実行効率を上げるために,この関数をターゲット依存部で記述してもよい. 484 * その場合には,OMIT_CALLTEXをマクロ定義する. 722 485 */ 723 486 extern void calltex(void); -
Property svn:mime-type
changed from
-
rubycfg_asp/trunk/asp_dcre/kernel/task.trb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby; 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: task.trb 668 2016-03-03 13:57:53Z ertl-hiro $ … … 57 42 58 43 # 59 # ã¿ã¹ã¯ç®¡çã¢ã¸ã¥ã¼ã«ã®çæã¹ã¯ãªãã44 # タスク管理モジュールの生成スクリプト 60 45 # 61 46 … … 66 51 67 52 def prepare(key, params) 68 # ãã©ã¡ã¼ã¿ãçç¥ãããæã®ããã©ã«ãå¤ã®è¨å®53 # パラメータが省略された時のデフォルト値の設定 69 54 params[:stk] ||= "NULL" 70 55 71 # tskatr ãç¡å¹ã®å ´åï¼E_RSATRï¼ï¼»NGKI1028ï¼½72 # ï¼TA_ACTï¼TARGET_TSKATR以å¤ã®ããããã»ããããã¦ããå ´åï¼56 # tskatrが無効の場合(E_RSATR)[NGKI1028] 57 #(TA_ACT,TARGET_TSKATR以外のビットがセットされている場合) 73 58 if (params[:tskatr] & ~($TA_ACT|$TARGET_TSKATR)) != 0 74 59 error_illegal_id("E_RSATR", params, :tskatr, :tskid) 75 60 end 76 61 77 # (TMIN_TPRI <= itskpri && itskpri <= TMAX_TPRI) ã§ãªãå ´åï¼»NGKI1034ï¼½62 # (TMIN_TPRI <= itskpri && itskpri <= TMAX_TPRI)でない場合[NGKI1034] 78 63 if !($TMIN_TPRI <= params[:itskpri] && params[:itskpri] <= $TMAX_TPRI) 79 64 error_illegal_id("E_PAR", params, :itskpri, :tskid) 80 65 end 81 66 82 # stksz ãã¿ã¼ã²ããå®ç¾©ã®æå°å¤ï¼TARGET_MIN_STKSZï¼æªå®ç¾©ã®å ´åã¯1ï¼83 # ãããå°ããå ´åï¼»NGKI1042ï¼½67 # stkszがターゲット定義の最小値(TARGET_MIN_STKSZ,未定義の場合は1) 68 # よりも小さい場合[NGKI1042] 84 69 if params[:stksz] < $TARGET_MIN_STKSZ 85 70 error_wrong_id("E_PAR", params, :stksz, :tskid, "too small") 86 71 end 87 72 88 # ã¹ã¿ãã¯é åã®è¨å®ï¼»NGKI1041ï¼½73 # スタック領域の設定[NGKI1041] 89 74 if params[:stk] == "NULL" 90 # ã¹ã¿ãã¯é åã®çæï¼»NGKI1049ï¼½75 # スタック領域の生成[NGKI1049] 91 76 stkName = "_kernel_stack_#{params[:tskid]}" 92 77 params[:tinib_stksz] = AllocStack(stkName, params[:stksz]) 93 78 params[:tinib_stk] = stkName 94 79 else 95 # stksz ãã¹ã¿ãã¯é åã®ãµã¤ãºã¨ãã¦æ£ãããªãå ´åï¼»NGKI1056ï¼½80 # stkszがスタック領域のサイズとして正しくない場合[NGKI1056] 96 81 if (params[:stksz] & ($CHECK_STKSZ_ALIGN - 1)) != 0 97 82 error_wrong_id("E_PAR", params, :stksz, :tskid, "not aligned") … … 102 87 end 103 88 104 # ã¿ã¹ã¯ä¾å¤ã®å¤ãè¨å®89 # タスク例外の値を設定 105 90 if $cfgData[:DEF_TEX].has_key?(key) 106 91 params[:texatr] ||= $cfgData[:DEF_TEX][key][:texatr] … … 124 109 125 110 # 126 # ã¿ã¹ã¯ç®¡çã«é¢ããæ 127 å ±ã®çæ 111 # タスク管理に関する情報の生成 128 112 # 129 113 $kernelCfgC.comment_header("Task Management Functions") … … 133 117 TaskObject.new.generate() 134 118 135 # ã¿ã¹ã¯çæé åºãã¼ãã«ã®çæ119 # タスク生成順序テーブルの生成 136 120 $kernelCfgC.add("const ID _kernel_torder_table[TNUM_STSKID] = { ") 137 121 $kernelCfgC.append("\t") -
Property svn:mime-type
changed from
-
rubycfg_asp/trunk/asp_dcre/kernel/task_except.c
-
Property svn:mime-type
changed from
text/x-csrc
totext/x-csrc; 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 * ã¿ã¹ã¯ä¾å¤å¦çæ©è½44 * タスク例外処理機能 60 45 */ 61 46 … … 65 50 66 51 /* 67 * ãã¬ã¼ã¹ãã°ãã¯ãã®ããã©ã«ãå®ç¾©52 * トレースログマクロのデフォルト定義 68 53 */ 69 54 #ifndef LOG_DEF_TEX_ENTER … … 124 109 125 110 /* 126 * ã¿ã¹ã¯ä¾å¤å¦çã«ã¼ãã³ã®å®ç¾©111 * タスク例外処理ルーチンの定義 127 112 */ 128 113 #ifdef TOPPERS_def_tex … … 186 171 187 172 /* 188 * ã¿ã¹ã¯ä¾å¤å¦çã®è¦æ±173 * タスク例外処理の要求 189 174 */ 190 175 #ifdef TOPPERS_ras_tex … … 226 211 227 212 /* 228 * ã¿ã¹ã¯ä¾å¤å¦çã®è¦æ±ï¼éã¿ã¹ã¯ã³ã³ããã¹ãç¨ï¼213 * タスク例外処理の要求(非タスクコンテキスト用) 229 214 */ 230 215 #ifdef TOPPERS_iras_tex … … 266 251 267 252 /* 268 * ã¿ã¹ã¯ä¾å¤å¦çã®ç¦æ¢253 * タスク例外処理の禁止 269 254 */ 270 255 #ifdef TOPPERS_dis_tex … … 296 281 297 282 /* 298 * ã¿ã¹ã¯ä¾å¤å¦çã®è¨±å¯283 * タスク例外処理の許可 299 284 */ 300 285 #ifdef TOPPERS_ena_tex … … 329 314 330 315 /* 331 * ã¿ã¹ã¯ä¾å¤å¦çç¦æ¢ç¶æ 332 ã®åç 333 § 316 * タスク例外処理禁止状態の参照 334 317 */ 335 318 #ifdef TOPPERS_sns_tex … … 349 332 350 333 /* 351 * ã¿ã¹ã¯ä¾å¤å¦çã®ç¶æ 352 åç 353 § 334 * タスク例外処理の状態参照 354 335 */ 355 336 #ifdef TOPPERS_ref_tex -
Property svn:mime-type
changed from
-
rubycfg_asp/trunk/asp_dcre/kernel/task_manage.c
-
Property svn:mime-type
changed from
text/x-csrc
totext/x-csrc; 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 * ã¿ã¹ã¯ç®¡çæ©è½44 * タスク管理機能 60 45 */ 61 46 … … 66 51 67 52 /* 68 * ãã¬ã¼ã¹ãã°ãã¯ãã®ããã©ã«ãå®ç¾©53 * トレースログマクロのデフォルト定義 69 54 */ 70 55 #ifndef LOG_ACRE_TSK_ENTER … … 149 134 150 135 /* 151 * ã¿ã¹ã¯ã®çæ136 * タスクの生成 152 137 */ 153 138 #ifdef TOPPERS_acre_tsk 154 139 155 140 #ifndef TARGET_MIN_STKSZ 156 #define TARGET_MIN_STKSZ 1U /* æªå®ç¾©ã®å ´åã¯0ã§ãªããã¨ããã§ãã¯*/141 #define TARGET_MIN_STKSZ 1U /* 未定義の場合は0でないことをチェック */ 157 142 #endif /* TARGET_MIN_STKSZ */ 158 143 … … 231 216 232 217 /* 233 * ã¿ã¹ã¯ã®åé¤218 * タスクの削除 234 219 */ 235 220 #ifdef TOPPERS_del_tsk … … 277 262 278 263 /* 279 * ã¿ã¹ã¯ã®èµ·å264 * タスクの起動 280 265 */ 281 266 #ifdef TOPPERS_act_tsk … … 319 304 320 305 /* 321 * ã¿ã¹ã¯ã®èµ·åï¼éã¿ã¹ã¯ã³ã³ããã¹ãç¨ï¼306 * タスクの起動(非タスクコンテキスト用) 322 307 */ 323 308 #ifdef TOPPERS_iact_tsk … … 361 346 362 347 /* 363 * ã¿ã¹ã¯èµ·åè¦æ±ã®ãã£ã³ã»ã«348 * タスク起動要求のキャンセル 364 349 */ 365 350 #ifdef TOPPERS_can_act … … 394 379 395 380 /* 396 * èªã¿ã¹ã¯ã®çµäº381 * 自タスクの終了 397 382 */ 398 383 #ifdef TOPPERS_ext_tsk … … 408 393 if (t_sense_lock()) { 409 394 /* 410 * CPUããã¯ç¶æ 411 ã§ext_tskãå¼ã°ããå ´åã¯ï¼CPUããã¯ã解é¤ã 412 * ã¦ããã¿ã¹ã¯ãçµäºããï¼å®è£ 413 ä¸ã¯ï¼ãµã¼ãã¹ã³ã¼ã«å 414 ã§ã®CPU 415 * ããã¯ãçç¥ããã°ããã ãï¼ 395 * CPUロック状態でext_tskが呼ばれた場合は,CPUロックを解除し 396 * てからタスクを終了する.実装上は,サービスコール内でのCPU 397 * ロックを省略すればよいだけ. 416 398 */ 417 399 } … … 421 403 if (disdsp) { 422 404 /* 423 * ãã£ã¹ãããç¦æ¢ç¶æ 424 ã§ext_tskãå¼ã°ããå ´åã¯ï¼ãã£ã¹ãã 425 * ã許å¯ç¶æ 426 ã«ãã¦ããã¿ã¹ã¯ãçµäºããï¼ 405 * ディスパッチ禁止状態でext_tskが呼ばれた場合は,ディスパッ 406 * チ許可状態にしてからタスクを終了する. 427 407 */ 428 408 disdsp = false; … … 430 410 if (!ipmflg) { 431 411 /* 432 * å²è¾¼ã¿åªå 433 度ãã¹ã¯ï¼IPMï¼ãTIPM_ENAALL以å¤ã®ç¶æ 434 ã§ext_tsk 435 * ãå¼ã°ããå ´åã¯ï¼IPMãTIPM_ENAALLã«ãã¦ããã¿ã¹ã¯ãçµäºã 436 * ãï¼ 412 * 割込み優先度マスク(IPM)がTIPM_ENAALL以外の状態でext_tsk 413 * が呼ばれた場合は,IPMをTIPM_ENAALLにしてからタスクを終了す 414 * る. 437 415 */ 438 416 t_set_ipm(TIPM_ENAALL); … … 458 436 459 437 /* 460 * ã¿ã¹ã¯ã®å¼·å¶çµäº438 * タスクの強制終了 461 439 */ 462 440 #ifdef TOPPERS_ter_tsk … … 484 462 if (TSTAT_RUNNABLE(p_tcb->tstat)) { 485 463 /* 486 * p_tcbã¯èªã¿ã¹ã¯ã§ãªãããï¼ï¼ã·ã³ã°ã«ããã»ããµã§ã¯ï¼å® 487 * è¡ç¶æ 488 ã§ãªãï¼make_non_runnable(p_tcb)ã§ã¿ã¹ã¯ãã£ã¹ãã 489 * ããå¿ 490 è¦ã«ãªããã¨ã¯ãªãï¼ 464 * p_tcbは自タスクでないため,(シングルプロセッサでは)実 465 * 行状態でなく,make_non_runnable(p_tcb)でタスクディスパッ 466 * チが必要になることはない. 491 467 */ 492 468 (void) make_non_runnable(p_tcb); … … 515 491 516 492 /* 517 * ã¿ã¹ã¯ã®ãã¼ã¹åªå 518 度ã®å¤æ´ 493 * タスクのベース優先度の変更 519 494 */ 520 495 #ifdef TOPPERS_chg_pri … … 558 533 559 534 /* 560 * ã¿ã¹ã¯åªå 561 度ã®åç 562 § 535 * タスク優先度の参照 563 536 */ 564 537 #ifdef TOPPERS_get_pri … … 596 569 597 570 /* 598 * èªã¿ã¹ã¯ã®æ¡å¼µæ 599 å ±ã®åç 600 § 571 * 自タスクの拡張情報の参照 601 572 */ 602 573 #ifdef TOPPERS_get_inf -
Property svn:mime-type
changed from
-
rubycfg_asp/trunk/asp_dcre/kernel/task_refer.c
-
Property svn:mime-type
changed from
text/x-csrc
totext/x-csrc; charset=UTF-8
r313 r315 7 7 * Graduate School of Information Science, Nagoya Univ., JAPAN 8 8 * 9 * ä¸è¨èä½æ¨©è 10 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 11 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 12 * å¤ã»åé 13 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 14 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 15 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 16 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 17 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 18 * ç¨ã§ããå½¢ã§åé 19 å¸ããå ´åã«ã¯ï¼åé 20 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 21 * è 22 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 23 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 24 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 25 * ç¨ã§ããªãå½¢ã§åé 26 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 27 * ã¨ï¼ 28 * (a) åé 29 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 30 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 31 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 32 * (b) åé 33 å¸ã®å½¢æ 34 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 35 * å ±åãããã¨ï¼ 36 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 37 * 害ãããï¼ä¸è¨èä½æ¨©è 38 ããã³TOPPERSããã¸ã§ã¯ããå 39 責ãããã¨ï¼ 40 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 41 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 42 ããã³TOPPERSããã¸ã§ã¯ãã 43 * å 44 責ãããã¨ï¼ 45 * 46 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 47 ã 48 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 49 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 50 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 51 * ã®è²¬ä»»ãè² ããªãï¼ 9 * 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 10 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 11 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 12 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 13 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 14 * スコード中に含まれていること. 15 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 16 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 17 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 18 * の無保証規定を掲載すること. 19 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 20 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 21 * と. 22 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 23 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 24 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 25 * 報告すること. 26 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 27 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 28 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 29 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 30 * 免責すること. 31 * 32 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 33 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 34 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 35 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 36 * の責任を負わない. 52 37 * 53 38 * $Id$ … … 55 40 56 41 /* 57 * ã¿ã¹ã¯ã®ç¶æ 58 åç 59 §æ©è½ 42 * タスクの状態参照機能 60 43 */ 61 44 … … 73 56 74 57 /* 75 * ãã¬ã¼ã¹ãã°ãã¯ãã®ããã©ã«ãå®ç¾©58 * トレースログマクロのデフォルト定義 76 59 */ 77 60 #ifndef LOG_REF_TSK_ENTER … … 84 67 85 68 /* 86 * ã¿ã¹ã¯ã®ç¶æ 87 åç 88 § 69 * タスクの状態参照 89 70 */ 90 71 #ifdef TOPPERS_ref_tsk … … 110 91 if (TSTAT_DORMANT(tstat)) { 111 92 /* 112 * 対象ã¿ã¹ã¯ãä¼æ¢ç¶æ 113 ã®å ´å 93 * 対象タスクが休止状態の場合 114 94 */ 115 95 pk_rtsk->tskstat = TTS_DMT; … … 117 97 else { 118 98 /* 119 * ã¿ã¹ã¯ç¶æ 120 ã®ååºã 99 * タスク状態の取出し 121 100 */ 122 101 if (TSTAT_SUSPENDED(tstat)) { … … 139 118 140 119 /* 141 * ç¾å¨åªå 142 度ã¨ãã¼ã¹åªå 143 度ã®ååºã 120 * 現在優先度とベース優先度の取出し 144 121 */ 145 122 pk_rtsk->tskpri = EXT_TSKPRI(p_tcb->priority); … … 148 125 if (TSTAT_WAITING(tstat)) { 149 126 /* 150 * å¾ 151 ã¡è¦å ã¨å¾ 152 ã¡å¯¾è±¡ã®ãªãã¸ã§ã¯ãã®IDã®ååºã 127 * 待ち要因と待ち対象のオブジェクトのIDの取出し 153 128 */ 154 129 switch (tstat & TS_WAIT_MASK) { … … 202 177 203 178 /* 204 * ã¿ã¤ã ã¢ã¦ãããã¾ã§ã®æéã®ååºã179 * タイムアウトするまでの時間の取出し 205 180 */ 206 181 if (p_tcb->p_winfo->p_tmevtb != NULL) { … … 214 189 215 190 /* 216 * èµ·åºè¦æ±ãã¥ã¼ã¤ã³ã°æ°ã®ååºã191 * 起床要求キューイング数の取出し 217 192 */ 218 193 pk_rtsk->wupcnt = p_tcb->wupque ? 1U : 0U; … … 220 195 221 196 /* 222 * èµ·åè¦æ±ãã¥ã¼ã¤ã³ã°æ°ã®ååºã197 * 起動要求キューイング数の取出し 223 198 */ 224 199 pk_rtsk->actcnt = p_tcb->actque ? 1U : 0U; -
Property svn:mime-type
changed from
-
rubycfg_asp/trunk/asp_dcre/kernel/task_sync.c
-
Property svn:mime-type
changed from
text/x-csrc
totext/x-csrc; 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 * ã¿ã¹ã¯ä»å±åææ©è½44 * タスク付属同期機能 60 45 */ 61 46 … … 66 51 67 52 /* 68 * ãã¬ã¼ã¹ãã°ãã¯ãã®ããã©ã«ãå®ç¾©53 * トレースログマクロのデフォルト定義 69 54 */ 70 55 #ifndef LOG_SLP_TSK_ENTER … … 149 134 150 135 /* 151 * èµ·åºå¾ 152 ã¡ 136 * 起床待ち 153 137 */ 154 138 #ifdef TOPPERS_slp_tsk … … 185 169 186 170 /* 187 * èµ·åºå¾ 188 ã¡ï¼ã¿ã¤ã ã¢ã¦ãããï¼ 171 * 起床待ち(タイムアウトあり) 189 172 */ 190 173 #ifdef TOPPERS_tslp_tsk … … 226 209 227 210 /* 228 * ã¿ã¹ã¯ã®èµ·åº211 * タスクの起床 229 212 */ 230 213 #ifdef TOPPERS_wup_tsk … … 271 254 272 255 /* 273 * ã¿ã¹ã¯ã®èµ·åºï¼éã¿ã¹ã¯ã³ã³ããã¹ãç¨ï¼256 * タスクの起床(非タスクコンテキスト用) 274 257 */ 275 258 #ifdef TOPPERS_iwup_tsk … … 316 299 317 300 /* 318 * ã¿ã¹ã¯èµ·åºè¦æ±ã®ãã£ã³ã»ã«301 * タスク起床要求のキャンセル 319 302 */ 320 303 #ifdef TOPPERS_can_wup … … 352 335 353 336 /* 354 * å¾ 355 ã¡ç¶æ 356 ã®å¼·å¶è§£é¤ 337 * 待ち状態の強制解除 357 338 */ 358 339 #ifdef TOPPERS_rel_wai … … 392 373 393 374 /* 394 * å¾ 395 ã¡ç¶æ 396 ã®å¼·å¶è§£é¤ï¼éã¿ã¹ã¯ã³ã³ããã¹ãç¨ï¼ 375 * 待ち状態の強制解除(非タスクコンテキスト用) 397 376 */ 398 377 #ifdef TOPPERS_irel_wai … … 432 411 433 412 /* 434 * å¼·å¶å¾ 435 ã¡ç¶æ 436 ã¸ã®ç§»è¡ 413 * 強制待ち状態への移行 437 414 */ 438 415 #ifdef TOPPERS_sus_tsk … … 461 438 else if (TSTAT_RUNNABLE(p_tcb->tstat)) { 462 439 /* 463 * å®è¡ã§ããç¶æ 464 ããå¼·å¶å¾ 465 ã¡ç¶æ 466 ã¸ã®é·ç§» 440 * 実行できる状態から強制待ち状態への遷移 467 441 */ 468 442 p_tcb->tstat = TS_SUSPENDED; … … 478 452 else { 479 453 /* 480 * å¾ 481 ã¡ç¶æ 482 ããäºéå¾ 483 ã¡ç¶æ 484 ã¸ã®é·ç§» 454 * 待ち状態から二重待ち状態への遷移 485 455 */ 486 456 p_tcb->tstat |= TS_SUSPENDED; … … 498 468 499 469 /* 500 * å¼·å¶å¾ 501 ã¡ç¶æ 502 ããã®åé 470 * 強制待ち状態からの再開 503 471 */ 504 472 #ifdef TOPPERS_rsm_tsk … … 524 492 else if (!TSTAT_WAITING(p_tcb->tstat)) { 525 493 /* 526 * å¼·å¶å¾ 527 ã¡ç¶æ 528 ããå®è¡ã§ããç¶æ 529 ã¸ã®é·ç§» 494 * 強制待ち状態から実行できる状態への遷移 530 495 */ 531 496 p_tcb->tstat = TS_RUNNABLE; … … 538 503 else { 539 504 /* 540 * äºéå¾ 541 ã¡ç¶æ 542 ããå¾ 543 ã¡ç¶æ 544 ã¸ã®é·ç§» 505 * 二重待ち状態から待ち状態への遷移 545 506 */ 546 507 p_tcb->tstat &= ~TS_SUSPENDED; … … 558 519 559 520 /* 560 * èªã¿ã¹ã¯ã®é 561 延 521 * 自タスクの遅延 562 522 */ 563 523 #ifdef TOPPERS_dly_tsk -
Property svn:mime-type
changed from
-
rubycfg_asp/trunk/asp_dcre/kernel/time_event.c
-
Property svn:mime-type
changed from
text/x-csrc
totext/x-csrc; 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 * ã¿ã¤ã ã¤ãã³ã管çã¢ã¸ã¥ã¼ã«44 * タイムイベント管理モジュール 60 45 */ 61 46 … … 64 49 65 50 /* 66 * ã¿ã¤ã ã¤ãã³ããã¼ãæä½ãã¯ã67 */ 68 #define PARENT(index) ((index) >> 1) /* 親ãã¼ããæ±ãã*/69 #define LCHILD(index) ((index) << 1) /* å·¦ã®åãã¼ããæ±ãã*/51 * タイムイベントヒープ操作マクロ 52 */ 53 #define PARENT(index) ((index) >> 1) /* 親ノードを求める */ 54 #define LCHILD(index) ((index) << 1) /* 左の子ノードを求める */ 70 55 #define TMEVT_NODE(index) (tmevt_heap[(index) - 1]) 71 56 72 57 /* 73 * ã¤ãã³ãçºçæå»æ¯è¼ãã¯ã74 * 75 * ã¤ãã³ãçºçæå»ã¯ï¼min_timeããã®ç¸å¯¾å¤ã§æ¯è¼ããï¼ããªãã¡ï¼76 * min_time ãæå°å¤ï¼æãè¿ãæå»ï¼ï¼mit_time-1ãæ大å¤ï¼æãé ãæå»ï¼77 * ã¨ã¿ãªãã¦æ¯è¼ããï¼58 * イベント発生時刻比較マクロ 59 * 60 * イベント発生時刻は,min_timeからの相対値で比較する.すなわち, 61 * min_timeを最小値(最も近い時刻),mit_time-1が最大値(最も遠い時刻) 62 * とみなして比較する. 78 63 */ 79 64 #define EVTTIM_LT(t1, t2) (((t1) - min_time) < ((t2) - min_time)) … … 83 68 84 69 /* 85 * ç¾å¨ã®ã·ã¹ãã æå»ï¼åä½: 1ããªç§ï¼86 * 87 * å³å¯ã«ã¯ï¼åã®ã¿ã¤ã ãã£ãã¯ã®ã·ã¹ãã æå»ï¼70 * 現在のシステム時刻(単位: 1ミリ秒) 71 * 72 * 厳密には,前のタイムティックのシステム時刻. 88 73 */ 89 74 EVTTIM current_time; 90 75 91 76 /* 92 * ã¿ã¤ã ã¤ãã³ããã¼ãä¸ã§æå¹ãªæå°ã®ã·ã¹ãã æå»ï¼åä½: 1ããªç§ï¼77 * タイムイベントヒープ中で有効な最小のシステム時刻(単位: 1ミリ秒) 93 78 */ 94 79 EVTTIM min_time; 95 80 96 81 /* 97 * 次ã®ã¿ã¤ã ãã£ãã¯ã®ã·ã¹ãã æå»ï¼åä½: 1ããªç§ï¼82 * 次のタイムティックのシステム時刻(単位: 1ミリ秒) 98 83 */ 99 84 EVTTIM next_time; 100 85 101 86 /* 102 * ã·ã¹ãã æå»ç©ç®ç¨å¤æ°ï¼åä½: 1/TIC_DENOããªç§ï¼87 * システム時刻積算用変数(単位: 1/TIC_DENOミリ秒) 103 88 */ 104 89 #if TIC_DENO != 1U … … 107 92 108 93 /* 109 * ã¿ã¤ã ã¤ãã³ããã¼ãã®æå¾ã®ä½¿ç¨é åã®ã¤ã³ããã¯ã¹94 * タイムイベントヒープの最後の使用領域のインデックス 110 95 */ 111 96 uint_t last_index; 112 97 113 98 /* 114 * ã¿ã¤ãã¢ã¸ã¥ã¼ã«ã®åæå99 * タイマモジュールの初期化 115 100 */ 116 101 void … … 129 114 130 115 /* 131 * ã¿ã¤ã ã¤ãã³ãã®æ¿å 132 ¥ä½ç½®ãä¸åãã«æ¢ç´¢ 133 * 134 * æå»timeã«çºçããã¿ã¤ã ã¤ãã³ããæ¿å 135 ¥ãããã¼ãã空ããããã«ï¼ 136 * ãã¼ãã®ä¸ã«åãã£ã¦ç©ºãã¼ãã移åãããï¼ç§»ååã®ç©ºãã¼ãã®ä½ç½®ã 137 * indexã«æ¸¡ãã¨ï¼ç§»åå¾ã®ç©ºãã¼ãã®ä½ç½®ï¼ããªãã¡æ¿å 138 ¥ä½ç½®ï¼ãè¿ãï¼ 116 * タイムイベントの挿入位置を上向きに探索 117 * 118 * 時刻timeに発生するタイムイベントを挿入するノードを空けるために, 119 * ヒープの上に向かって空ノードを移動させる.移動前の空ノードの位置を 120 * indexに渡すと,移動後の空ノードの位置(すなわち挿入位置)を返す. 139 121 */ 140 122 #ifdef TOPPERS_tmeup … … 147 129 while (index > 1) { 148 130 /* 149 * 親ãã¼ãã®ã¤ãã³ãçºçæå»ã®æ¹ãæ©ãï¼ã¾ãã¯åãï¼ãªãã°ï¼ 150 * indexãæ¿å 151 ¥ä½ç½®ãªã®ã§ã«ã¼ããæããï¼ 131 * 親ノードのイベント発生時刻の方が早い(または同じ)ならば, 132 * indexが挿入位置なのでループを抜ける. 152 133 */ 153 134 parent = PARENT(index); … … 157 138 158 139 /* 159 * 親ãã¼ããindexã®ä½ç½®ã«ç§»åãããï¼140 * 親ノードをindexの位置に移動させる. 160 141 */ 161 142 TMEVT_NODE(index) = TMEVT_NODE(parent); … … 163 144 164 145 /* 165 * index ã親ãã¼ãã®ä½ç½®ã«æ´æ°ï¼146 * indexを親ノードの位置に更新. 166 147 */ 167 148 index = parent; … … 173 154 174 155 /* 175 * ã¿ã¤ã ã¤ãã³ãã®æ¿å 176 ¥ä½ç½®ãä¸åãã«æ¢ç´¢ 177 * 178 * æå»timeã«çºçããã¿ã¤ã ã¤ãã³ããæ¿å 179 ¥ãããã¼ãã空ããããã«ï¼ 180 * ãã¼ãã®ä¸ã«åãã£ã¦ç©ºãã¼ãã移åãããï¼ç§»ååã®ç©ºãã¼ãã®ä½ç½®ã 181 * indexã«æ¸¡ãã¨ï¼ç§»åå¾ã®ç©ºãã¼ãã®ä½ç½®ï¼ããªãã¡æ¿å 182 ¥ä½ç½®ï¼ãè¿ãï¼ 156 * タイムイベントの挿入位置を下向きに探索 157 * 158 * 時刻timeに発生するタイムイベントを挿入するノードを空けるために, 159 * ヒープの下に向かって空ノードを移動させる.移動前の空ノードの位置を 160 * indexに渡すと,移動後の空ノードの位置(すなわち挿入位置)を返す. 183 161 */ 184 162 #ifdef TOPPERS_tmedown … … 191 169 while ((child = LCHILD(index)) <= last_index) { 192 170 /* 193 * å·¦å³ã®åãã¼ãã®ã¤ãã³ãçºçæå»ãæ¯è¼ãï¼æ©ãæ¹ã®åãã¼ã194 * ã®ä½ç½®ãchildã«è¨å®ããï¼ä»¥ä¸ã®åãã¼ãã¯ï¼ããã§é¸ã°ããæ¹195 * ã®åãã¼ãã®ãã¨ï¼171 * 左右の子ノードのイベント発生時刻を比較し,早い方の子ノード 172 * の位置をchildに設定する.以下の子ノードは,ここで選ばれた方 173 * の子ノードのこと. 196 174 */ 197 175 if (child + 1 <= last_index … … 202 180 203 181 /* 204 * åãã¼ãã®ã¤ãã³ãçºçæå»ã®æ¹ãé 205 ãï¼ã¾ãã¯åãï¼ãªãã°ï¼ 206 * indexãæ¿å 207 ¥ä½ç½®ãªã®ã§ã«ã¼ããæããï¼ 182 * 子ノードのイベント発生時刻の方が遅い(または同じ)ならば, 183 * indexが挿入位置なのでループを抜ける. 208 184 */ 209 185 if (EVTTIM_LE(time, TMEVT_NODE(child).time)) { … … 212 188 213 189 /* 214 * åãã¼ããindexã®ä½ç½®ã«ç§»åãããï¼190 * 子ノードをindexの位置に移動させる. 215 191 */ 216 192 TMEVT_NODE(index) = TMEVT_NODE(child); … … 218 194 219 195 /* 220 * index ãåãã¼ãã®ä½ç½®ã«æ´æ°ï¼196 * indexを子ノードの位置に更新. 221 197 */ 222 198 index = child; … … 228 204 229 205 /* 230 * ã¿ã¤ã ã¤ãã³ããã¼ãã¸ã®ç»é²231 * 232 * p_tmevtb ã§æå®ããã¿ã¤ã ã¤ãã³ããããã¯ãï¼timeã§æå®ããæéãçµ233 * éå¾ã«ã¤ãã³ããçºçããããã«ï¼ã¿ã¤ã ã¤ãã³ããã¼ãã«ç»é²ããï¼206 * タイムイベントヒープへの登録 207 * 208 * p_tmevtbで指定したタイムイベントブロックを,timeで指定した時間が経 209 * 過後にイベントが発生するように,タイムイベントヒープに登録する. 234 210 */ 235 211 #ifdef TOPPERS_tmeins … … 241 217 242 218 /* 243 * last_indexãã¤ã³ã¯ãªã¡ã³ããï¼ããããä¸ã«æ¿å 244 ¥ä½ç½®ãæ¢ãï¼ 219 * last_indexをインクリメントし,そこから上に挿入位置を探す. 245 220 */ 246 221 index = tmevt_up(++last_index, time); 247 222 248 223 /* 249 * ã¿ã¤ã ã¤ãã³ããindexã®ä½ç½®ã«æ¿å 250 ¥ããï¼ 224 * タイムイベントをindexの位置に挿入する. 251 225 */ 252 226 TMEVT_NODE(index).time = time; … … 258 232 259 233 /* 260 * ã¿ã¤ã ã¤ãã³ããã¼ãããã®åé¤234 * タイムイベントヒープからの削除 261 235 */ 262 236 #ifdef TOPPERS_tmedel … … 270 244 271 245 /* 272 * åé¤ã«ããã¿ã¤ã ã¤ãã³ããã¼ãã空ã«ãªãå ´åã¯ä½ãããªãï¼246 * 削除によりタイムイベントヒープが空になる場合は何もしない. 273 247 */ 274 248 if (--last_index == 0) { … … 277 251 278 252 /* 279 * åé¤ãããã¼ãã®ä½ç½®ã«æå¾ã®ãã¼ãï¼last_index+1ã®ä½ç½®ã®ãã¼ãï¼ 280 * ãæ¿å 281 ¥ãï¼ãããé©åãªä½ç½®ã¸ç§»åãããï¼å®éã«ã¯ï¼æå¾ã®ãã¼ã 282 * ãå®éã«æ¿å 283 ¥ããã®ã§ã¯ãªãï¼åé¤ãããã¼ãã®ä½ç½®ã空ãã¼ãã«ãª 284 * ãã®ã§ï¼æå¾ã®ãã¼ããæ¿å 285 ¥ãã¹ãä½ç½®ã¸åãã¦ç©ºãã¼ãã移åãã 286 * ãï¼ 287 * æå¾ã®ãã¼ãã®ã¤ãã³ãçºçæå»ãï¼åé¤ãããã¼ãã®è¦ªãã¼ãã®ã¤ 288 * ãã³ãçºçæå»ããåã®å ´åã«ã¯ï¼ä¸ã«åãã£ã¦æ¿å 289 ¥ä½ç½®ãæ¢ãï¼ã 290 * ãã§ãªãå ´åã«ã¯ï¼ä¸ã«åãã£ã¦æ¢ãï¼ 253 * 削除したノードの位置に最後のノード(last_index+1の位置のノード) 254 * を挿入し,それを適切な位置へ移動させる.実際には,最後のノード 255 * を実際に挿入するのではなく,削除したノードの位置が空ノードにな 256 * るので,最後のノードを挿入すべき位置へ向けて空ノードを移動させ 257 * る. 258 * 最後のノードのイベント発生時刻が,削除したノードの親ノードのイ 259 * ベント発生時刻より前の場合には,上に向かって挿入位置を探す.そ 260 * うでない場合には,下に向かって探す. 291 261 */ 292 262 if (index > 1 && EVTTIM_LT(event_time, 293 263 TMEVT_NODE(parent = PARENT(index)).time)) { 294 264 /* 295 * 親ãã¼ããindexã®ä½ç½®ã«ç§»åãããï¼265 * 親ノードをindexの位置に移動させる. 296 266 */ 297 267 TMEVT_NODE(index) = TMEVT_NODE(parent); … … 299 269 300 270 /* 301 * åé¤ãããã¼ãã®è¦ªãã¼ãããä¸ã«åãã£ã¦æ¿å 302 ¥ä½ç½®ãæ¢ãï¼ 271 * 削除したノードの親ノードから上に向かって挿入位置を探す. 303 272 */ 304 273 index = tmevt_up(parent, event_time); … … 306 275 else { 307 276 /* 308 * åé¤ãããã¼ãããä¸ã«åãã£ã¦æ¿å 309 ¥ä½ç½®ãæ¢ãï¼ 277 * 削除したノードから下に向かって挿入位置を探す. 310 278 */ 311 279 index = tmevt_down(index, event_time); … … 313 281 314 282 /* 315 * æå¾ã®ãã¼ããindexã®ä½ç½®ã«æ¿å 316 ¥ããï¼ 283 * 最後のノードをindexの位置に挿入する. 317 284 */ 318 285 TMEVT_NODE(index) = TMEVT_NODE(last_index + 1); … … 323 290 324 291 /* 325 * ã¿ã¤ã ã¤ãã³ããã¼ãã®å 326 é ã®ãã¼ãã®åé¤ 292 * タイムイベントヒープの先頭のノードの削除 327 293 */ 328 294 Inline void … … 333 299 334 300 /* 335 * åé¤ã«ããã¿ã¤ã ã¤ãã³ããã¼ãã空ã«ãªãå ´åã¯ä½ãããªãï¼301 * 削除によりタイムイベントヒープが空になる場合は何もしない. 336 302 */ 337 303 if (--last_index == 0) { … … 340 306 341 307 /* 342 * ã«ã¼ããã¼ãã«æå¾ã®ãã¼ãï¼last_index + 1 ã®ä½ç½®ã®ãã¼ãï¼ã 343 * æ¿å 344 ¥ãï¼ãããé©åãªä½ç½®ã¸ç§»åãããï¼å®éã«ã¯ï¼æå¾ã®ãã¼ãã 345 * å®éã«æ¿å 346 ¥ããã®ã§ã¯ãªãï¼ã«ã¼ããã¼ãã空ãã¼ãã«ãªãã®ã§ï¼æ 347 * å¾ã®ãã¼ããæ¿å 348 ¥ãã¹ãä½ç½®ã¸åãã¦ç©ºãã¼ãã移åãããï¼ 308 * ルートノードに最後のノード(last_index + 1 の位置のノード)を 309 * 挿入し,それを適切な位置へ移動させる.実際には,最後のノードを 310 * 実際に挿入するのではなく,ルートノードが空ノードになるので,最 311 * 後のノードを挿入すべき位置へ向けて空ノードを移動させる. 349 312 */ 350 313 index = tmevt_down(1, event_time); 351 314 352 315 /* 353 * æå¾ã®ãã¼ããindexã®ä½ç½®ã«æ¿å 354 ¥ããï¼ 316 * 最後のノードをindexの位置に挿入する. 355 317 */ 356 318 TMEVT_NODE(index) = TMEVT_NODE(last_index + 1); … … 359 321 360 322 /* 361 * ã¿ã¤ã ã¤ãã³ãã¾ã§ã®æ®ãæéã®è¨ç®323 * タイムイベントまでの残り時間の計算 362 324 */ 363 325 #ifdef TOPPERS_tmeltim … … 371 333 if (EVTTIM_LE(time, next_time)) { 372 334 /* 373 * 次ã®ã¿ã¤ã ãã£ãã¯ã§å¦çãããå ´åã«ã¯0ãè¿ãï¼335 * 次のタイムティックで処理される場合には0を返す. 374 336 */ 375 337 return(0U); … … 383 345 384 346 /* 385 * ã¿ã¤ã ãã£ãã¯ã®ä¾çµ¦347 * タイムティックの供給 386 348 */ 387 349 #ifdef TOPPERS_sigtim … … 398 360 399 361 /* 400 * current_time ãæ´æ°ããï¼362 * current_timeを更新する. 401 363 */ 402 364 current_time = next_time; 403 365 404 366 /* 405 * next_time ï¼next_subtimeãæ´æ°ããï¼367 * next_time,next_subtimeを更新する. 406 368 */ 407 369 #if TIC_DENO == 1U … … 417 379 418 380 /* 419 * current_time ããã¤ãã³ãçºçæå»ã®æ©ãï¼ã¾ãã¯åãï¼ã¿ã¤ã ã¤ã420 * ã³ããï¼ã¿ã¤ã ã¤ãã³ããã¼ãããåé¤ãï¼ã³ã¼ã«ããã¯é¢æ°ãå¼ã³421 * åºãï¼381 * current_timeよりイベント発生時刻の早い(または同じ)タイムイベ 382 * ントを,タイムイベントヒープから削除し,コールバック関数を呼び 383 * 出す. 422 384 */ 423 385 while (last_index > 0 && EVTTIM_LE(TMEVT_NODE(1).time, current_time)) { … … 428 390 429 391 /* 430 * min_time ãæ´æ°ããï¼392 * min_timeを更新する. 431 393 */ 432 394 min_time = current_time; -
Property svn:mime-type
changed from
-
rubycfg_asp/trunk/asp_dcre/kernel/time_event.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 責ãããã¨ï¼ 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 * ã¿ã¤ã ã¤ãã³ã管çã¢ã¸ã¥ã¼ã«44 * タイムイベント管理モジュール 60 45 */ 61 46 … … 64 49 65 50 /* 66 * ã¤ãã³ãçºçæå»ã®ãã¼ã¿åã®å®ç¾© 67 * 68 * EVTTIMã¯ï¼RELTIMã¨ãã¦æå®ã§ããç¯å²ãããåºãç¯å²ã表ç¾ã§ããå¿ 69 è¦ 70 * ãããï¼Î¼ITRON4.0ä»æ§ã®ã¹ã¿ã³ãã¼ããããã¡ã¤ã«ã§ã¯ï¼RELTIMã16ãã 71 * ã以ä¸ã§ãªããã°ãªããªãããï¼EVTTIMã¯17ããã以ä¸ã§ãããã¨ãå¿ 72 è¦ 73 * ã§ããï¼ãã®ããï¼16ãããã«ãªãå ´åãããuint_tã§ã¯ãªãï¼ulong_tã« 74 * å®ç¾©ãã¦ããï¼ 51 * イベント発生時刻のデータ型の定義 52 * 53 * EVTTIMは,RELTIMとして指定できる範囲よりも広い範囲を表現できる必要 54 * がある.μITRON4.0仕様のスタンダードプロファイルでは,RELTIMが16ビッ 55 * ト以上でなければならないため,EVTTIMは17ビット以上であることが必要 56 * である.そのため,16ビットになる場合があるuint_tではなく,ulong_tに 57 * 定義している. 75 58 */ 76 59 typedef ulong_t EVTTIM; 77 60 78 61 /* 79 * ã¿ã¤ã ã¤ãã³ããããã¯ã®ãã¼ã¿åã®å®ç¾©80 */ 81 typedef void (*CBACK)(void *); /* ã³ã¼ã«ããã¯é¢æ°ã®å*/62 * タイムイベントブロックのデータ型の定義 63 */ 64 typedef void (*CBACK)(void *); /* コールバック関数の型 */ 82 65 83 66 typedef struct time_event_block { 84 uint_t index; /* ã¿ã¤ã ã¤ãã³ããã¼ãä¸ã§ã®ä½ç½®*/85 CBACK callback; /* ã³ã¼ã«ããã¯é¢æ°*/86 void *arg; /* ã³ã¼ã«ããã¯é¢æ°ã¸æ¸¡ãå¼æ°*/67 uint_t index; /* タイムイベントヒープ中での位置 */ 68 CBACK callback; /* コールバック関数 */ 69 void *arg; /* コールバック関数へ渡す引数 */ 87 70 } TMEVTB; 88 71 89 72 /* 90 * ã¿ã¤ã ã¤ãã³ããã¼ãä¸ã®ãã¼ãã®ãã¼ã¿åã®å®ç¾©73 * タイムイベントヒープ中のノードのデータ型の定義 91 74 */ 92 75 typedef struct time_event_node { 93 EVTTIM time; /* ã¤ãã³ãçºçæå»*/94 TMEVTB *p_tmevtb; /* 対å¿ããã¿ã¤ã ã¤ãã³ããããã¯*/76 EVTTIM time; /* イベント発生時刻 */ 77 TMEVTB *p_tmevtb; /* 対応するタイムイベントブロック */ 95 78 } TMEVTN; 96 79 97 80 /* 98 * ã¿ã¤ã ã¤ãã³ããã¼ãï¼kernel_cfg.cï¼81 * タイムイベントヒープ(kernel_cfg.c) 99 82 */ 100 83 extern TMEVTN tmevt_heap[]; 101 84 102 85 /* 103 * ç¾å¨ã®ã·ã¹ãã æå»ï¼åä½: 1ããªç§ï¼104 * 105 * ã·ã¹ãã èµ·åæã«0ã«åæåããï¼ä»¥éï¼ã¿ã¤ã ãã£ãã¯ãä¾çµ¦ããã度ã«106 * å調ã«å¢å ããï¼86 * 現在のシステム時刻(単位: 1ミリ秒) 87 * 88 * システム起動時に0に初期化され,以降,タイムティックが供給される度に 89 * 単調に増加する. 107 90 */ 108 91 extern EVTTIM current_time; 109 92 110 93 /* 111 * ã¿ã¤ã ã¤ãã³ããã¼ãä¸ã§æå¹ãªæå°ã®ã·ã¹ãã æå»ï¼åä½: 1ããªç§ï¼94 * タイムイベントヒープ中で有効な最小のシステム時刻(単位: 1ミリ秒) 112 95 */ 113 96 extern EVTTIM min_time; 114 97 115 98 /* 116 * 次ã®ã¿ã¤ã ãã£ãã¯ã®ã·ã¹ãã æå»ï¼åä½: 1ããªç§ï¼99 * 次のタイムティックのシステム時刻(単位: 1ミリ秒) 117 100 */ 118 101 extern EVTTIM next_time; 119 102 120 103 /* 121 * ã·ã¹ãã æå»ç©ç®ç¨å¤æ°ï¼åä½: 1/TIC_DENOããªç§ï¼ 122 * 123 * 次ã®ã¿ã¤ã ãã£ãã¯ã®ã·ã¹ãã æå»ã®ä¸ä½æ¡ã示ãï¼ä¸ä½æ¡ã¯next_timeï¼ï¼ 124 * TIC_DENOã1ã®æã¯ï¼ä¸ä½æ¡ã¯å¸¸ã«0ã§ããããï¼ãã®å¤æ°ã¯å¿ 125 è¦ãªãï¼ 104 * システム時刻積算用変数(単位: 1/TIC_DENOミリ秒) 105 * 106 * 次のタイムティックのシステム時刻の下位桁を示す(上位桁はnext_time). 107 * TIC_DENOが1の時は,下位桁は常に0であるため,この変数は必要ない. 126 108 */ 127 109 #if TIC_DENO != 1U … … 130 112 131 113 /* 132 * ç¸å¯¾æéã®åºæºæå»ï¼åä½: 1ããªç§ï¼133 * 134 * 次ã®ã¿ã¤ã ãã£ãã¯ã®ã·ã¹ãã æå»ãåãä¸ããæå»ï¼TIC_DENOã1ã®æ135 * ã¯ï¼next_timeã«ä¸è´ããï¼114 * 相対時間の基準時刻(単位: 1ミリ秒) 115 * 116 * 次のタイムティックのシステム時刻を切り上げた時刻.TIC_DENOが1の時 117 * は,next_timeに一致する. 136 118 */ 137 119 #if TIC_DENO == 1U … … 142 124 143 125 /* 144 * ã¿ã¤ã ã¤ãã³ããã¼ãã®æå¾ã®ä½¿ç¨é åã®ã¤ã³ããã¯ã¹145 * 146 * ã¿ã¤ã ã¤ãã³ããã¼ãã«ç»é²ããã¦ããã¿ã¤ã ã¤ãã³ãã®æ°ã«ä¸è´ããï¼126 * タイムイベントヒープの最後の使用領域のインデックス 127 * 128 * タイムイベントヒープに登録されているタイムイベントの数に一致する. 147 129 */ 148 130 extern uint_t last_index; 149 131 150 132 /* 151 * ã¿ã¤ã ã¤ãã³ã管çã¢ã¸ã¥ã¼ã«ã®åæå133 * タイムイベント管理モジュールの初期化 152 134 */ 153 135 extern void initialize_tmevt(void); 154 136 155 137 /* 156 * ã¿ã¤ã ã¤ãã³ãã®æ¿å 157 ¥ä½ç½®ã®æ¢ç´¢ 138 * タイムイベントの挿入位置の探索 158 139 */ 159 140 extern uint_t tmevt_up(uint_t index, EVTTIM time); … … 161 142 162 143 /* 163 * ã¿ã¤ã ã¤ãã³ããã¼ãã¸ã®ç»é²ã¨åé¤144 * タイムイベントヒープへの登録と削除 164 145 */ 165 146 extern void tmevtb_insert(TMEVTB *p_tmevtb, EVTTIM time); … … 167 148 168 149 /* 169 * ã¿ã¤ã ã¤ãã³ããããã¯ã®ç»é²ï¼ç¸å¯¾æéæå®ï¼170 * 171 * time ã§æå®ããç¸å¯¾æéãçµéããå¾ã«ï¼argãå¼æ°ã¨ãã¦callbackãå¼172 * ã³åºãããããã«ï¼p_tmevtbã§æå®ããã¿ã¤ã ã¤ãã³ããããã¯ãç»é²ã173 * ãï¼150 * タイムイベントブロックの登録(相対時間指定) 151 * 152 * timeで指定した相対時間が経過した後に,argを引数としてcallbackが呼 153 * び出されるように,p_tmevtbで指定したタイムイベントブロックを登録す 154 * る. 174 155 * 175 156 */ … … 185 166 186 167 /* 187 * ã¿ã¤ã ã¤ãã³ããããã¯ã®ç»é²ï¼ã¤ãã³ãçºçæå»æå®ï¼188 * 189 * time ã§æå®ããã¤ãã³ãçºçæå»ã«ï¼argãå¼æ°ã¨ãã¦callbackãå¼ã³åº190 * ãããããã«ï¼p_tmevtbã§æå®ããã¿ã¤ã ã¤ãã³ããããã¯ãç»é²ããï¼168 * タイムイベントブロックの登録(イベント発生時刻指定) 169 * 170 * timeで指定したイベント発生時刻に,argを引数としてcallbackが呼び出 171 * されるように,p_tmevtbで指定したタイムイベントブロックを登録する. 191 172 */ 192 173 Inline void … … 199 180 200 181 /* 201 * ã¿ã¤ã ã¤ãã³ããããã¯ã®ç»é²è§£é¤182 * タイムイベントブロックの登録解除 202 183 */ 203 184 Inline void … … 208 189 209 190 /* 210 * ã¿ã¤ã ã¤ãã³ãã¾ã§ã®æ®ãæéã®è¨ç®191 * タイムイベントまでの残り時間の計算 211 192 */ 212 193 extern RELTIM tmevt_lefttim(TMEVTB *p_tmevtb); 213 194 214 195 /* 215 * ã¿ã¤ã ãã£ãã¯ã®ä¾çµ¦196 * タイムティックの供給 216 197 */ 217 198 extern void signal_time(void); -
Property svn:mime-type
changed from
-
rubycfg_asp/trunk/asp_dcre/kernel/time_manage.c
-
Property svn:mime-type
changed from
text/x-csrc
totext/x-csrc; 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 * ã·ã¹ãã æå»ç®¡çæ©è½44 * システム時刻管理機能 60 45 */ 61 46 … … 65 50 66 51 /* 67 * ãã¬ã¼ã¹ãã°ãã¯ãã®ããã©ã«ãå®ç¾©52 * トレースログマクロのデフォルト定義 68 53 */ 69 54 #ifndef LOG_GET_TIM_ENTER … … 84 69 85 70 /* 86 * ã·ã¹ãã æå»ã®åç 87 § 71 * システム時刻の参照 88 72 */ 89 73 #ifdef TOPPERS_get_tim … … 110 94 111 95 /* 112 * æ§è½è©ä¾¡ç¨ã·ã¹ãã æå»ã®åç 113 § 96 * 性能評価用システム時刻の参照 114 97 */ 115 98 #ifdef TOPPERS_get_utm -
Property svn:mime-type
changed from
-
rubycfg_asp/trunk/asp_dcre/kernel/wait.c
-
Property svn:mime-type
changed from
text/x-csrc
totext/x-csrc; 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 責ãããã¨ï¼ 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 * å¾ 60 ã¡ç¶æ 61 管çã¢ã¸ã¥ã¼ã« 44 * 待ち状態管理モジュール 62 45 */ 63 46 … … 66 49 67 50 /* 68 * å¾ 69 ã¡ç¶æ 70 ã¸ã®é·ç§»ï¼ã¿ã¤ã ã¢ã¦ãæå®ï¼ 51 * 待ち状態への遷移(タイムアウト指定) 71 52 */ 72 53 #ifdef TOPPERS_waimake … … 91 72 92 73 /* 93 * å¾ 94 ã¡è§£é¤ 74 * 待ち解除 95 75 */ 96 76 #ifdef TOPPERS_waicmp … … 107 87 108 88 /* 109 * ã¿ã¤ã ã¢ã¦ãã«ä¼´ãå¾ 110 ã¡è§£é¤ 89 * タイムアウトに伴う待ち解除 111 90 */ 112 91 #ifdef TOPPERS_waitmo … … 122 101 123 102 /* 124 * ããã§åªå 125 度ã®é«ãå²è¾¼ã¿ãåãä»ããï¼ 103 * ここで優先度の高い割込みを受け付ける. 126 104 */ 127 105 i_unlock_cpu(); … … 141 119 142 120 /* 143 * ããã§åªå 144 度ã®é«ãå²è¾¼ã¿ãåãä»ããï¼ 121 * ここで優先度の高い割込みを受け付ける. 145 122 */ 146 123 i_unlock_cpu(); … … 151 128 152 129 /* 153 * å¾ 154 ã¡ç¶æ 155 ã®å¼·å¶è§£é¤ 130 * 待ち状態の強制解除 156 131 */ 157 132 #ifdef TOPPERS_wairel … … 169 144 170 145 /* 171 * å®è¡ä¸ã®ã¿ã¹ã¯ã®åæã»éä¿¡ãªãã¸ã§ã¯ãã®å¾ 172 ã¡ãã¥ã¼ã¸ã®æ¿å 173 ¥ 146 * 実行中のタスクの同期・通信オブジェクトの待ちキューへの挿入 174 147 * 175 * å®è¡ä¸ã®ã¿ã¹ã¯ãï¼åæã»éä¿¡ãªãã¸ã§ã¯ãã®å¾ 176 ã¡ãã¥ã¼ã¸æ¿å 177 ¥ããï¼ãª 178 * ãã¸ã§ã¯ãã®å±æ§ã«å¿ãã¦ï¼FIFOé ã¾ãã¯ã¿ã¹ã¯åªå 179 度é ã§æ¿å 180 ¥ããï¼ 148 * 実行中のタスクを,同期・通信オブジェクトの待ちキューへ挿入する.オ 149 * ブジェクトの属性に応じて,FIFO順またはタスク優先度順で挿入する. 181 150 */ 182 151 Inline void … … 192 161 193 162 /* 194 * åæã»éä¿¡ãªãã¸ã§ã¯ãã«å¯¾ããå¾ 195 ã¡ç¶æ 196 ã¸ã®é·ç§» 163 * 同期・通信オブジェクトに対する待ち状態への遷移 197 164 */ 198 165 #ifdef TOPPERS_wobjwai … … 223 190 224 191 /* 225 * å¾ 226 ã¡ãã¥ã¼ã®åæå 192 * 待ちキューの初期化 227 193 */ 228 194 #ifdef TOPPERS_iniwque -
Property svn:mime-type
changed from
-
rubycfg_asp/trunk/asp_dcre/kernel/wait.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 責ãããã¨ï¼ 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 * å¾ 60 ã¡ç¶æ 61 管çã¢ã¸ã¥ã¼ã« 44 * 待ち状態管理モジュール 62 45 */ 63 46 … … 69 52 70 53 /* 71 * ã¿ã¹ã¯ã®åªå 72 度é ã®å¾ 73 ã¡ãã¥ã¼ã¸ã®æ¿å 74 ¥ 75 * 76 * p_tcbã§æå®ãããã¿ã¹ã¯ãï¼ã¿ã¹ã¯åªå 77 度é ã®ãã¥ã¼p_queueã«æ¿å 78 ¥ããï¼ 79 * ãã¥ã¼ã®ä¸ã«åãåªå 80 度ã®ã¿ã¹ã¯ãããå ´åã«ã¯ï¼ãã®æå¾ã«æ¿å 81 ¥ããï¼ 54 * タスクの優先度順の待ちキューへの挿入 55 * 56 * p_tcbで指定されるタスクを,タスク優先度順のキューp_queueに挿入する. 57 * キューの中に同じ優先度のタスクがある場合には,その最後に挿入する. 82 58 */ 83 59 Inline void … … 97 73 98 74 /* 99 * å¾ 100 ã¡ç¶æ 101 ã¸ã®é·ç§» 102 * 103 * å®è¡ä¸ã®ã¿ã¹ã¯ãå¾ 104 ã¡ç¶æ 105 ã«é·ç§»ãããï¼å 106 ·ä½çã«ã¯ï¼å®è¡ä¸ã®ã¿ã¹ã¯ã 107 * ã¬ãã£ãã¥ã¼ããåé¤ãï¼TCBã®p_winfoãã£ã¼ã«ãï¼WINFOã®p_tmevtbãã£ã¼ 108 * ã«ããè¨å®ããï¼ 75 * 待ち状態への遷移 76 * 77 * 実行中のタスクを待ち状態に遷移させる.具体的には,実行中のタスクを 78 * レディキューから削除し,TCBのp_winfoフィールド,WINFOのp_tmevtbフィー 79 * ルドを設定する. 109 80 */ 110 81 Inline void … … 117 88 118 89 /* 119 * å¾ 120 ã¡ç¶æ 121 ã¸ã®é·ç§»ï¼ã¿ã¤ã ã¢ã¦ãæå®ï¼ 122 * 123 * å®è¡ä¸ã®ã¿ã¹ã¯ãï¼ã¿ã¤ã ã¢ã¦ãæå®ä»ãã§å¾ 124 ã¡ç¶æ 125 ã«é·ç§»ãããï¼å 126 ·ä½ 127 * çã«ã¯ï¼å®è¡ä¸ã®ã¿ã¹ã¯ãã¬ãã£ãã¥ã¼ããåé¤ãï¼TCBã®p_winfoãã£ã¼ 128 * ã«ãï¼WINFOã®p_tmevtbãã£ã¼ã«ããè¨å®ããï¼ã¾ãï¼ã¿ã¤ã ã¤ãã³ãã 129 * ããã¯ãç»é²ããï¼ 90 * 待ち状態への遷移(タイムアウト指定) 91 * 92 * 実行中のタスクを,タイムアウト指定付きで待ち状態に遷移させる.具体 93 * 的には,実行中のタスクをレディキューから削除し,TCBのp_winfoフィー 94 * ルド,WINFOのp_tmevtbフィールドを設定する.また,タイムイベントブ 95 * ロックを登録する. 130 96 */ 131 97 extern void make_wait_tmout(WINFO *p_winfo, TMEVTB *p_tmevtb, TMO tmout); 132 98 133 99 /* 134 * å¾ 135 ã¡è§£é¤ã®ããã®ã¿ã¹ã¯ç¶æ 136 ã®æ´æ° 137 * 138 * p_tcbã§æå®ãããã¿ã¹ã¯ãï¼å¾ 139 ã¡è§£é¤ããããã¿ã¹ã¯ç¶æ 140 ãæ´æ°ããï¼ 141 * å¾ 142 ã¡è§£é¤ããã¿ã¹ã¯ãå®è¡ã§ããç¶æ 143 ã«ãªãå ´åã¯ï¼ã¬ãã£ãã¥ã¼ã«ã¤ãª 144 * ãï¼ã¾ãï¼ãã£ã¹ããããå¿ 145 è¦ãªå ´åã«ã¯trueãè¿ãï¼ 100 * 待ち解除のためのタスク状態の更新 101 * 102 * p_tcbで指定されるタスクを,待ち解除するようタスク状態を更新する. 103 * 待ち解除するタスクが実行できる状態になる場合は,レディキューにつな 104 * ぐ.また,ディスパッチが必要な場合にはtrueを返す. 146 105 */ 147 106 Inline bool_t … … 152 111 if (!TSTAT_SUSPENDED(p_tcb->tstat)) { 153 112 /* 154 * å¾ 155 ã¡ç¶æ 156 ããå®è¡ã§ããç¶æ 157 ã¸ã®é·ç§» 113 * 待ち状態から実行できる状態への遷移 158 114 */ 159 115 p_tcb->tstat = TS_RUNNABLE; … … 163 119 else { 164 120 /* 165 * äºéå¾ 166 ã¡ç¶æ 167 ããå¼·å¶å¾ 168 ã¡ç¶æ 169 ã¸ã®é·ç§» 121 * 二重待ち状態から強制待ち状態への遷移 170 122 */ 171 123 p_tcb->tstat = TS_SUSPENDED; … … 176 128 177 129 /* 178 * ãªãã¸ã§ã¯ãå¾ 179 ã¡ãã¥ã¼ããã®åé¤ 180 * 181 * p_tcbã§æå®ãããã¿ã¹ã¯ãï¼åæã»éä¿¡ãªãã¸ã§ã¯ãã®å¾ 182 ã¡ãã¥ã¼ã«ã¤ 183 * ãªããã¦ããã°ï¼å¾ 184 ã¡ãã¥ã¼ããåé¤ããï¼ 130 * オブジェクト待ちキューからの削除 131 * 132 * p_tcbで指定されるタスクが,同期・通信オブジェクトの待ちキューにつ 133 * ながれていれば,待ちキューから削除する. 185 134 */ 186 135 Inline void … … 193 142 194 143 /* 195 * æéå¾ 196 ã¡ã®ããã®ã¿ã¤ã ã¤ãã³ããããã¯ã®ç»é²è§£é¤ 197 * 198 * p_tcbã§æå®ãããã¿ã¹ã¯ã«å¯¾ãã¦ï¼æéå¾ 199 ã¡ã®ããã®ã¿ã¤ã ã¤ãã³ãã 200 * ããã¯ãç»é²ããã¦ããã°ï¼ãããç»é²è§£é¤ããï¼ 144 * 時間待ちのためのタイムイベントブロックの登録解除 145 * 146 * p_tcbで指定されるタスクに対して,時間待ちのためのタイムイベントブ 147 * ロックが登録されていれば,それを登録解除する. 201 148 */ 202 149 Inline void … … 209 156 210 157 /* 211 * å¾ 212 ã¡è§£é¤ 213 * 214 * p_tcbã§æå®ãããã¿ã¹ã¯ã®å¾ 215 ã¡ç¶æ 216 ã解é¤ããï¼å 217 ·ä½çã«ã¯ï¼ã¿ã¤ã 㤠218 * ãã³ããããã¯ãç»é²ããã¦ããã°ï¼ãããç»é²è§£é¤ããï¼ã¾ãï¼ã¿ã¹ã¯ 219 * ç¶æ 220 ãæ´æ°ãï¼å¾ 221 ã¡è§£é¤ããã¿ã¹ã¯ããã®è¿å¤ãE_OKã¨ããï¼å¾ 222 ã¡ãã¥ã¼ 223 * ããã®åé¤ã¯è¡ããªãï¼å¾ 224 ã¡è§£é¤ããã¿ã¹ã¯ã¸ã®ãã£ã¹ããããå¿ 225 è¦ãªå ´ 226 * åã«ã¯trueãè¿ãï¼ 158 * 待ち解除 159 * 160 * p_tcbで指定されるタスクの待ち状態を解除する.具体的には,タイムイ 161 * ベントブロックが登録されていれば,それを登録解除する.また,タスク 162 * 状態を更新し,待ち解除したタスクからの返値をE_OKとする.待ちキュー 163 * からの削除は行わない.待ち解除したタスクへのディスパッチが必要な場 164 * 合にはtrueを返す. 227 165 */ 228 166 extern bool_t wait_complete(TCB *p_tcb); 229 167 230 168 /* 231 * ã¿ã¤ã ã¢ã¦ãã«ä¼´ãå¾ 232 ã¡è§£é¤ 233 * 234 * p_tcbã§æå®ãããã¿ã¹ã¯ãï¼å¾ 235 ã¡ãã¥ã¼ã«ã¤ãªããã¦ããã°å¾ 236 ã¡ãã¥ã¼ 237 * ããåé¤ãï¼ã¿ã¹ã¯ç¶æ 238 ãæ´æ°ããï¼ã¾ãï¼å¾ 239 ã¡è§£é¤ããã¿ã¹ã¯ããã®è¿ 240 * å¤ãï¼wait_tmoutã§ã¯E_TMOUTï¼wait_tmout_okã§ã¯E_OKã¨ããï¼å¾ 241 ã¡è§£é¤ 242 * ããã¿ã¹ã¯ã¸ã®ãã£ã¹ããããå¿ 243 è¦ãªæã¯ï¼reqflgãtrueã«ããï¼ 244 * 245 * wait_tmout_okã¯ï¼dly_tskã§ä½¿ãããã®ãã®ã§ï¼å¾ 246 ã¡ãã¥ã¼ããåé¤ãã 247 * å¦çãè¡ããªãï¼ 248 * 249 * ãããã®é¢æ°ãï¼ã¿ã¤ã ã¤ãã³ãã®ã³ã¼ã«ããã¯é¢æ°ã¨ãã¦ç¨ããããã® 250 * ãã®ã§ï¼å²è¾¼ã¿ãã³ãã©ããå¼ã³åºããããã¨ãæ³å®ãã¦ããï¼ 169 * タイムアウトに伴う待ち解除 170 * 171 * p_tcbで指定されるタスクが,待ちキューにつながれていれば待ちキュー 172 * から削除し,タスク状態を更新する.また,待ち解除したタスクからの返 173 * 値を,wait_tmoutではE_TMOUT,wait_tmout_okではE_OKとする.待ち解除 174 * したタスクへのディスパッチが必要な時は,reqflgをtrueにする. 175 * 176 * wait_tmout_okは,dly_tskで使うためのもので,待ちキューから削除する 177 * 処理を行わない. 178 * 179 * いずれの関数も,タイムイベントのコールバック関数として用いるための 180 * もので,割込みハンドラから呼び出されることを想定している. 251 181 */ 252 182 extern void wait_tmout(TCB *p_tcb); … … 254 184 255 185 /* 256 * å¾ 257 ã¡ç¶æ 258 ã®å¼·å¶è§£é¤ 259 * 260 * p_tcbã§æå®ãããã¿ã¹ã¯ã®å¾ 261 ã¡ç¶æ 262 ãå¼·å¶çã«è§£é¤ããï¼å 263 ·ä½çã«ã¯ï¼ 264 * ã¿ã¹ã¯ãå¾ 265 ã¡ãã¥ã¼ã«ã¤ãªããã¦ããã°å¾ 266 ã¡ãã¥ã¼ããåé¤ãï¼ã¿ã¤ã 㤠267 * ãã³ããããã¯ãç»é²ããã¦ããã°ãããç»é²è§£é¤ããï¼ã¾ãï¼ã¿ã¹ã¯ã® 268 * ç¶æ 269 ãæ´æ°ãï¼å¾ 270 ã¡è§£é¤ããã¿ã¹ã¯ããã®è¿å¤ãE_RLWAIã¨ããï¼ã¾ãï¼ 271 * å¾ 272 ã¡è§£é¤ããã¿ã¹ã¯ã¸ã®ãã£ã¹ããããå¿ 273 è¦ãªå ´åã«ã¯trueãè¿ãï¼ 186 * 待ち状態の強制解除 187 * 188 * p_tcbで指定されるタスクの待ち状態を強制的に解除する.具体的には, 189 * タスクが待ちキューにつながれていれば待ちキューから削除し,タイムイ 190 * ベントブロックが登録されていればそれを登録解除する.また,タスクの 191 * 状態を更新し,待ち解除したタスクからの返値をE_RLWAIとする.また, 192 * 待ち解除したタスクへのディスパッチが必要な場合にはtrueを返す. 274 193 */ 275 194 extern bool_t wait_release(TCB *p_tcb); 276 195 277 196 /* 278 * å¾ 279 ã¡ãã¥ã¼ã®å 280 é ã®ã¿ã¹ã¯ID 281 * 282 * p_wait_queueã§æå®ããå¾ 283 ã¡ãã¥ã¼ã®å 284 é ã®ã¿ã¹ã¯IDãè¿ãï¼å¾ 285 ã¡ãã¥ã¼ 286 * ã空ã®å ´åã«ã¯ï¼TSK_NONEãè¿ãï¼ 197 * 待ちキューの先頭のタスクID 198 * 199 * p_wait_queueで指定した待ちキューの先頭のタスクIDを返す.待ちキュー 200 * が空の場合には,TSK_NONEを返す. 287 201 */ 288 202 Inline ID … … 298 212 299 213 /* 300 * åæã»éä¿¡ãªãã¸ã§ã¯ãã®ç®¡çãããã¯ã®å 301 ±éé¨åæä½ã«ã¼ãã³ 302 * 303 * åæã»éä¿¡ãªãã¸ã§ã¯ãã®åæåãããã¯ã¨ç®¡çãããã¯ã®å 304 é é¨åã¯å 305 ± 306 * éã«ãªã£ã¦ããï¼ä»¥ä¸ã¯ï¼ãã®å 307 ±éé¨åãæ±ãããã®åããã³ã«ã¼ãã³ç¾¤ 308 * ã§ããï¼ 309 * 310 * è¤æ°ã®å¾ 311 ã¡ãã¥ã¼ãæã¤åæã»éä¿¡ãªãã¸ã§ã¯ãã®å ´åï¼å 312 é 以å¤ã®å¾ 313 ã¡ 314 * ãã¥ã¼ãæä½ããå ´åã«ã¯ï¼ãããã®ã«ã¼ãã³ã¯ä½¿ããªãï¼ã¾ãï¼ãªãã¸ã§ 315 * ã¯ãå±æ§ã®TA_TPRIããããåç 316 §ããã®ã§ï¼ãã®ããããä»ã®ç®çã«ä½¿ã£ã¦ 317 * ããå ´åãï¼ãããã®ã«ã¼ãã³ã¯ä½¿ããªãï¼ 318 */ 319 320 /* 321 * åæã»éä¿¡ãªãã¸ã§ã¯ãã®åæåãããã¯ã®å 322 ±éé¨å 214 * 同期・通信オブジェクトの管理ブロックの共通部分操作ルーチン 215 * 216 * 同期・通信オブジェクトの初期化ブロックと管理ブロックの先頭部分は共 217 * 通になっている.以下は,その共通部分を扱うための型およびルーチン群 218 * である. 219 * 220 * 複数の待ちキューを持つ同期・通信オブジェクトの場合,先頭以外の待ち 221 * キューを操作する場合には,これらのルーチンは使えない.また,オブジェ 222 * クト属性のTA_TPRIビットを参照するので,このビットを他の目的に使って 223 * いる場合も,これらのルーチンは使えない. 224 */ 225 226 /* 227 * 同期・通信オブジェクトの初期化ブロックの共通部分 323 228 */ 324 229 typedef struct wait_object_initialization_block { 325 ATR wobjatr; /* ãªãã¸ã§ã¯ãå±æ§*/230 ATR wobjatr; /* オブジェクト属性 */ 326 231 } WOBJINIB; 327 232 328 233 /* 329 * åæã»éä¿¡ãªãã¸ã§ã¯ãã®ç®¡çãããã¯ã®å 330 ±éé¨å 234 * 同期・通信オブジェクトの管理ブロックの共通部分 331 235 */ 332 236 typedef struct wait_object_control_block { 333 QUEUE wait_queue; /* å¾ 334 ã¡ãã¥ã¼ */ 335 const WOBJINIB *p_wobjinib; /* åæåãããã¯ã¸ã®ãã¤ã³ã¿ */ 237 QUEUE wait_queue; /* 待ちキュー */ 238 const WOBJINIB *p_wobjinib; /* 初期化ブロックへのポインタ */ 336 239 } WOBJCB; 337 240 338 241 /* 339 * åæã»éä¿¡ãªãã¸ã§ã¯ãã®å¾ 340 ã¡æ 341 å ±ãããã¯ã®å 342 ±éé¨å 343 * 344 * ãã®æ§é ä½ã¯ï¼å¾ 345 ã¡æ 346 å ±ãããã¯ï¼WINFOï¼ãæ¡å¼µï¼ãªãã¸ã§ã¯ãæåè¨ 347 * èªã®ç¶æ¿ã«ç¸å½ï¼ãããã®ã§ãããï¼WINFOãå 348 ±ç¨ä½ã§å®ç¾©ããã¦ããã 349 * ãã«ï¼1ã¤ã®ãã£ã¼ã«ãã¨ãã¦å«ãã¦ããï¼ 242 * 同期・通信オブジェクトの待ち情報ブロックの共通部分 243 * 244 * この構造体は,待ち情報ブロック(WINFO)を拡張(オブジェクト指向言 245 * 語の継承に相当)したものであるが,WINFOが共用体で定義されているた 246 * めに,1つのフィールドとして含めている. 350 247 */ 351 248 typedef struct wait_object_waiting_information { 352 WINFO winfo; /* æ¨æºã®å¾ 353 ã¡æ 354 å ±ããã㯠*/ 355 WOBJCB *p_wobjcb; /* å¾ 356 ã¡ãªãã¸ã§ã¯ãã®ç®¡çããã㯠*/ 249 WINFO winfo; /* 標準の待ち情報ブロック */ 250 WOBJCB *p_wobjcb; /* 待ちオブジェクトの管理ブロック */ 357 251 } WINFO_WOBJ; 358 252 359 253 /* 360 * åæã»éä¿¡ãªãã¸ã§ã¯ãã«å¯¾ããå¾ 361 ã¡ç¶æ 362 ã¸ã®é·ç§» 254 * 同期・通信オブジェクトに対する待ち状態への遷移 363 255 * 364 * å®è¡ä¸ã®ã¿ã¹ã¯ãå¾ 365 ã¡ç¶æ 366 ã«é·ç§»ããï¼åæã»éä¿¡ãªãã¸ã§ã¯ãã®å¾ 367 ã¡ãã¥ã¼ 368 * ã«ã¤ãªãï¼ã¾ãï¼å¾ 369 ã¡æ 370 å ±ãããã¯ï¼WINFOï¼ã®p_wobjcbãè¨å®ããï¼ 371 * wobj_make_wait_tmoutã¯ï¼ã¿ã¤ã ã¤ãã³ããããã¯ã®ç»é²ãè¡ãï¼ 256 * 実行中のタスクを待ち状態に遷移させ,同期・通信オブジェクトの待ちキュー 257 * につなぐ.また,待ち情報ブロック(WINFO)のp_wobjcbを設定する. 258 * wobj_make_wait_tmoutは,タイムイベントブロックの登録も行う. 372 259 */ 373 260 extern void wobj_make_wait(WOBJCB *p_wobjcb, WINFO_WOBJ *p_winfo); … … 376 263 377 264 /* 378 * ã¿ã¹ã¯åªå 379 度å¤æ´æã®å¦ç 380 * 381 * åæã»éä¿¡ãªãã¸ã§ã¯ãã«å¯¾ããå¾ 382 ã¡ç¶æ 383 ã«ããã¿ã¹ã¯ã®åªå 384 度ãå¤æ´ã 385 * ããå ´åã«ï¼å¾ 386 ã¡ãã¥ã¼ã®ä¸ã§ã®ã¿ã¹ã¯ã®ä½ç½®ãä¿®æ£ããï¼ 265 * タスク優先度変更時の処理 266 * 267 * 同期・通信オブジェクトに対する待ち状態にあるタスクの優先度が変更さ 268 * れた場合に,待ちキューの中でのタスクの位置を修正する. 387 269 */ 388 270 Inline void … … 396 278 397 279 /* 398 * å¾ 399 ã¡ãã¥ã¼ã®åæå 400 * 401 * å¾ 402 ã¡ãã¥ã¼ã«ã¤ãªããã¦ããã¿ã¹ã¯ããã¹ã¦å¾ 403 ã¡è§£é¤ããï¼å¾ 404 ã¡è§£é¤ãã 405 * ã¿ã¹ã¯ããã®è¿å¤ã¯ï¼E_DLTã¨ããï¼å¾ 406 ã¡è§£é¤ããã¿ã¹ã¯ã¸ã®ãã£ã¹ããã 407 * ãå¿ 408 è¦ãªå ´åã¯trueï¼ããã§ãªãå ´åã¯falseãè¿ãï¼ 280 * 待ちキューの初期化 281 * 282 * 待ちキューにつながれているタスクをすべて待ち解除する.待ち解除した 283 * タスクからの返値は,E_DLTとする.待ち解除したタスクへのディスパッチ 284 * が必要な場合はtrue,そうでない場合はfalseを返す. 409 285 */ 410 286 extern bool_t init_wait_queue(QUEUE *p_wait_queue); -
Property svn:mime-type
changed from
Note:
See TracChangeset
for help on using the changeset viewer.