Changeset 167 for UsbWattMeter/trunk/asp_dcre/kernel/kernel.tf
- Timestamp:
- Mar 8, 2016, 8:37:45 PM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
UsbWattMeter/trunk/asp_dcre/kernel/kernel.tf
-
Property svn:mime-type
changed from
text/plain
totext/plain; charset=SHIFT_JIS
r164 r167 9 9 $ Graduate School of Information Science, Nagoya Univ., JAPAN 10 10 $ 11 $ ãLì ÒÍCȺÌ(1)`(4)Ìðð½·êÉÀèC{\tgEF 12 $ Ai{\tgEFAðüϵ½àÌðÜÞDȺ¯¶jðgpE¡»Eü 13 $ ÏEÄzziȺCpÆÄÔj·é±Æð³Åø·éD 14 $ (1) {\tgEFAð\[XR[hÌ`Åp·éêÉÍCãLÌì 15 $ \¦C±Ìpð¨æÑºLÌ³ÛØKèªC»ÌÜÜÌ`Å\[ 16 $ XR[hÉÜÜêĢ鱯D 17 $ (2) {\tgEFAðCCu`®ÈÇC¼Ì\tgEFAJÉg 18 $ pÅ«é`ÅÄzz·éêÉÍCÄzzɺ¤hL 19 gip 20 $ Ò}j 21 AÈÇjÉCãLÌì \¦C±Ìpð¨æÑºL 22 $ Ì³ÛØKèðfÚ·é±ÆD 23 $ (3) {\tgEFAðC@íÉgÝÞÈÇC¼Ì\tgEFAJÉg 24 $ pūȢ`ÅÄzz·éêÉÍCÌ¢¸ê©Ìðð½·± 25 $ ÆD 26 $ (a) Äzzɺ¤hL 27 gipÒ}j 28 AÈÇjÉCãLÌ 29 $ ì \¦C±Ìpð¨æÑºLÌ³ÛØKèðfÚ·é±ÆD 30 $ (b) ÄzzÌ`ÔðCÊÉèßéû@ÉæÁÄCTOPPERSvWFNgÉ 31 $ ñ·é±ÆD 32 $ (4) {\tgEFAÌpÉæè¼ÚIܽÍÔÚIɶ¶é¢©Èé¹ 33 $ Q©çàCãLì Ò¨æÑTOPPERSvWFNgðÆÓ·é±ÆD 34 $ ܽC{\tgEFAÌ[UܽÍGh[U©çÌ¢©Èé 35 $ RÉîÿ©çàCãLì Ò¨æÑTOPPERSvWFNgð 36 $ ÆÓ·é±ÆD 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 $ 免責すること. 37 33 $ 38 $ {\tgEFAÍC³ÛØÅñ³êÄ¢éàÌÅ éDãLì Ò¨39 $ æÑTOPPERSvWFNgÍC{\tgEFAÉÖµÄCÁèÌgpÚI40 $ ÉηéK«àÜßÄC¢©ÈéÛØàsíÈ¢DܽC{\tgEF41 $ AÌpÉæè¼ÚIܽÍÔÚIɶ¶½¢©Èé¹QÉÖµÄàC»42 $ ÌÓCðíÈ¢D34 $ 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 35 $ よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 36 $ に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 37 $ アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 38 $ の責任を負わない. 43 39 $ 44 40 $ $Id$ … … 47 43 48 44 $ ===================================================================== 49 $ AID_YYY Ì45 $ AID_YYYの処理 50 46 $ ===================================================================== 51 47 52 48 $num_atskid = 0$ 53 49 $FOREACH i ATSK.ORDER_LIST$ 54 $ // notsk ªÌêiE_PARj50 $ // notskが負の場合(E_PAR) 55 51 $IF ATSK.NOTSK[i] < 0$ 56 52 $ERROR ATSK.TEXT_LINE[i]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "notsk", ATSK.NOTSK[i], "AID_TSK")$$END$ … … 62 58 $num_asemid = 0$ 63 59 $FOREACH i ASEM.ORDER_LIST$ 64 $ // nosem ªÌêiE_PARj60 $ // nosemが負の場合(E_PAR) 65 61 $IF ASEM.NOSEM[i] < 0$ 66 62 $ERROR ASEM.TEXT_LINE[i]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "nosem", ASEM.NOSEM[i], "AID_SEM")$$END$ … … 72 68 $num_aflgid = 0$ 73 69 $FOREACH i AFLG.ORDER_LIST$ 74 $ // noflg ªÌêiE_PARj70 $ // noflgが負の場合(E_PAR) 75 71 $IF AFLG.NOFLG[i] < 0$ 76 72 $ERROR AFLG.TEXT_LINE[i]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "noflg", AFLG.NOFLG[i], "AID_FLG")$$END$ … … 82 78 $num_adtqid = 0$ 83 79 $FOREACH i ADTQ.ORDER_LIST$ 84 $ // nodtq ªÌêiE_PARj80 $ // nodtqが負の場合(E_PAR) 85 81 $IF ADTQ.NODTQ[i] < 0$ 86 82 $ERROR ADTQ.TEXT_LINE[i]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "nodtq", ADTQ.NODTQ[i], "AID_DTQ")$$END$ … … 92 88 $num_apdqid = 0$ 93 89 $FOREACH i APDQ.ORDER_LIST$ 94 $ // nopdq ªÌêiE_PARj90 $ // nopdqが負の場合(E_PAR) 95 91 $IF APDQ.NOPDQ[i] < 0$ 96 92 $ERROR APDQ.TEXT_LINE[i]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "nopdq", APDQ.NOPDQ[i], "AID_PDQ")$$END$ … … 102 98 $num_ambxid = 0$ 103 99 $FOREACH i AMBX.ORDER_LIST$ 104 $ // nombx ªÌêiE_PARj100 $ // nombxが負の場合(E_PAR) 105 101 $IF AMBX.NOMBX[i] < 0$ 106 102 $ERROR AMBX.TEXT_LINE[i]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "nombx", AMBX.NOMBX[i], "AID_MBX")$$END$ … … 112 108 $num_ampfid = 0$ 113 109 $FOREACH i AMPF.ORDER_LIST$ 114 $ // nompf ªÌêiE_PARj110 $ // nompfが負の場合(E_PAR) 115 111 $IF AMPF.NOMPF[i] < 0$ 116 112 $ERROR AMPF.TEXT_LINE[i]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "nompf", AMPF.NOMPF[i], "AID_MPF")$$END$ … … 122 118 $num_acycid = 0$ 123 119 $FOREACH i ACYC.ORDER_LIST$ 124 $ // nocyc ªÌêiE_PARj120 $ // nocycが負の場合(E_PAR) 125 121 $IF ACYC.NOCYC[i] < 0$ 126 122 $ERROR ACYC.TEXT_LINE[i]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "nocyc", ACYC.NOCYC[i], "AID_CYC")$$END$ … … 132 128 $num_aalmid = 0$ 133 129 $FOREACH i AALM.ORDER_LIST$ 134 $ // noalm ªÌêiE_PARj130 $ // noalmが負の場合(E_PAR) 135 131 $IF AALM.NOALM[i] < 0$ 136 132 $ERROR AALM.TEXT_LINE[i]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "noalm", AALM.NOALM[i], "AID_ALM")$$END$ … … 142 138 $num_aisrid = 0$ 143 139 $FOREACH i AISR.ORDER_LIST$ 144 $ // noisr ªÌêiE_PARj140 $ // noisrが負の場合(E_PAR) 145 141 $IF AISR.NOISR[i] < 0$ 146 142 $ERROR AISR.TEXT_LINE[i]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "noisr", AISR.NOISR[i], "AID_ISR")$$END$ … … 152 148 153 149 $ ===================================================================== 154 $ kernel_cfg.h ̶¬150 $ kernel_cfg.hの生成 155 151 $ ===================================================================== 156 152 … … 202 198 203 199 $ ===================================================================== 204 $ kernel_cfg.c ̶¬200 $ kernel_cfg.cの生成 205 201 $ ===================================================================== 206 202 … … 216 212 217 213 $ 218 $ CN[hfBNeBui#includej214 $ インクルードディレクティブ(#include) 219 215 $ 220 216 /*$NL$ … … 226 222 227 223 $ 228 $ IuWFNgÌIDÔðÛ·éÏ224 $ オブジェクトのID番号を保持する変数 229 225 $ 230 226 $IF USE_EXTERNAL_ID$ … … 263 259 264 260 $ 265 $ ^XN261 $ タスク 266 262 $ 267 263 /*$NL$ … … 270 266 $NL$ 271 267 272 $ ÃIɶ¬³ê½^XNª1ÂÈã¶Ý·é±ÆÌ`FbN268 $ 静的に生成されたタスクが1個以上存在することのチェック 273 269 $IF !LENGTH(TSK.ID_LIST)$ 274 270 $ERROR$$FORMAT(_("no task is registered"))$$END$ 275 271 $END$ 276 272 277 $ ÃIɶ¬³ê½^XNÌ273 $ 静的に生成されたタスクの数 278 274 #define TNUM_STSKID $LENGTH(TSK.ID_LIST)$$NL$ 279 275 $NL$ 280 276 281 $ ^XNIDÔÌÅål277 $ タスクID番号の最大値 282 278 const ID _kernel_tmax_tskid = (TMIN_TSKID + TNUM_TSKID - 1);$NL$ 283 279 const ID _kernel_tmax_stskid = (TMIN_TSKID + TNUM_STSKID - 1);$NL$ 284 280 $NL$ 285 281 286 $ G[`FbN282 $ エラーチェック 287 283 $FOREACH tskid TSK.ID_LIST$ 288 $ // tskatr ªimTA_ACTnjÅÈ¢êiE_RSATRj284 $ // tskatrが([TA_ACT])でない場合(E_RSATR) 289 285 $IF (TSK.TSKATR[tskid] & ~(TA_ACT|TARGET_TSKATR)) != 0$ 290 286 $ERROR TSK.TEXT_LINE[tskid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "tskatr", TSK.TSKATR[tskid], tskid, "CRE_TSK")$$END$ 291 287 $END$ 292 288 293 $ // (TMIN_TPRI <= itskpri && itskpri <= TMAX_TPRI) ÅÈ¢êiE_PARj289 $ // (TMIN_TPRI <= itskpri && itskpri <= TMAX_TPRI)でない場合(E_PAR) 294 290 $IF !(TMIN_TPRI <= TSK.ITSKPRI[tskid] && TSK.ITSKPRI[tskid] <= TMAX_TPRI)$ 295 291 $ERROR TSK.TEXT_LINE[tskid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "itskpri", TSK.ITSKPRI[tskid], tskid, "CRE_TSK")$$END$ 296 292 $END$ 297 293 298 $ // texatr ªiTA_NULLjÅÈ¢êiE_RSATRj294 $ // texatrが(TA_NULL)でない場合(E_RSATR) 299 295 $IF LENGTH(TSK.TEXATR[tskid]) && TSK.TEXATR[tskid] != 0$ 300 296 $ERROR DEF_TEX.TEXT_LINE[tskid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "texatr", TSK.TEXATR[tskid], tskid, "DEF_TEX")$$END$ … … 302 298 $END$ 303 299 304 $ X^bNÌæÌ¶¬Æ»êÉÖ·éG[`FbN300 $ スタック領域の生成とそれに関するエラーチェック 305 301 $FOREACH tskid TSK.ID_LIST$ 306 $ // stksz ª0Ⱥ©C^[Qbgè`ÌŬliTARGET_MIN_STKSZjæèà307 $ // ¬³¢êiE_PARj302 $ // stkszが0以下か,ターゲット定義の最小値(TARGET_MIN_STKSZ)よりも 303 $ // 小さい場合(E_PAR) 308 304 $IF TSK.STKSZ[tskid] <= 0 || (TARGET_MIN_STKSZ 309 305 && TSK.STKSZ[tskid] < TARGET_MIN_STKSZ)$ … … 311 307 $END$ 312 308 313 $ // stksz ªX^bNÌæÌTCYƵijµÈ¢êiE_PARj309 $ // stkszがスタック領域のサイズとして正しくない場合(E_PAR) 314 310 $IF !EQ(TSK.STK[tskid], "NULL") && CHECK_STKSZ_ALIGN 315 311 && (TSK.STKSZ[tskid] & (CHECK_STKSZ_ALIGN - 1))$ … … 328 324 $NL$ 329 325 330 $ ^XNú»ubN̶¬i^XNÍ1ÂÈã¶Ý·éj326 $ タスク初期化ブロックの生成(タスクは1個以上存在する) 331 327 const TINIB _kernel_tinib_table[TNUM_STSKID] = {$NL$ 332 328 $JOINEACH tskid TSK.ID_LIST ",\n"$ 333 $ // ^XN®«Cg£îñCN®ÔnCN®Dæx329 $ // タスク属性,拡張情報,起動番地,起動時優先度 334 330 $TAB${ 335 331 $SPC$($TSK.TSKATR[tskid]$), (intptr_t)($TSK.EXINF[tskid]$), 336 332 $SPC$((TASK)($TSK.TASK[tskid]$)), INT_PRIORITY($TSK.ITSKPRI[tskid]$), 337 333 338 $ // ^XNú»ReLXgubNCX^bNÌæ334 $ // タスク初期化コンテキストブロック,スタック領域 339 335 $IF USE_TSKINICTXB$ 340 336 $GENERATE_TSKINICTXB(tskid)$ … … 343 339 $END$ 344 340 345 $ // ^XNáO[`Ì®«ÆN®Ôn341 $ // タスク例外処理ルーチンの属性と起動番地 346 342 $SPC$($ALT(TSK.TEXATR[tskid],"TA_NULL")$), ($ALT(TSK.TEXRTN[tskid],"NULL")$) } 347 343 $END$$NL$ … … 349 345 $NL$ 350 346 351 $ ®I¶¬^XNpÌ^XNú»ubN̶¬347 $ 動的生成タスク用のタスク初期化ブロックの生成 352 348 $IF num_atskid > 0$ 353 349 TINIB _kernel_atinib_table[$num_atskid$];$NL$ … … 356 352 $END$$NL$ 357 353 358 $ ^XNÇubN̶¬354 $ タスク管理ブロックの生成 359 355 TCB _kernel_tcb_table[TNUM_TSKID];$NL$ 360 356 $NL$ 361 357 362 $ ^XN¶¬e[u̶¬358 $ タスク生成順序テーブルの生成 363 359 const ID _kernel_torder_table[TNUM_STSKID] = {$NL$ 364 360 $TAB$$JOINEACH tskid TSK.ORDER_LIST ", "$$tskid$$END$$NL$ … … 367 363 368 364 $ 369 $ Z}tH365 $ セマフォ 370 366 $ 371 367 /*$NL$ … … 374 370 $NL$ 375 371 376 $ ÃIɶ¬³ê½Z}tHÌ372 $ 静的に生成されたセマフォの数 377 373 #define TNUM_SSEMID $LENGTH(SEM.ID_LIST)$$NL$ 378 374 $NL$ 379 375 380 $ Z}tHIDÔÌÅål376 $ セマフォID番号の最大値 381 377 const ID _kernel_tmax_semid = (TMIN_SEMID + TNUM_SEMID - 1);$NL$ 382 378 const ID _kernel_tmax_ssemid = (TMIN_SEMID + TNUM_SSEMID - 1);$NL$ 383 379 $NL$ 384 380 385 $ Z}tHú»ubN̶¬381 $ セマフォ初期化ブロックの生成 386 382 $IF LENGTH(SEM.ID_LIST)$ 387 383 const SEMINIB _kernel_seminib_table[TNUM_SSEMID] = {$NL$ 388 384 $JOINEACH semid SEM.ID_LIST ",\n"$ 389 $ // sematr ªimTA_TPRInjÅÈ¢êiE_RSATRj385 $ // sematrが([TA_TPRI])でない場合(E_RSATR) 390 386 $IF (SEM.SEMATR[semid] & ~TA_TPRI) != 0$ 391 387 $ERROR SEM.TEXT_LINE[semid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "sematr", SEM.SEMATR[semid], semid, "CRE_SEM")$$END$ 392 388 $END$ 393 389 394 $ // (0 <= isemcnt && isemcnt <= maxsem) ÅÈ¢êiE_PARj390 $ // (0 <= isemcnt && isemcnt <= maxsem)でない場合(E_PAR) 395 391 $IF !(0 <= SEM.ISEMCNT[semid] && SEM.ISEMCNT[semid] <= SEM.MAXSEM[semid])$ 396 392 $ERROR SEM.TEXT_LINE[semid]$E_PAR: $FORMAT(_("too large %1% `%2%\' of `%3%\' in %4%"), "isemcnt", SEM.ISEMCNT[semid], semid, "CRE_SEM")$$END$ 397 393 $END$ 398 394 399 $ // (1 <= maxsem && maxsem <= TMAX_MAXSEM) ÅÈ¢êiE_PARj395 $ // (1 <= maxsem && maxsem <= TMAX_MAXSEM)でない場合(E_PAR) 400 396 $IF !(1 <= SEM.MAXSEM[semid] && SEM.MAXSEM[semid] <= TMAX_MAXSEM)$ 401 397 $ERROR SEM.TEXT_LINE[semid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "maxsem", SEM.MAXSEM[semid], semid, "CRE_SEM")$$END$ 402 398 $END$ 403 399 404 $ // Z}tHú»ubN400 $ // セマフォ初期化ブロック 405 401 $TAB${ ($SEM.SEMATR[semid]$), ($SEM.ISEMCNT[semid]$), ($SEM.MAXSEM[semid]$) } 406 402 $END$$NL$ … … 410 406 $END$$NL$ 411 407 412 $ ®I¶¬Z}tHpÌZ}tHú»ubN̶¬408 $ 動的生成セマフォ用のセマフォ初期化ブロックの生成 413 409 $IF num_asemid > 0$ 414 410 SEMINIB _kernel_aseminib_table[$num_asemid$];$NL$ … … 417 413 $END$$NL$ 418 414 419 $ Z}tHÇubN̶¬415 $ セマフォ管理ブロックの生成 420 416 $IF num_semid > 0$ 421 417 SEMCB _kernel_semcb_table[TNUM_SEMID];$NL$ … … 425 421 426 422 $ 427 $ CxgtO423 $ イベントフラグ 428 424 $ 429 425 /*$NL$ … … 432 428 $NL$ 433 429 434 $ ÃIɶ¬³ê½CxgtOÌ430 $ 静的に生成されたイベントフラグの数 435 431 #define TNUM_SFLGID $LENGTH(FLG.ID_LIST)$$NL$ 436 432 $NL$ 437 433 438 $ CxgtOIDÔÌÅål434 $ イベントフラグID番号の最大値 439 435 const ID _kernel_tmax_flgid = (TMIN_FLGID + TNUM_FLGID - 1);$NL$ 440 436 const ID _kernel_tmax_sflgid = (TMIN_FLGID + TNUM_SFLGID - 1);$NL$ 441 437 $NL$ 442 438 443 $ CxgtOú»ubN̶¬439 $ イベントフラグ初期化ブロックの生成 444 440 $IF LENGTH(FLG.ID_LIST)$ 445 441 const FLGINIB _kernel_flginib_table[TNUM_SFLGID] = {$NL$ 446 442 $JOINEACH flgid FLG.ID_LIST ",\n"$ 447 $ // flgatr ªimTA_TPRInbmTA_WMULnbmTA_CLRnjÅÈ¢êiE_RSATRj443 $ // flgatrが([TA_TPRI]|[TA_WMUL]|[TA_CLR])でない場合(E_RSATR) 448 444 $IF (FLG.FLGATR[flgid] & ~(TA_TPRI|TA_WMUL|TA_CLR)) != 0$ 449 445 $ERROR FLG.TEXT_LINE[flgid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "flgatr", FLG.FLGATR[flgid], flgid, "CRE_FLG")$$END$ 450 446 $END$ 451 447 452 $ // iflgptn ªFLGPTNÉi[ūȢêiE_PARj448 $ // iflgptnがFLGPTNに格納できない場合(E_PAR) 453 449 $IF (FLG.IFLGPTN[flgid] & ~((1 << TBIT_FLGPTN) - 1)) != 0$ 454 450 $ERROR FLG.TEXT_LINE[flgid]$E_PAR: $FORMAT(_("too large %1% `%2%\' of `%3%\' in %4%"), "iflgptn", FLG.IFLGPTN[flgid], flgid, "CRE_FLG")$$END$ 455 451 $END$ 456 452 457 $ // CxgtOú»ubN453 $ // イベントフラグ初期化ブロック 458 454 $TAB${ ($FLG.FLGATR[flgid]$), ($FLG.IFLGPTN[flgid]$) } 459 455 $END$$NL$ … … 463 459 $END$$NL$ 464 460 465 $ ®I¶¬CxgtOpÌCxgtOú»ubN̶¬461 $ 動的生成イベントフラグ用のイベントフラグ初期化ブロックの生成 466 462 $IF num_aflgid > 0$ 467 463 FLGINIB _kernel_aflginib_table[$num_aflgid$];$NL$ … … 470 466 $END$$NL$ 471 467 472 $ CxgtOÇubN̶¬468 $ イベントフラグ管理ブロックの生成 473 469 $IF num_flgid > 0$ 474 470 FLGCB _kernel_flgcb_table[TNUM_FLGID];$NL$ … … 478 474 479 475 $ 480 $ f[^L 481 [ 476 $ データキュー 482 477 $ 483 478 /*$NL$ … … 486 481 $NL$ 487 482 488 $ ÃIɶ¬³ê½f[^L 489 [Ì 483 $ 静的に生成されたデータキューの数 490 484 #define TNUM_SDTQID $LENGTH(DTQ.ID_LIST)$$NL$ 491 485 $NL$ 492 486 493 $ f[^L 494 [IDÔÌÅål 487 $ データキューID番号の最大値 495 488 const ID _kernel_tmax_dtqid = (TMIN_DTQID + TNUM_DTQID - 1);$NL$ 496 489 const ID _kernel_tmax_sdtqid = (TMIN_DTQID + TNUM_SDTQID - 1);$NL$ … … 499 492 $IF LENGTH(DTQ.ID_LIST)$ 500 493 $FOREACH dtqid DTQ.ID_LIST$ 501 $ // dtqatr ªimTA_TPRInjÅÈ¢êiE_RSATRj494 $ // dtqatrが([TA_TPRI])でない場合(E_RSATR) 502 495 $IF (DTQ.DTQATR[dtqid] & ~TA_TPRI) != 0$ 503 496 $ERROR DTQ.TEXT_LINE[dtqid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "dtqatr", DTQ.DTQATR[dtqid], dtqid, "CRE_DTQ")$$END$ 504 497 $END$ 505 498 506 $ // dtqcnt ªÌêiE_PARj499 $ // dtqcntが負の場合(E_PAR) 507 500 $IF DTQ.DTQCNT[dtqid] < 0$ 508 501 $ERROR DTQ.TEXT_LINE[dtqid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "dtqcnt", DTQ.DTQCNT[dtqid], dtqid, "CRE_DTQ")$$END$ 509 502 $END$ 510 503 511 $ // dtqmb ªNULLÅÈ¢êiE_NOSPTj504 $ // dtqmbがNULLでない場合(E_NOSPT) 512 505 $IF !EQ(DTQ.DTQMB[dtqid], "NULL")$ 513 506 $ERROR DTQ.TEXT_LINE[dtqid]$E_NOSPT: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "dtqmb", DTQ.DTQMB[dtqid], dtqid, "CRE_DTQ")$$END$ 514 507 $END$ 515 508 516 $ // f[^L 517 [ÇÌæ 509 $ // データキュー管理領域 518 510 $IF DTQ.DTQCNT[dtqid]$ 519 511 static DTQMB _kernel_dtqmb_$dtqid$[$DTQ.DTQCNT[dtqid]$];$NL$ … … 521 513 $END$ 522 514 523 $ // f[^L 524 [ú»ubN̶¬ 515 $ // データキュー初期化ブロックの生成 525 516 const DTQINIB _kernel_dtqinib_table[TNUM_SDTQID] = {$NL$ 526 517 $JOINEACH dtqid DTQ.ID_LIST ",\n"$ … … 532 523 $END$$NL$ 533 524 534 $ ®I¶¬f[^L 535 [pÌf[^L 536 [ú»ubN̶¬ 525 $ 動的生成データキュー用のデータキュー初期化ブロックの生成 537 526 $IF num_adtqid > 0$ 538 527 DTQINIB _kernel_adtqinib_table[$num_adtqid$];$NL$ … … 541 530 $END$$NL$ 542 531 543 $ f[^L 544 [ÇubN̶¬ 532 $ データキュー管理ブロックの生成 545 533 $IF num_dtqid > 0$ 546 534 DTQCB _kernel_dtqcb_table[TNUM_DTQID];$NL$ … … 550 538 551 539 $ 552 $ Dæxf[^L 553 [ 540 $ 優先度データキュー 554 541 $ 555 542 /*$NL$ … … 558 545 $NL$ 559 546 560 $ ÃIɶ¬³ê½Dæxf[^L 561 [Ì 547 $ 静的に生成された優先度データキューの数 562 548 #define TNUM_SPDQID $LENGTH(PDQ.ID_LIST)$$NL$ 563 549 $NL$ 564 550 565 $ Dæxf[^L 566 [IDÔÌÅål 551 $ 優先度データキューID番号の最大値 567 552 const ID _kernel_tmax_pdqid = (TMIN_PDQID + TNUM_PDQID - 1);$NL$ 568 553 const ID _kernel_tmax_spdqid = (TMIN_PDQID + TNUM_SPDQID - 1);$NL$ … … 571 556 $IF LENGTH(PDQ.ID_LIST)$ 572 557 $FOREACH pdqid PDQ.ID_LIST$ 573 $ // pdqatr ªimTA_TPRInjÅÈ¢êiE_RSATRj558 $ // pdqatrが([TA_TPRI])でない場合(E_RSATR) 574 559 $IF (PDQ.PDQATR[pdqid] & ~TA_TPRI) != 0$ 575 560 $ERROR PDQ.TEXT_LINE[pdqid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "pdqatr", PDQ.PDQATR[pdqid], pdqid, "CRE_PDQ")$$END$ 576 561 $END$ 577 562 578 $ // pdqcnt ªÌêiE_PARj563 $ // pdqcntが負の場合(E_PAR) 579 564 $IF PDQ.PDQCNT[pdqid] < 0$ 580 565 $ERROR PDQ.TEXT_LINE[pdqid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "pdqcnt", PDQ.PDQCNT[pdqid], pdqid, "CRE_PDQ")$$END$ 581 566 $END$ 582 567 583 $ // (TMIN_DPRI <= maxdpri && maxdpri <= TMAX_DPRI) ÅÈ¢êiE_PARj568 $ // (TMIN_DPRI <= maxdpri && maxdpri <= TMAX_DPRI)でない場合(E_PAR) 584 569 $IF !(TMIN_DPRI <= PDQ.MAXDPRI[pdqid] && PDQ.MAXDPRI[pdqid] <= TMAX_DPRI)$ 585 570 $ERROR PDQ.TEXT_LINE[pdqid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "maxdpri", PDQ.MAXDPRI[pdqid], pdqid, "CRE_PDQ")$$END$ 586 571 $END$ 587 572 588 $ // pdqmb ªNULLÅÈ¢êiE_NOSPTj573 $ // pdqmbがNULLでない場合(E_NOSPT) 589 574 $IF !EQ(PDQ.PDQMB[pdqid], "NULL")$ 590 575 $ERROR PDQ.TEXT_LINE[pdqid]$E_NOSPT: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "pdqmb", PDQ.PDQMB[pdqid], pdqid, "CRE_PDQ")$$END$ 591 576 $END$ 592 577 593 $ // Dæxf[^L 594 [ÇÌæ 578 $ // 優先度データキュー管理領域 595 579 $IF PDQ.PDQCNT[pdqid]$ 596 580 static PDQMB _kernel_pdqmb_$pdqid$[$PDQ.PDQCNT[pdqid]$];$NL$ … … 598 582 $END$ 599 583 600 $ // Dæxf[^L 601 [ú»ubN̶¬ 584 $ // 優先度データキュー初期化ブロックの生成 602 585 const PDQINIB _kernel_pdqinib_table[TNUM_SPDQID] = {$NL$ 603 586 $JOINEACH pdqid PDQ.ID_LIST ",\n"$ … … 609 592 $END$$NL$ 610 593 611 $ ®I¶¬Dæxf[^L 612 [pÌDæxf[^L 613 [ú»ubN̶¬ 594 $ 動的生成優先度データキュー用の優先度データキュー初期化ブロックの生成 614 595 $IF num_apdqid > 0$ 615 596 PDQINIB _kernel_apdqinib_table[$num_apdqid$];$NL$ … … 618 599 $END$$NL$ 619 600 620 $ Dæxf[^L 621 [ÇubN̶¬ 601 $ 優先度データキュー管理ブロックの生成 622 602 $IF num_pdqid > 0$ 623 603 PDQCB _kernel_pdqcb_table[TNUM_PDQID];$NL$ … … 627 607 628 608 $ 629 $ [{bNX609 $ メールボックス 630 610 $ 631 611 /*$NL$ … … 634 614 $NL$ 635 615 636 $ ÃIɶ¬³ê½[{bNXÌ616 $ 静的に生成されたメールボックスの数 637 617 #define TNUM_SMBXID $LENGTH(MBX.ID_LIST)$$NL$ 638 618 $NL$ 639 619 640 $ [{bNXIDÔÌÅål620 $ メールボックスID番号の最大値 641 621 const ID _kernel_tmax_mbxid = (TMIN_MBXID + TNUM_MBXID - 1);$NL$ 642 622 const ID _kernel_tmax_smbxid = (TMIN_MBXID + TNUM_SMBXID - 1);$NL$ 643 623 $NL$ 644 624 645 $ [{bNXú»ubN̶¬625 $ メールボックス初期化ブロックの生成 646 626 $IF LENGTH(MBX.ID_LIST)$ 647 627 const MBXINIB _kernel_mbxinib_table[TNUM_SMBXID] = {$NL$ 648 628 $JOINEACH mbxid MBX.ID_LIST ",\n"$ 649 $ // mbxatr ªimTA_TPRInbmTA_MPRInjÅÈ¢êiE_RSATRj629 $ // mbxatrが([TA_TPRI]|[TA_MPRI])でない場合(E_RSATR) 650 630 $IF (MBX.MBXATR[mbxid] & ~(TA_TPRI|TA_MPRI)) != 0$ 651 631 $ERROR MBX.TEXT_LINE[mbxid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "mbxatr", MBX.MBXATR[mbxid], mbxid, "CRE_MBX")$$END$ 652 632 $END$ 653 633 654 $ // (TMIN_MPRI <= maxmpri && maxmpri <= TMAX_MPRI) ÅÈ¢êiE_PARj634 $ // (TMIN_MPRI <= maxmpri && maxmpri <= TMAX_MPRI)でない場合(E_PAR) 655 635 $IF !(TMIN_MPRI <= MBX.MAXMPRI[mbxid] && MBX.MAXMPRI[mbxid] <= TMAX_MPRI)$ 656 636 $ERROR MBX.TEXT_LINE[mbxid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "maxmpri", MBX.MAXMPRI[mbxid], mbxid, "CRE_MBX")$$END$ 657 637 $END$ 658 638 659 $ // mprihd ªNULLÅÈ¢êiE_NOSPTj639 $ // mprihdがNULLでない場合(E_NOSPT) 660 640 $IF !EQ(MBX.MPRIHD[mbxid], "NULL")$ 661 641 $ERROR MBX.TEXT_LINE[mbxid]$E_NOSPT: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "mprihd", MBX.MPRIHD[mbxid], mbxid, "CRE_MBX")$$END$ 662 642 $END$ 663 643 664 $ // [{bNXú»ubN644 $ // メールボックス初期化ブロック 665 645 $TAB${ ($MBX.MBXATR[mbxid]$), ($MBX.MAXMPRI[mbxid]$) } 666 646 $END$$NL$ … … 670 650 $END$$NL$ 671 651 672 $ ®I¶¬[{bNXpÌ[{bNXú»ubN̶¬652 $ 動的生成メールボックス用のメールボックス初期化ブロックの生成 673 653 $IF num_ambxid > 0$ 674 654 MBXINIB _kernel_ambxinib_table[$num_ambxid$];$NL$ … … 677 657 $END$$NL$ 678 658 679 $ [{bNXÇubN̶¬659 $ メールボックス管理ブロックの生成 680 660 $IF num_mbxid > 0$ 681 661 MBXCB _kernel_mbxcb_table[TNUM_MBXID];$NL$ … … 685 665 686 666 $ 687 $ Åè·v[667 $ 固定長メモリプール 688 668 $ 689 669 /*$NL$ … … 692 672 $NL$ 693 673 694 $ ÃIɶ¬³ê½Åè·v[Ì674 $ 静的に生成された固定長メモリプールの数 695 675 #define TNUM_SMPFID $LENGTH(MPF.ID_LIST)$$NL$ 696 676 $NL$ 697 677 698 $ Åè·v[IDÔÌÅål678 $ 固定長メモリプールID番号の最大値 699 679 const ID _kernel_tmax_mpfid = (TMIN_MPFID + TNUM_MPFID - 1);$NL$ 700 680 const ID _kernel_tmax_smpfid = (TMIN_MPFID + TNUM_SMPFID - 1);$NL$ … … 703 683 $IF LENGTH(MPF.ID_LIST)$ 704 684 $FOREACH mpfid MPF.ID_LIST$ 705 $ // mpfatr ªimTA_TPRInjÅÈ¢êiE_RSATRj685 $ // mpfatrが([TA_TPRI])でない場合(E_RSATR) 706 686 $IF (MPF.MPFATR[mpfid] & ~TA_TPRI) != 0$ 707 687 $ERROR MPF.TEXT_LINE[mpfid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "mpfatr", MPF.MPFATR[mpfid], mpfid, "CRE_MPF")$$END$ 708 688 $END$ 709 689 710 $ // blkcnt ª0ȺÌêiE_PARj690 $ // blkcntが0以下の場合(E_PAR) 711 691 $IF MPF.BLKCNT[mpfid] <= 0$ 712 692 $ERROR MPF.TEXT_LINE[mpfid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "blkcnt", MPF.BLKCNT[mpfid], mpfid, "CRE_MPF")$$END$ 713 693 $END$ 714 694 715 $ // blksz ª0ȺÌêiE_PARj695 $ // blkszが0以下の場合(E_PAR) 716 696 $IF MPF.BLKSZ[mpfid] <= 0$ 717 697 $ERROR MPF.TEXT_LINE[mpfid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "blksz", MPF.BLKSZ[mpfid], mpfid, "CRE_MPF")$$END$ 718 698 $END$ 719 699 720 $ // Åè·v[Ìæ700 $ // 固定長メモリプール領域 721 701 $IF EQ(MPF.MPF[mpfid], "NULL")$ 722 702 static MPF_T _kernel_mpf_$mpfid$[($MPF.BLKCNT[mpfid]$) * COUNT_MPF_T($MPF.BLKSZ[mpfid]$)];$NL$ 723 703 $END$ 724 704 725 $ // mpfmb ªNULLÅÈ¢êiE_NOSPTj705 $ // mpfmbがNULLでない場合(E_NOSPT) 726 706 $IF !EQ(MPF.MPFMB[mpfid], "NULL")$ 727 707 $ERROR MPF.TEXT_LINE[mpfid]$E_NOSPT: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "mpfmb", MPF.MPFMB[mpfid], mpfid, "CRE_MPF")$$END$ 728 708 $END$ 729 709 730 $ // Åè·v[ÇÌæ710 $ // 固定長メモリプール管理領域 731 711 static MPFMB _kernel_mpfmb_$mpfid$[$MPF.BLKCNT[mpfid]$];$NL$ 732 712 $END$ 733 713 734 $ // Åè·v[ú»ubN̶¬714 $ // 固定長メモリプール初期化ブロックの生成 735 715 const MPFINIB _kernel_mpfinib_table[TNUM_SMPFID] = {$NL$ 736 716 $JOINEACH mpfid MPF.ID_LIST ",\n"$ … … 742 722 $END$$NL$ 743 723 744 $ ®I¶¬Åè·v[pÌÅè·v[ú»ubN̶¬724 $ 動的生成固定長メモリプール用の固定長メモリプール初期化ブロックの生成 745 725 $IF num_ampfid > 0$ 746 726 MPFINIB _kernel_ampfinib_table[$num_ampfid$];$NL$ … … 749 729 $END$$NL$ 750 730 751 $ Åè·v[ÇubN̶¬731 $ 固定長メモリプール管理ブロックの生成 752 732 $IF num_mpfid > 0$ 753 733 MPFCB _kernel_mpfcb_table[TNUM_MPFID];$NL$ … … 757 737 758 738 $ 759 $ üúnh739 $ 周期ハンドラ 760 740 $ 761 741 /*$NL$ … … 764 744 $NL$ 765 745 766 $ ÃIɶ¬³ê½üúnhÌ746 $ 静的に生成された周期ハンドラの数 767 747 #define TNUM_SCYCID $LENGTH(CYC.ID_LIST)$$NL$ 768 748 $NL$ 769 749 770 $ üúnhIDÔÌÅål750 $ 周期ハンドラID番号の最大値 771 751 const ID _kernel_tmax_cycid = (TMIN_CYCID + TNUM_CYCID - 1);$NL$ 772 752 const ID _kernel_tmax_scycid = (TMIN_CYCID + TNUM_SCYCID - 1);$NL$ 773 753 $NL$ 774 754 775 $ üúnhú»e[u̶¬755 $ 周期ハンドラ初期化テーブルの生成 776 756 $IF LENGTH(CYC.ID_LIST)$ 777 757 const CYCINIB _kernel_cycinib_table[TNUM_SCYCID] = {$NL$ 778 758 $JOINEACH cycid CYC.ID_LIST ",\n"$ 779 $ // cycatr ªimTA_STAnjÅÈ¢êiE_RSATRj759 $ // cycatrが([TA_STA])でない場合(E_RSATR) 780 760 $IF (CYC.CYCATR[cycid] & ~TA_STA) != 0$ 781 761 $ERROR CYC.TEXT_LINE[cycid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "cycatr", CYC.CYCATR[cycid], cycid, "CRE_CYC")$$END$ 782 762 $END$ 783 763 784 $ // (0 < cyctim && cyctim <= TMAX_RELTIM) ÅÈ¢êiE_PARj764 $ // (0 < cyctim && cyctim <= TMAX_RELTIM)でない場合(E_PAR) 785 765 $IF !(0 < CYC.CYCTIM[cycid] && CYC.CYCTIM[cycid] <= TMAX_RELTIM)$ 786 766 $ERROR CYC.TEXT_LINE[cycid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "cyctim", CYC.CYCTIM[cycid], cycid, "CRE_CYC")$$END$ 787 767 $END$ 788 768 789 $ // (0 <= cycphs && cycphs <= TMAX_RELTIM) ÅÈ¢êiE_PARj769 $ // (0 <= cycphs && cycphs <= TMAX_RELTIM)でない場合(E_PAR) 790 770 $IF !(0 <= CYC.CYCPHS[cycid] && CYC.CYCPHS[cycid] <= TMAX_RELTIM)$ 791 771 $ERROR CYC.TEXT_LINE[cycid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "cycphs", CYC.CYCPHS[cycid], cycid, "CRE_CYC")$$END$ 792 772 $END$ 793 773 794 $ // xFcycatrÉTA_STAªÝè³êÄ¢ÄC(cycphs == 0)Ìê774 $ // 警告:cycatrにTA_STAが設定されていて,(cycphs == 0)の場合 795 775 $IF (CYC.CYCATR[cycid] & TA_STA) != 0 && CYC.CYCPHS[cycid] == 0$ 796 776 $WARNING CYC.TEXT_LINE[cycid]$$FORMAT(_("%1% is not recommended when %2% is set to %3% in %4%"), "cycphs==0", "TA_STA", "cycatr", "CRE_CYC")$$END$ 797 777 $END$ 798 778 799 $ // üúnhú»ubN779 $ // 周期ハンドラ初期化ブロック 800 780 $TAB${ ($CYC.CYCATR[cycid]$), (intptr_t)($CYC.EXINF[cycid]$), ($CYC.CYCHDR[cycid]$), ($CYC.CYCTIM[cycid]$), ($CYC.CYCPHS[cycid]$) } 801 781 $END$$NL$ … … 805 785 $END$$NL$ 806 786 807 $ ®I¶¬üúnhpÌüúnhú»ubN̶¬787 $ 動的生成周期ハンドラ用の周期ハンドラ初期化ブロックの生成 808 788 $IF num_acycid > 0$ 809 789 CYCINIB _kernel_acycinib_table[$num_acycid$];$NL$ … … 812 792 $END$$NL$ 813 793 814 $ üúnhÇubN̶¬794 $ 周期ハンドラ管理ブロックの生成 815 795 $IF num_cycid > 0$ 816 796 CYCCB _kernel_cyccb_table[TNUM_CYCID];$NL$ … … 820 800 821 801 $ 822 $ A[nh802 $ アラームハンドラ 823 803 $ 824 804 /*$NL$ … … 827 807 $NL$ 828 808 829 $ ÃIɶ¬³ê½A[nhÌ809 $ 静的に生成されたアラームハンドラの数 830 810 #define TNUM_SALMID $LENGTH(ALM.ID_LIST)$$NL$ 831 811 $NL$ 832 812 833 $ A[nhIDÔÌÅål813 $ アラームハンドラID番号の最大値 834 814 const ID _kernel_tmax_almid = (TMIN_ALMID + TNUM_ALMID - 1);$NL$ 835 815 const ID _kernel_tmax_salmid = (TMIN_ALMID + TNUM_SALMID - 1);$NL$ 836 816 $NL$ 837 817 838 $ A[nhú»ubN̶¬818 $ アラームハンドラ初期化ブロックの生成 839 819 $IF LENGTH(ALM.ID_LIST)$ 840 820 const ALMINIB _kernel_alminib_table[TNUM_SALMID] = {$NL$ 841 821 $JOINEACH almid ALM.ID_LIST ",\n"$ 842 $ // almatr ªiTA_NULLjÅÈ¢êiE_RSATRj822 $ // almatrが(TA_NULL)でない場合(E_RSATR) 843 823 $IF ALM.ALMATR[almid] != 0$ 844 824 $ERROR ALM.TEXT_LINE[almid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "almatr", ALM.ALMATR[almid], almid, "CRE_ALM")$$END$ 845 825 $END$ 846 826 847 $ // A[nhú»ubN827 $ // アラームハンドラ初期化ブロック 848 828 $TAB${ ($ALM.ALMATR[almid]$), (intptr_t)($ALM.EXINF[almid]$), ($ALM.ALMHDR[almid]$) } 849 829 $END$$NL$ … … 853 833 $END$$NL$ 854 834 855 $ ®I¶¬A[nhpÌA[nhú»ubN̶¬835 $ 動的生成アラームハンドラ用のアラームハンドラ初期化ブロックの生成 856 836 $IF num_aalmid > 0$ 857 837 ALMINIB _kernel_aalminib_table[$num_aalmid$];$NL$ … … 860 840 $END$$NL$ 861 841 862 $ A[nhÇubN̶¬842 $ アラームハンドラ管理ブロックの生成 863 843 $IF num_almid > 0$ 864 844 ALMCB _kernel_almcb_table[TNUM_ALMID];$NL$ … … 868 848 869 849 $ 870 $ ÝÇ@\850 $ 割込み管理機能 871 851 $ 872 852 /*$NL$ … … 875 855 $NL$ 876 856 877 $ ÝÔÆÝnhÔÌÏ·e[uÌì¬857 $ 割込み番号と割込みハンドラ番号の変換テーブルの作成 878 858 $IF LENGTH(INTNO_ATTISR_VALID) != LENGTH(INHNO_ATTISR_VALID)$ 879 859 $ERROR$length of `INTNO_ATTISR_VALID' is different from length of `INHNO_ATTISR_VALID'$END$ … … 887 867 $END$ 888 868 889 $ ÝvCÉÖ·éG[`FbN869 $ 割込み要求ラインに関するエラーチェック 890 870 $i = 0$ 891 871 $FOREACH intno INT.ORDER_LIST$ 892 $ // intno ªCFG_INTÉηéÝÔÆµÄ³µÈ¢êiE_PARj872 $ // intnoがCFG_INTに対する割込み番号として正しくない場合(E_PAR) 893 873 $IF !LENGTH(FIND(INTNO_CFGINT_VALID, INT.INTNO[intno]))$ 894 874 $ERROR INT.TEXT_LINE[intno]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "intno", INT.INTNO[intno], "CFG_INT")$$END$ 895 875 $END$ 896 876 897 $ // intno ªCFG_INTÉæÁÄÝèÏÝÌêiE_OBJj877 $ // intnoがCFG_INTによって設定済みの場合(E_OBJ) 898 878 $j = 0$ 899 879 $FOREACH intno2 INT.ORDER_LIST$ … … 904 884 $END$ 905 885 906 $ // intatr ªimTA_ENAINTnbmTA_EDGEnjÅÈ¢êiE_RSATRj886 $ // intatrが([TA_ENAINT]|[TA_EDGE])でない場合(E_RSATR) 907 887 $IF (INT.INTATR[intno] & ~(TA_ENAINT|TA_EDGE|TARGET_INTATR)) != 0$ 908 888 $ERROR INT.TEXT_LINE[intno]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of %3% `%4%\' in %5%"), "intatr", INT.INTATR[intno], "intno", INT.INTNO[intno], "CFG_INT")$$END$ 909 889 $END$ 910 890 911 $ // intpri ªCFG_INTÉηéÝDæxƵijµÈ¢êiE_PARj891 $ // intpriがCFG_INTに対する割込み優先度として正しくない場合(E_PAR) 912 892 $IF !LENGTH(FIND(INTPRI_CFGINT_VALID, INT.INTPRI[intno]))$ 913 893 $ERROR INT.TEXT_LINE[intno]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "intpri", INT.INTPRI[intno], "CFG_INT")$$END$ 914 894 $END$ 915 895 916 $ // J[lÇÉÅè³êÄ¢éintnoÉεÄCintpriÉTMIN_INTPRI917 $ // æèଳ¢lªwè³ê½êiE_OBJj896 $ // カーネル管理に固定されているintnoに対して,intpriにTMIN_INTPRI 897 $ // よりも小さい値が指定された場合(E_OBJ) 918 898 $IF LENGTH(FIND(INTNO_FIX_KERNEL, intno))$ 919 899 $IF INT.INTPRI[intno] < TMIN_INTPRI$ … … 922 902 $END$ 923 903 924 $ // J[lÇOÉÅè³êÄ¢éintnoÉεÄCintpriÉTMIN_INTPRI925 $ // æèଳ¢lªwè³êÈ©Á½êiE_OBJj904 $ // カーネル管理外に固定されているintnoに対して,intpriにTMIN_INTPRI 905 $ // よりも小さい値が指定されなかった場合(E_OBJ) 926 906 $IF LENGTH(FIND(INTNO_FIX_NONKERNEL, intno))$ 927 907 $IF INT.INTPRI[intno] >= TMIN_INTPRI$ … … 932 912 $END$ 933 913 934 $ ÝnhÉÖ·éG[`FbN914 $ 割込みハンドラに関するエラーチェック 935 915 $i = 0$ 936 916 $FOREACH inhno INH.ORDER_LIST$ 937 $ // inhno ªDEF_INHÉηéÝnhÔÆµÄ³µÈ¢êiE_PARj917 $ // inhnoがDEF_INHに対する割込みハンドラ番号として正しくない場合(E_PAR) 938 918 $IF !LENGTH(FIND(INHNO_DEFINH_VALID, INH.INHNO[inhno]))$ 939 919 $ERROR INH.TEXT_LINE[inhno]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "inhno", INH.INHNO[inhno], "DEF_INH")$$END$ 940 920 $END$ 941 921 942 $ // inhno ªDEF_INHÉæÁÄÝèÏÝÌêiE_OBJj922 $ // inhnoがDEF_INHによって設定済みの場合(E_OBJ) 943 923 $j = 0$ 944 924 $FOREACH inhno2 INH.ORDER_LIST$ … … 949 929 $END$ 950 930 951 $ // inhatr ªiTA_NULLjÅÈ¢êiE_RSATRj931 $ // inhatrが(TA_NULL)でない場合(E_RSATR) 952 932 $IF (INH.INHATR[inhno] & ~TARGET_INHATR) != 0$ 953 933 $ERROR INH.TEXT_LINE[inhno]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of %3% `%4%\' in %5%"), "inhatr", INH.INHATR[inhno], "inhno", INH.INHNO[inhno], "DEF_INH")$$END$ 954 934 $END$ 955 935 956 $ // J[lÇÉÅè³êÄ¢éinhnoÉεÄCinhatrÉTA_NONKERNEL957 $ // @ªwè³êÄ¢éêiE_RSATRj936 $ // カーネル管理に固定されているinhnoに対して,inhatrにTA_NONKERNEL 937 $ // が指定されている場合(E_RSATR) 958 938 $IF LENGTH(FIND(INHNO_FIX_KERNEL, inhno))$ 959 939 $IF (INH.INHATR[inhno] & TA_NONKERNEL) != 0$ … … 962 942 $END$ 963 943 964 $ // J[lÇOÉÅè³êÄ¢éinhnoÉεÄCinhatrÉTA_NONKERNEL965 $ // ªwè³êĢȢêiE_RSATRj944 $ // カーネル管理外に固定されているinhnoに対して,inhatrにTA_NONKERNEL 945 $ // が指定されていない場合(E_RSATR) 966 946 $IF LENGTH(FIND(INHNO_FIX_NONKERNEL, inhno))$ 967 947 $IF (INH.INHATR[inhno] & TA_NONKERNEL) == 0$ … … 972 952 $IF LENGTH(INTNO[INH.INHNO[inhno]])$ 973 953 $intno = INTNO[INH.INHNO[inhno]]$ 974 $ // inhno ÉηéintnoÉηéCFG_INTªÈ¢êiE_OBJj954 $ // inhnoに対応するintnoに対するCFG_INTがない場合(E_OBJ) 975 955 $IF !LENGTH(INT.INTNO[intno])$ 976 956 $ERROR INH.TEXT_LINE[inhno]$E_OBJ: $FORMAT(_("%1% `%2%\' corresponding to %3% `%4%\' is not configured with %5%"), "intno", INT.INTNO[intno], "inhno", INH.INHNO[inhno], "CFG_INT")$$END$ 977 957 $ELSE$ 978 958 $IF (INH.INHATR[inhno] & TA_NONKERNEL) == 0$ 979 $ // inhatr ÉTA_NONKERNELªwè³êĨç¸CinhnoÉÎ980 $ // ·éintnoÉεÄCFG_INTÅÝè³ê½ÝDæxª981 $ // TMIN_INTPRI æèଳ¢êiE_OBJj959 $ // inhatrにTA_NONKERNELが指定されておらず,inhnoに対応 960 $ // するintnoに対してCFG_INTで設定された割込み優先度が 961 $ // TMIN_INTPRIよりも小さい場合(E_OBJ) 982 962 $IF INT.INTPRI[intno] < TMIN_INTPRI$ 983 963 $ERROR INT.TEXT_LINE[intno]$E_OBJ: $FORMAT(_("%1% `%2%\' configured for %3% `%4%\' is higher than %5%"), "intpri", INT.INTPRI[intno], "inhno", INH.INHNO[inhno], "TMIN_INTPRI")$$END$ 984 964 $END$ 985 965 $ELSE$ 986 $ // inhatr ÉTA_NONKERNELªwè³êĨèCinhnoÉÎ987 $ // ·éintnoÉεÄCFG_INTÅÝè³ê½ÝDæxª988 $ // TMIN_INTPRI ÈãÅ éêiE_OBJj966 $ // inhatrにTA_NONKERNELが指定されており,inhnoに対応 967 $ // するintnoに対してCFG_INTで設定された割込み優先度が 968 $ // TMIN_INTPRI以上である場合(E_OBJ) 989 969 $IF INT.INTPRI[intno] >= TMIN_INTPRI$ 990 970 $ERROR INT.TEXT_LINE[intno]$E_OBJ: $FORMAT(_("%1% `%2%\' configured for %3% `%4%\' is lower than or equal to %5%"), "intpri", INT.INTPRI[intno], "inhno", INH.INHNO[inhno], "TMIN_INTPRI")$$END$ … … 996 976 $END$ 997 977 998 $ ÝT[rX[`iISRjÉÖ·éG[`FbN978 $ 割込みサービスルーチン(ISR)に関するエラーチェック 999 979 $FOREACH order ISR.ORDER_LIST$ 1000 $ // isratr ªiTA_NULLjÅÈ¢êiE_RSATRj980 $ // isratrが(TA_NULL)でない場合(E_RSATR) 1001 981 $IF (ISR.ISRATR[order] & ~TARGET_ISRATR) != 0$ 1002 982 $ERROR ISR.TEXT_LINE[order]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "isratr", ISR.ISRATR[order], "ATT_ISR")$$END$ 1003 983 $END$ 1004 984 1005 $ // intno ªATT_ISRÉηéÝÔÆµÄ³µÈ¢êiE_PARj985 $ // intnoがATT_ISRに対する割込み番号として正しくない場合(E_PAR) 1006 986 $IF !LENGTH(FIND(INTNO_ATTISR_VALID, ISR.INTNO[order]))$ 1007 987 $ERROR ISR.TEXT_LINE[order]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "intno", ISR.INTNO[order], "ATT_ISR")$$END$ 1008 988 $END$ 1009 989 1010 $ // (TMIN_ISRPRI <= isrpri && isrpri <= TMAX_ISRPRI) ÅÈ¢êiE_PARj990 $ // (TMIN_ISRPRI <= isrpri && isrpri <= TMAX_ISRPRI)でない場合(E_PAR) 1011 991 $IF !(TMIN_ISRPRI <= ISR.ISRPRI[order] && ISR.ISRPRI[order] <= TMAX_ISRPRI)$ 1012 992 $ERROR ISR.TEXT_LINE[order]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "isrpri", ISR.ISRPRI[order], "ATT_ISR")$$END$ … … 1017 997 $inhno = INHNO[intno]$ 1018 998 1019 $ // ÝÔintnoÉεÄo^³ê½ISRÌXgÌì¬999 $ // 割込み番号intnoに対して登録されたISRのリストの作成 1020 1000 $isr_order_list = {}$ 1021 1001 $FOREACH order ISR.ORDER_LIST$ … … 1026 1006 $END$ 1027 1007 1028 $ // ÝÔintnoÉεÄo^³ê½ISRª¶Ý·éê1008 $ // 割込み番号intnoに対して登録されたISRが存在する場合 1029 1009 $IF LENGTH(isr_order_list) > 0$ 1030 $ // intno ÉηéinhnoÉεÄDEF_INHª éêiE_OBJj1010 $ // intnoに対応するinhnoに対してDEF_INHがある場合(E_OBJ) 1031 1011 $IF LENGTH(INH.INHNO[inhno])$ 1032 1012 $ERROR ISR.TEXT_LINE[order_for_error]$E_OBJ: $FORMAT(_("%1% `%2%\' in %3% is duplicated with %4% `%5%\'"), "intno", ISR.INTNO[order_for_error], "ATT_ISR", "inhno", INH.INHNO[inhno])$$END$ 1033 1013 $END$ 1034 1014 1035 $ // intno ÉηéCFG_INTªÈ¢êiE_OBJj1015 $ // intnoに対するCFG_INTがない場合(E_OBJ) 1036 1016 $IF !LENGTH(INT.INTNO[intno])$ 1037 1017 $ERROR ISR.TEXT_LINE[order_for_error]$E_OBJ: $FORMAT(_("%1% `%2%\' is not configured with %3%"), "intno", ISR.INTNO[order_for_error], "CFG_INT")$$END$ 1038 1018 $ELSE$ 1039 $ // intno ÉεÄCFG_INTÅÝè³ê½ÝDæxªTMIN_INTPRI1040 $ // æèଳ¢êiE_OBJj1019 $ // intnoに対してCFG_INTで設定された割込み優先度がTMIN_INTPRI 1020 $ // よりも小さい場合(E_OBJ) 1041 1021 $IF INT.INTPRI[intno] < TMIN_INTPRI$ 1042 1022 $ERROR INT.TEXT_LINE[intno]$E_OBJ: $FORMAT(_("%1% `%2%\' configured for %3% `%4%\' is higher than %5%"), "intpri", INT.INTPRI[intno], "intno", ISR.INTNO[order_for_error], "TMIN_INTPRI")$$END$ … … 1046 1026 $END$ 1047 1027 1048 $ ÝT[rX[`iISRjÇÌf[^\¢1028 $ 割込みサービスルーチン(ISR)管理のデータ構造 1049 1029 $intno_isr_list = {}$ 1050 1030 $FOREACH intno INTNO_ATTISR_VALID$ … … 1082 1062 $END$$NL$ 1083 1063 1084 $ ÝT[rX[`iISRjÄoµÌ½ßÌÝnh̶¬1064 $ 割込みサービスルーチン(ISR)呼出しのための割込みハンドラの生成 1085 1065 $FOREACH intno INTNO_ISR$ 1086 1066 $inhno = INHNO[intno]$ … … 1092 1072 $INH.ORDER_LIST = APPEND(INH.ORDER_LIST, inhno)$ 1093 1073 1094 $ // ISR pÌÝnh1074 $ // ISR用の割込みハンドラ 1095 1075 void$NL$ 1096 1076 _kernel_inthdr_$intno$(void)$NL$ … … 1103 1083 $END$ 1104 1084 1105 $ ÝT[rX[`Ì1085 $ 割込みサービスルーチンの数 1106 1086 #define TNUM_SISR $LENGTH(ISR.ORDER_LIST)$$NL$ 1107 1087 #define TNUM_ISR $LENGTH(ISR.ORDER_LIST) + num_aisrid$$NL$ 1108 1088 $NL$ 1109 1089 1110 $ ÝT[rX[`IDÔÌÅål1090 $ 割込みサービスルーチンID番号の最大値 1111 1091 const ID _kernel_tmax_isrid = (TMIN_ISRID + TNUM_ISRID - 1);$NL$ 1112 1092 const uint_t _kernel_tnum_sisr = TNUM_SISR;$NL$ 1113 1093 $NL$ 1114 1094 1115 $ ÝT[rX[`ú»ubN̶¬1095 $ 割込みサービスルーチン初期化ブロックの生成 1116 1096 $IF LENGTH(ISR.ORDER_LIST)$ 1117 1097 const ISRINIB _kernel_sisrinib_table[TNUM_SISR] = {$NL$ … … 1125 1105 $NL$ 1126 1106 1127 $ ®I¶¬ÝT[rX[`pÌÝT[rX[`ú»ub1128 $ N̶¬1107 $ 動的生成割込みサービスルーチン用の割込みサービスルーチン初期化ブロッ 1108 $ クの生成 1129 1109 $IF num_aisrid > 0$ 1130 1110 ISRINIB _kernel_aisrinib_table[$num_aisrid$];$NL$ … … 1134 1114 $NL$ 1135 1115 1136 $ ÝT[rX[`ÇubN̶¬1116 $ 割込みサービスルーチン管理ブロックの生成 1137 1117 $IF num_isr > 0$ 1138 1118 ISRCB _kernel_isrcb_table[TNUM_ISR];$NL$ … … 1143 1123 1144 1124 $ 1145 $ ÝÇ@\̽ßÌWIÈú»îñ̶¬1146 $ 1147 $ ÝnhÌú»ÉKvÈîñ1125 $ 割込み管理機能のための標準的な初期化情報の生成 1126 $ 1127 $ 割込みハンドラの初期化に必要な情報 1148 1128 $IF !OMIT_INITIALIZE_INTERRUPT || ALT(USE_INHINIB_TABLE,0)$ 1149 1129 1150 $ Ýnh1130 $ 割込みハンドラ数 1151 1131 #define TNUM_INHNO $LENGTH(INH.ORDER_LIST)$$NL$ 1152 1132 const uint_t _kernel_tnum_inhno = TNUM_INHNO;$NL$ … … 1159 1139 $NL$ 1160 1140 1161 $ Ýnhú»e[u1141 $ 割込みハンドラ初期化テーブル 1162 1142 $IF LENGTH(INH.ORDER_LIST)$ 1163 1143 const INHINIB _kernel_inhinib_table[TNUM_INHNO] = {$NL$ … … 1175 1155 $END$ 1176 1156 1177 $ ÝvCÌú»ÉKvÈîñ1157 $ 割込み要求ラインの初期化に必要な情報 1178 1158 $IF !OMIT_INITIALIZE_INTERRUPT || ALT(USE_INTINIB_TABLE,0)$ 1179 1159 1180 $ ÝvC1160 $ 割込み要求ライン数 1181 1161 #define TNUM_INTNO $LENGTH(INT.ORDER_LIST)$$NL$ 1182 1162 const uint_t _kernel_tnum_intno = TNUM_INTNO;$NL$ 1183 1163 $NL$ 1184 1164 1185 $ ÝvCú»e[u1165 $ 割込み要求ライン初期化テーブル 1186 1166 $IF LENGTH(INT.ORDER_LIST)$ 1187 1167 const INTINIB _kernel_intinib_table[TNUM_INTNO] = {$NL$ … … 1196 1176 1197 1177 $ 1198 $ CPU áOÇ@\1178 $ CPU例外管理機能 1199 1179 $ 1200 1180 /*$NL$ … … 1203 1183 $NL$ 1204 1184 1205 $ CPU áOnhÉÖ·éG[`FbN1185 $ CPU例外ハンドラに関するエラーチェック 1206 1186 $i = 0$ 1207 1187 $FOREACH excno EXC.ORDER_LIST$ 1208 $ // excno ªDEF_EXCÉηéCPUáOnhÔÆµÄ³µÈ¢êiE_PARj1188 $ // excnoがDEF_EXCに対するCPU例外ハンドラ番号として正しくない場合(E_PAR) 1209 1189 $IF !LENGTH(FIND(EXCNO_DEFEXC_VALID, EXC.EXCNO[excno]))$ 1210 1190 $ERROR EXC.TEXT_LINE[excno]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "excno", EXC.EXCNO[excno], "DEF_EXC")$$END$ 1211 1191 $END$ 1212 1192 1213 $ // excno ªDEF_EXCÉæÁÄÝèÏÝÌêiE_OBJj1193 $ // excnoがDEF_EXCによって設定済みの場合(E_OBJ) 1214 1194 $j = 0$ 1215 1195 $FOREACH excno2 EXC.ORDER_LIST$ … … 1220 1200 $END$ 1221 1201 1222 $ // excatr ªiTA_NULLjÅÈ¢êiE_RSATRj1202 $ // excatrが(TA_NULL)でない場合(E_RSATR) 1223 1203 $IF (EXC.EXCATR[excno] & ~TARGET_EXCATR) != 0$ 1224 1204 $ERROR EXC.TEXT_LINE[excno]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of %3% `%4%\' in %5%"), "excatr", EXC.EXCATR[excno], "excno", EXC.EXCNO[excno], "DEF_EXC")$$END$ … … 1227 1207 $END$ 1228 1208 1229 $ CPU áOnh̽ßÌWIÈú»îñ̶¬1209 $ CPU例外ハンドラのための標準的な初期化情報の生成 1230 1210 $IF !OMIT_INITIALIZE_EXCEPTION$ 1231 1211 1232 $ CPU áOnh1212 $ CPU例外ハンドラ数 1233 1213 #define TNUM_EXCNO $LENGTH(EXC.ORDER_LIST)$$NL$ 1234 1214 const uint_t _kernel_tnum_excno = TNUM_EXCNO;$NL$ … … 1239 1219 $NL$ 1240 1220 1241 $ CPU áOnhú»e[u1221 $ CPU例外ハンドラ初期化テーブル 1242 1222 $IF LENGTH(EXC.ORDER_LIST)$ 1243 1223 const EXCINIB _kernel_excinib_table[TNUM_EXCNO] = {$NL$ … … 1252 1232 1253 1233 $ 1254 $ ñ^XNReLXgpÌX^bNÌæ1234 $ 非タスクコンテキスト用のスタック領域 1255 1235 $ 1256 1236 /*$NL$ … … 1260 1240 1261 1241 $IF !LENGTH(ICS.ORDER_LIST)$ 1262 $ // DEF_ICS ªÈ¢êÌftHglÌÝè1242 $ // DEF_ICSがない場合のデフォルト値の設定 1263 1243 #ifdef DEFAULT_ISTK$NL$ 1264 1244 $NL$ … … 1275 1255 $ELSE$ 1276 1256 1277 $ // ÃIAPIuDEF_ICSvª¡ éiE_OBJj1257 $ // 静的API「DEF_ICS」が複数ある(E_OBJ) 1278 1258 $IF LENGTH(ICS.ORDER_LIST) > 1$ 1279 1259 $ERROR$E_OBJ: $FORMAT(_("too many %1%"), "DEF_ICS")$$END$ 1280 1260 $END$ 1281 1261 1282 $ // istksz ª0Ⱥ©C^[Qbgè`ÌŬliTARGET_MIN_ISTKSZjæèà1283 $ // ¬³¢êiE_PARj1262 $ // istkszが0以下か,ターゲット定義の最小値(TARGET_MIN_ISTKSZ)よりも 1263 $ // 小さい場合(E_PAR) 1284 1264 $IF ICS.ISTKSZ[1] <= 0 || (TARGET_MIN_ISTKSZ 1285 1265 && ICS.ISTKSZ[1] < TARGET_MIN_ISTKSZ)$ … … 1287 1267 $END$ 1288 1268 1289 $ // istksz ªX^bNÌæÌTCYƵijµÈ¢êiE_PARj1269 $ // istkszがスタック領域のサイズとして正しくない場合(E_PAR) 1290 1270 $IF !EQ(ICS.ISTK[1], "NULL") && CHECK_STKSZ_ALIGN 1291 1271 && (ICS.ISTKSZ[1] & (CHECK_STKSZ_ALIGN - 1))$ … … 1294 1274 1295 1275 $IF EQ(ICS.ISTK[1], "NULL")$ 1296 $ // X^bNÌæÌ©®t¯1276 $ // スタック領域の自動割付け 1297 1277 static STK_T _kernel_istack[COUNT_STK_T($ICS.ISTKSZ[1]$)];$NL$ 1298 1278 #define TOPPERS_ISTKSZ ROUND_STK_T($ICS.ISTKSZ[1]$)$NL$ … … 1305 1285 $NL$ 1306 1286 1307 $ ñ^XNReLXgpÌX^bNÌæ1287 $ 非タスクコンテキスト用のスタック領域 1308 1288 const SIZE _kernel_istksz = TOPPERS_ISTKSZ;$NL$ 1309 1289 STK_T *const _kernel_istk = TOPPERS_ISTK;$NL$ … … 1315 1295 1316 1296 $ 1317 $ J[lªèt¯éÌæ1297 $ カーネルが割り付けるメモリ領域 1318 1298 $ 1319 1299 /*$NL$ … … 1323 1303 1324 1304 $IF !LENGTH(KMM.ORDER_LIST)$ 1325 $ // DEF_KMM ªÈ¢êÌftHglÌÝè1305 $ // DEF_KMMがない場合のデフォルト値の設定 1326 1306 #define TOPPERS_KMMSZ 0$NL$ 1327 1307 #define TOPPERS_KMM NULL$NL$ 1328 1308 $ELSE$ 1329 $ // ÃIAPIuDEF_KMMvª¡ éiE_OBJj1309 $ // 静的API「DEF_KMM」が複数ある(E_OBJ) 1330 1310 $IF LENGTH(KMM.ORDER_LIST) > 1$ 1331 1311 $ERROR$E_OBJ: $FORMAT(_("too many %1%"), "DEF_KMM")$$END$ 1332 1312 $END$ 1333 1313 1334 $ // kmmsz ª0ȺÌêiE_PARj1314 $ // kmmszが0以下の場合(E_PAR) 1335 1315 $IF KMM.KMMSZ[1] <= 0$ 1336 1316 $ERROR KMM.TEXT_LINE[1]$E_PAR: $FORMAT(_("%1% `%2%\' is zero in %3%"), "kmmsz", KMM.KMMSZ[1], "DEF_KMM")$$END$ 1337 1317 $END$ 1338 1318 1339 $ // kmmsz ªJ[lªèt¯éÌæÌTCYƵijµÈ¢êiE_PARj1319 $ // kmmszがカーネルが割り付けるメモリ領域のサイズとして正しくない場合(E_PAR) 1340 1320 $IF !EQ(KMM.KMM[1], "NULL") && CHECK_MB_ALIGN 1341 1321 && (KMM.KMMSZ[1] & (CHECK_MB_ALIGN - 1))$ … … 1344 1324 1345 1325 $IF EQ(KMM.KMM[1], "NULL")$ 1346 $ // J[lªèt¯éÌæÌ©®t¯1326 $ // カーネルが割り付けるメモリ領域の自動割付け 1347 1327 static MB_T _kernel_memory[TOPPERS_COUNT_SZ($KMM.KMMSZ[1]$, sizeof(MB_T))];$NL$ 1348 1328 #define TOPPERS_KMMSZ TOPPERS_ROUND_SZ($KMM.KMMSZ[1]$, sizeof(MB_T))$NL$ … … 1355 1335 $NL$ 1356 1336 1357 $ J[lªèt¯éÌæ1337 $ カーネルが割り付けるメモリ領域 1358 1338 const SIZE _kernel_kmmsz = TOPPERS_KMMSZ;$NL$ 1359 1339 MB_T *const _kernel_kmm = TOPPERS_KMM;$NL$ … … 1361 1341 1362 1342 $ 1363 $ ^CCxgÇ1343 $ タイムイベント管理 1364 1344 $ 1365 1345 /*$NL$ … … 1371 1351 1372 1352 $ 1373 $ eW 1374 [Ìú»Ö 1353 $ 各モジュールの初期化関数 1375 1354 $ 1376 1355 /*$NL$ … … 1397 1376 1398 1377 $ 1399 $ ú»[`ÌÀsÖ1378 $ 初期化ルーチンの実行関数 1400 1379 $ 1401 1380 /*$NL$ … … 1407 1386 {$NL$ 1408 1387 $FOREACH order INI.ORDER_LIST$ 1409 $ // iniatr ªiTA_NULLjÅÈ¢êiE_RSATRj1388 $ // iniatrが(TA_NULL)でない場合(E_RSATR) 1410 1389 $IF INI.INIATR[order] != 0$ 1411 1390 $ERROR INI.TEXT_LINE[order]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of %3% `%4%\' in %5%"), "iniatr", INI.INIATR[order], "inirtn", INI.INIRTN[order], "ATT_INI")$$END$ … … 1417 1396 1418 1397 $ 1419 $ I¹[`ÌÀsÖ1398 $ 終了処理ルーチンの実行関数 1420 1399 $ 1421 1400 /*$NL$ … … 1427 1406 {$NL$ 1428 1407 $FOREACH rorder TER.RORDER_LIST$ 1429 $ // teratr ªiTA_NULLjÅÈ¢êiE_RSATRj1408 $ // teratrが(TA_NULL)でない場合(E_RSATR) 1430 1409 $IF TER.TERATR[rorder] != 0$ 1431 1410 $ERROR TER.TEXT_LINE[rorder]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of %3% `%4%\' in %5%"), "teratr", TER.TERATR[rorder], "terrtn", TER.TERRTN[rorder], "ATT_TER")$$END$ -
Property svn:mime-type
changed from
Note:
See TracChangeset
for help on using the changeset viewer.