Ignore:
Timestamp:
Mar 8, 2016, 8:37:45 PM (8 years ago)
Author:
coas-nagasima
Message:

MIMEにSJISを設定

File:
1 edited

Legend:

Unmodified
Added
Removed
  • UsbWattMeter/trunk/asp_dcre/kernel/kernel.tf

    • Property svn:mime-type changed from text/plain to text/plain; charset=SHIFT_JIS
    r164 r167  
    99$               Graduate School of Information Science, Nagoya Univ., JAPAN
    1010
    11 $   ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    12 $   ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    13 $   •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    14 $   (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    15 $       Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    16 $       ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    17 $   (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    18 $       —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    19 ƒƒ“ƒgi—˜—p
    20 $       ŽÒƒ}ƒjƒ
    21 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    22 $       ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    23 $   (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    24 $       —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    25 $       ‚ƁD
    26 $     (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    27 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    28 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    29 $         ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    30 $     (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    31 $         •ñ‚·‚邱‚ƁD
    32 $   (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    33 $       ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    34 $       ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    35 $       —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    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$       免責すること.
    3733
    38 $   –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    39 $   ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    40 $   ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    41 $   ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    42 $   ‚̐ӔC‚𕉂í‚È‚¢D
     34$   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35$   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36$   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37$   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38$   の責任を負わない.
    4339$
    4440$   $Id$
     
    4743
    4844$ =====================================================================
    49 $ AID_YYY‚̏ˆ—
     45$ AID_YYYの処理
    5046$ =====================================================================
    5147
    5248$num_atskid = 0$
    5349$FOREACH i ATSK.ORDER_LIST$
    54 $       // notsk‚ª•‰‚̏ꍇiE_PARj
     50$       // notskが負の場合(E_PAR)
    5551        $IF ATSK.NOTSK[i] < 0$
    5652                $ERROR ATSK.TEXT_LINE[i]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "notsk", ATSK.NOTSK[i], "AID_TSK")$$END$
     
    6258$num_asemid = 0$
    6359$FOREACH i ASEM.ORDER_LIST$
    64 $       // nosem‚ª•‰‚̏ꍇiE_PARj
     60$       // nosemが負の場合(E_PAR)
    6561        $IF ASEM.NOSEM[i] < 0$
    6662                $ERROR ASEM.TEXT_LINE[i]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "nosem", ASEM.NOSEM[i], "AID_SEM")$$END$
     
    7268$num_aflgid = 0$
    7369$FOREACH i AFLG.ORDER_LIST$
    74 $       // noflg‚ª•‰‚̏ꍇiE_PARj
     70$       // noflgが負の場合(E_PAR)
    7571        $IF AFLG.NOFLG[i] < 0$
    7672                $ERROR AFLG.TEXT_LINE[i]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "noflg", AFLG.NOFLG[i], "AID_FLG")$$END$
     
    8278$num_adtqid = 0$
    8379$FOREACH i ADTQ.ORDER_LIST$
    84 $       // nodtq‚ª•‰‚̏ꍇiE_PARj
     80$       // nodtqが負の場合(E_PAR)
    8581        $IF ADTQ.NODTQ[i] < 0$
    8682                $ERROR ADTQ.TEXT_LINE[i]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "nodtq", ADTQ.NODTQ[i], "AID_DTQ")$$END$
     
    9288$num_apdqid = 0$
    9389$FOREACH i APDQ.ORDER_LIST$
    94 $       // nopdq‚ª•‰‚̏ꍇiE_PARj
     90$       // nopdqが負の場合(E_PAR)
    9591        $IF APDQ.NOPDQ[i] < 0$
    9692                $ERROR APDQ.TEXT_LINE[i]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "nopdq", APDQ.NOPDQ[i], "AID_PDQ")$$END$
     
    10298$num_ambxid = 0$
    10399$FOREACH i AMBX.ORDER_LIST$
    104 $       // nombx‚ª•‰‚̏ꍇiE_PARj
     100$       // nombxが負の場合(E_PAR)
    105101        $IF AMBX.NOMBX[i] < 0$
    106102                $ERROR AMBX.TEXT_LINE[i]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "nombx", AMBX.NOMBX[i], "AID_MBX")$$END$
     
    112108$num_ampfid = 0$
    113109$FOREACH i AMPF.ORDER_LIST$
    114 $       // nompf‚ª•‰‚̏ꍇiE_PARj
     110$       // nompfが負の場合(E_PAR)
    115111        $IF AMPF.NOMPF[i] < 0$
    116112                $ERROR AMPF.TEXT_LINE[i]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "nompf", AMPF.NOMPF[i], "AID_MPF")$$END$
     
    122118$num_acycid = 0$
    123119$FOREACH i ACYC.ORDER_LIST$
    124 $       // nocyc‚ª•‰‚̏ꍇiE_PARj
     120$       // nocycが負の場合(E_PAR)
    125121        $IF ACYC.NOCYC[i] < 0$
    126122                $ERROR ACYC.TEXT_LINE[i]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "nocyc", ACYC.NOCYC[i], "AID_CYC")$$END$
     
    132128$num_aalmid = 0$
    133129$FOREACH i AALM.ORDER_LIST$
    134 $       // noalm‚ª•‰‚̏ꍇiE_PARj
     130$       // noalmが負の場合(E_PAR)
    135131        $IF AALM.NOALM[i] < 0$
    136132                $ERROR AALM.TEXT_LINE[i]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "noalm", AALM.NOALM[i], "AID_ALM")$$END$
     
    142138$num_aisrid = 0$
    143139$FOREACH i AISR.ORDER_LIST$
    144 $       // noisr‚ª•‰‚̏ꍇiE_PARj
     140$       // noisrが負の場合(E_PAR)
    145141        $IF AISR.NOISR[i] < 0$
    146142                $ERROR AISR.TEXT_LINE[i]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "noisr", AISR.NOISR[i], "AID_ISR")$$END$
     
    152148
    153149$ =====================================================================
    154 $ kernel_cfg.h‚̐¶¬
     150$ kernel_cfg.hの生成
    155151$ =====================================================================
    156152
     
    202198
    203199$ =====================================================================
    204 $ kernel_cfg.c‚̐¶¬
     200$ kernel_cfg.cの生成
    205201$ =====================================================================
    206202
     
    216212
    217213$
    218 ƒCƒ“ƒNƒ‹[ƒhƒfƒBƒŒƒNƒeƒBƒui#includej
     214インクルードディレクティブ(#include)
    219215$
    220216/*$NL$
     
    226222
    227223$
    228 ƒIƒuƒWƒFƒNƒg‚ÌID”ԍ†‚ð•ÛŽ‚·‚é•Ï”
     224オブジェクトのID番号を保持する変数
    229225$
    230226$IF USE_EXTERNAL_ID$
     
    263259
    264260$
    265 ƒ^ƒXƒN
     261タスク
    266262$
    267263/*$NL$
     
    270266$NL$
    271267
    272 $ Ã“I‚ɐ¶¬‚³‚ꂽƒ^ƒXƒN‚ª1ŒÂˆÈã‘¶Ý‚·‚邱‚Ƃ̃`ƒFƒbƒN
     268$ 静的に生成されたタスクが1個以上存在することのチェック
    273269$IF !LENGTH(TSK.ID_LIST)$
    274270        $ERROR$$FORMAT(_("no task is registered"))$$END$
    275271$END$
    276272
    277 $ Ã“I‚ɐ¶¬‚³‚ꂽƒ^ƒXƒN‚̐”
     273$ 静的に生成されたタスクの数
    278274#define TNUM_STSKID     $LENGTH(TSK.ID_LIST)$$NL$
    279275$NL$
    280276
    281 $ ƒ^ƒXƒNID”ԍ†‚̍őå’l
     277$ タスクID番号の最大値
    282278const ID _kernel_tmax_tskid = (TMIN_TSKID + TNUM_TSKID - 1);$NL$
    283279const ID _kernel_tmax_stskid = (TMIN_TSKID + TNUM_STSKID - 1);$NL$
    284280$NL$
    285281
    286 $ ƒGƒ‰[ƒ`ƒFƒbƒN
     282$ エラーチェック
    287283$FOREACH tskid TSK.ID_LIST$
    288 $       // tskatr‚ªimTA_ACTnj‚Å‚È‚¢ê‡iE_RSATRj
     284$       // tskatrが([TA_ACT])でない場合(E_RSATR)
    289285        $IF (TSK.TSKATR[tskid] & ~(TA_ACT|TARGET_TSKATR)) != 0$
    290286                $ERROR TSK.TEXT_LINE[tskid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "tskatr", TSK.TSKATR[tskid], tskid, "CRE_TSK")$$END$
    291287        $END$
    292288
    293 $       // (TMIN_TPRI <= itskpri && itskpri <= TMAX_TPRI)‚Å‚È‚¢ê‡iE_PARj
     289$       // (TMIN_TPRI <= itskpri && itskpri <= TMAX_TPRI)でない場合(E_PAR)
    294290        $IF !(TMIN_TPRI <= TSK.ITSKPRI[tskid] && TSK.ITSKPRI[tskid] <= TMAX_TPRI)$
    295291                $ERROR TSK.TEXT_LINE[tskid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "itskpri", TSK.ITSKPRI[tskid], tskid, "CRE_TSK")$$END$
    296292        $END$
    297293
    298 $       // texatr‚ªiTA_NULLj‚Å‚È‚¢ê‡iE_RSATRj
     294$       // texatrが(TA_NULL)でない場合(E_RSATR)
    299295        $IF LENGTH(TSK.TEXATR[tskid]) && TSK.TEXATR[tskid] != 0$
    300296                $ERROR DEF_TEX.TEXT_LINE[tskid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "texatr", TSK.TEXATR[tskid], tskid, "DEF_TEX")$$END$
     
    302298$END$
    303299
    304 $ ƒXƒ^ƒbƒN—̈æ‚̐¶¬‚Æ‚»‚ê‚ÉŠÖ‚·‚éƒGƒ‰[ƒ`ƒFƒbƒN
     300$ スタック領域の生成とそれに関するエラーチェック
    305301$FOREACH tskid TSK.ID_LIST$
    306 $       // stksz‚ª0ˆÈ‰º‚©Cƒ^[ƒQƒbƒg’è‹`‚̍ŏ¬’liTARGET_MIN_STKSZj‚æ‚è‚à
    307 $       // ¬‚³‚¢ê‡iE_PARj
     302$       // stkszが0以下か,ターゲット定義の最小値(TARGET_MIN_STKSZ)よりも
     303$       // 小さい場合(E_PAR)
    308304        $IF TSK.STKSZ[tskid] <= 0 || (TARGET_MIN_STKSZ
    309305                                                                        && TSK.STKSZ[tskid] < TARGET_MIN_STKSZ)$
     
    311307        $END$
    312308
    313 $       // stksz‚ªƒXƒ^ƒbƒN—̈æ‚̃TƒCƒY‚Æ‚µ‚Đ³‚µ‚­‚È‚¢ê‡iE_PARj
     309$       // stkszがスタック領域のサイズとして正しくない場合(E_PAR)
    314310        $IF !EQ(TSK.STK[tskid], "NULL") && CHECK_STKSZ_ALIGN
    315311                                                        && (TSK.STKSZ[tskid] & (CHECK_STKSZ_ALIGN - 1))$
     
    328324$NL$
    329325
    330 $ ƒ^ƒXƒN‰Šú‰»ƒuƒƒbƒN‚̐¶¬iƒ^ƒXƒN‚Í1ŒÂˆÈã‘¶Ý‚·‚éj
     326$ タスク初期化ブロックの生成(タスクは1個以上存在する)
    331327const TINIB _kernel_tinib_table[TNUM_STSKID] = {$NL$
    332328$JOINEACH tskid TSK.ID_LIST ",\n"$
    333 $       // ƒ^ƒXƒN‘®«CŠg’£î•ñC‹N“®”Ô’nC‹N“®Žž—Dæ“x
     329$       // タスク属性,拡張情報,起動番地,起動時優先度
    334330        $TAB${
    335331        $SPC$($TSK.TSKATR[tskid]$), (intptr_t)($TSK.EXINF[tskid]$),
    336332        $SPC$((TASK)($TSK.TASK[tskid]$)), INT_PRIORITY($TSK.ITSKPRI[tskid]$),
    337333
    338 $       // ƒ^ƒXƒN‰Šú‰»ƒRƒ“ƒeƒLƒXƒgƒuƒƒbƒNCƒXƒ^ƒbƒN—̈æ
     334$       // タスク初期化コンテキストブロック,スタック領域
    339335        $IF USE_TSKINICTXB$
    340336                $GENERATE_TSKINICTXB(tskid)$
     
    343339        $END$
    344340
    345 $       // ƒ^ƒXƒN—áŠOˆ—ƒ‹[ƒ`ƒ“‚Ì‘®«‚Æ‹N“®”Ô’n
     341$       // タスク例外処理ルーチンの属性と起動番地
    346342        $SPC$($ALT(TSK.TEXATR[tskid],"TA_NULL")$), ($ALT(TSK.TEXRTN[tskid],"NULL")$) }
    347343$END$$NL$
     
    349345$NL$
    350346
    351 $ “®“I¶¬ƒ^ƒXƒN—p‚̃^ƒXƒN‰Šú‰»ƒuƒƒbƒN‚̐¶¬
     347$ 動的生成タスク用のタスク初期化ブロックの生成
    352348$IF num_atskid > 0$
    353349        TINIB _kernel_atinib_table[$num_atskid$];$NL$
     
    356352$END$$NL$
    357353
    358 $ ƒ^ƒXƒNŠÇ—ƒuƒƒbƒN‚̐¶¬
     354$ タスク管理ブロックの生成
    359355TCB _kernel_tcb_table[TNUM_TSKID];$NL$
    360356$NL$
    361357
    362 $ ƒ^ƒXƒN¶¬‡˜ƒe[ƒuƒ‹‚̐¶¬
     358$ タスク生成順序テーブルの生成
    363359const ID _kernel_torder_table[TNUM_STSKID] = {$NL$
    364360$TAB$$JOINEACH tskid TSK.ORDER_LIST ", "$$tskid$$END$$NL$
     
    367363
    368364$
    369 ƒZƒ}ƒtƒH
     365セマフォ
    370366$
    371367/*$NL$
     
    374370$NL$
    375371
    376 $ Ã“I‚ɐ¶¬‚³‚ꂽƒZƒ}ƒtƒH‚̐”
     372$ 静的に生成されたセマフォの数
    377373#define TNUM_SSEMID     $LENGTH(SEM.ID_LIST)$$NL$
    378374$NL$
    379375
    380 $ ƒZƒ}ƒtƒHID”ԍ†‚̍őå’l
     376$ セマフォID番号の最大値
    381377const ID _kernel_tmax_semid = (TMIN_SEMID + TNUM_SEMID - 1);$NL$
    382378const ID _kernel_tmax_ssemid = (TMIN_SEMID + TNUM_SSEMID - 1);$NL$
    383379$NL$
    384380
    385 $ ƒZƒ}ƒtƒH‰Šú‰»ƒuƒƒbƒN‚̐¶¬
     381$ セマフォ初期化ブロックの生成
    386382$IF LENGTH(SEM.ID_LIST)$
    387383        const SEMINIB _kernel_seminib_table[TNUM_SSEMID] = {$NL$
    388384        $JOINEACH semid SEM.ID_LIST ",\n"$
    389 $               // sematr‚ªimTA_TPRInj‚Å‚È‚¢ê‡iE_RSATRj
     385$               // sematrが([TA_TPRI])でない場合(E_RSATR)
    390386                $IF (SEM.SEMATR[semid] & ~TA_TPRI) != 0$
    391387                        $ERROR SEM.TEXT_LINE[semid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "sematr", SEM.SEMATR[semid], semid, "CRE_SEM")$$END$
    392388                $END$
    393389
    394 $               // (0 <= isemcnt && isemcnt <= maxsem)‚Å‚È‚¢ê‡iE_PARj
     390$               // (0 <= isemcnt && isemcnt <= maxsem)でない場合(E_PAR)
    395391                $IF !(0 <= SEM.ISEMCNT[semid] && SEM.ISEMCNT[semid] <= SEM.MAXSEM[semid])$
    396392                        $ERROR SEM.TEXT_LINE[semid]$E_PAR: $FORMAT(_("too large %1% `%2%\' of `%3%\' in %4%"), "isemcnt", SEM.ISEMCNT[semid], semid, "CRE_SEM")$$END$
    397393                $END$
    398394
    399 $               // (1 <= maxsem && maxsem <= TMAX_MAXSEM)‚Å‚È‚¢ê‡iE_PARj
     395$               // (1 <= maxsem && maxsem <= TMAX_MAXSEM)でない場合(E_PAR)
    400396                $IF !(1 <= SEM.MAXSEM[semid] && SEM.MAXSEM[semid] <= TMAX_MAXSEM)$
    401397                        $ERROR SEM.TEXT_LINE[semid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "maxsem", SEM.MAXSEM[semid], semid, "CRE_SEM")$$END$
    402398                $END$
    403399
    404 $               // ƒZƒ}ƒtƒH‰Šú‰»ƒuƒƒbƒN
     400$               // セマフォ初期化ブロック
    405401                $TAB${ ($SEM.SEMATR[semid]$), ($SEM.ISEMCNT[semid]$), ($SEM.MAXSEM[semid]$) }
    406402        $END$$NL$
     
    410406$END$$NL$
    411407
    412 $ “®“I¶¬ƒZƒ}ƒtƒH—p‚̃Zƒ}ƒtƒH‰Šú‰»ƒuƒƒbƒN‚̐¶¬
     408$ 動的生成セマフォ用のセマフォ初期化ブロックの生成
    413409$IF num_asemid > 0$
    414410        SEMINIB _kernel_aseminib_table[$num_asemid$];$NL$
     
    417413$END$$NL$
    418414
    419 $ ƒZƒ}ƒtƒHŠÇ—ƒuƒƒbƒN‚̐¶¬
     415$ セマフォ管理ブロックの生成
    420416$IF num_semid > 0$
    421417        SEMCB _kernel_semcb_table[TNUM_SEMID];$NL$
     
    425421
    426422$
    427 ƒCƒxƒ“ƒgƒtƒ‰ƒO
     423イベントフラグ
    428424$
    429425/*$NL$
     
    432428$NL$
    433429
    434 $ Ã“I‚ɐ¶¬‚³‚ꂽƒCƒxƒ“ƒgƒtƒ‰ƒO‚̐”
     430$ 静的に生成されたイベントフラグの数
    435431#define TNUM_SFLGID     $LENGTH(FLG.ID_LIST)$$NL$
    436432$NL$
    437433
    438 $ ƒCƒxƒ“ƒgƒtƒ‰ƒOID”ԍ†‚̍őå’l
     434$ イベントフラグID番号の最大値
    439435const ID _kernel_tmax_flgid = (TMIN_FLGID + TNUM_FLGID - 1);$NL$
    440436const ID _kernel_tmax_sflgid = (TMIN_FLGID + TNUM_SFLGID - 1);$NL$
    441437$NL$
    442438
    443 $ ƒCƒxƒ“ƒgƒtƒ‰ƒO‰Šú‰»ƒuƒƒbƒN‚̐¶¬
     439$ イベントフラグ初期化ブロックの生成
    444440$IF LENGTH(FLG.ID_LIST)$
    445441        const FLGINIB _kernel_flginib_table[TNUM_SFLGID] = {$NL$
    446442        $JOINEACH flgid FLG.ID_LIST ",\n"$
    447 $               // flgatr‚ªimTA_TPRInbmTA_WMULnbmTA_CLRnj‚Å‚È‚¢ê‡iE_RSATRj
     443$               // flgatrが([TA_TPRI]|[TA_WMUL]|[TA_CLR])でない場合(E_RSATR)
    448444                $IF (FLG.FLGATR[flgid] & ~(TA_TPRI|TA_WMUL|TA_CLR)) != 0$
    449445                        $ERROR FLG.TEXT_LINE[flgid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "flgatr", FLG.FLGATR[flgid], flgid, "CRE_FLG")$$END$
    450446                $END$
    451447
    452 $               // iflgptn‚ªFLGPTN‚ÉŠi”[‚Å‚«‚È‚¢ê‡iE_PARj
     448$               // iflgptnがFLGPTNに格納できない場合(E_PAR)
    453449                $IF (FLG.IFLGPTN[flgid] & ~((1 << TBIT_FLGPTN) - 1)) != 0$
    454450                        $ERROR FLG.TEXT_LINE[flgid]$E_PAR: $FORMAT(_("too large %1% `%2%\' of `%3%\' in %4%"), "iflgptn", FLG.IFLGPTN[flgid], flgid, "CRE_FLG")$$END$
    455451                $END$
    456452
    457 $               // ƒCƒxƒ“ƒgƒtƒ‰ƒO‰Šú‰»ƒuƒƒbƒN
     453$               // イベントフラグ初期化ブロック
    458454                $TAB${ ($FLG.FLGATR[flgid]$), ($FLG.IFLGPTN[flgid]$) }
    459455        $END$$NL$
     
    463459$END$$NL$
    464460
    465 $ “®“I¶¬ƒCƒxƒ“ƒgƒtƒ‰ƒO—p‚̃Cƒxƒ“ƒgƒtƒ‰ƒO‰Šú‰»ƒuƒƒbƒN‚̐¶¬
     461$ 動的生成イベントフラグ用のイベントフラグ初期化ブロックの生成
    466462$IF num_aflgid > 0$
    467463        FLGINIB _kernel_aflginib_table[$num_aflgid$];$NL$
     
    470466$END$$NL$
    471467
    472 $ ƒCƒxƒ“ƒgƒtƒ‰ƒOŠÇ—ƒuƒƒbƒN‚̐¶¬
     468$ イベントフラグ管理ブロックの生成
    473469$IF num_flgid > 0$
    474470        FLGCB _kernel_flgcb_table[TNUM_FLGID];$NL$
     
    478474
    479475$
    480 $  ƒf[ƒ^ƒLƒ
    481 [
     476$  データキュー
    482477$
    483478/*$NL$
     
    486481$NL$
    487482
    488 $ Ã“I‚ɐ¶¬‚³‚ꂽƒf[ƒ^ƒLƒ
    489 [‚̐”
     483$ 静的に生成されたデータキューの数
    490484#define TNUM_SDTQID     $LENGTH(DTQ.ID_LIST)$$NL$
    491485$NL$
    492486
    493 $ ƒf[ƒ^ƒLƒ
    494 [ID”ԍ†‚̍őå’l
     487$ データキューID番号の最大値
    495488const ID _kernel_tmax_dtqid = (TMIN_DTQID + TNUM_DTQID - 1);$NL$
    496489const ID _kernel_tmax_sdtqid = (TMIN_DTQID + TNUM_SDTQID - 1);$NL$
     
    499492$IF LENGTH(DTQ.ID_LIST)$
    500493        $FOREACH dtqid DTQ.ID_LIST$
    501 $               // dtqatr‚ªimTA_TPRInj‚Å‚È‚¢ê‡iE_RSATRj
     494$               // dtqatrが([TA_TPRI])でない場合(E_RSATR)
    502495                $IF (DTQ.DTQATR[dtqid] & ~TA_TPRI) != 0$
    503496                        $ERROR DTQ.TEXT_LINE[dtqid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "dtqatr", DTQ.DTQATR[dtqid], dtqid, "CRE_DTQ")$$END$
    504497                $END$
    505498
    506 $               // dtqcnt‚ª•‰‚̏ꍇiE_PARj
     499$               // dtqcntが負の場合(E_PAR)
    507500                $IF DTQ.DTQCNT[dtqid] < 0$
    508501                        $ERROR DTQ.TEXT_LINE[dtqid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "dtqcnt", DTQ.DTQCNT[dtqid], dtqid, "CRE_DTQ")$$END$
    509502                $END$
    510503
    511 $               // dtqmb‚ªNULL‚Å‚È‚¢ê‡iE_NOSPTj
     504$               // dtqmbがNULLでない場合(E_NOSPT)
    512505                $IF !EQ(DTQ.DTQMB[dtqid], "NULL")$
    513506                        $ERROR DTQ.TEXT_LINE[dtqid]$E_NOSPT: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "dtqmb", DTQ.DTQMB[dtqid], dtqid, "CRE_DTQ")$$END$
    514507                $END$
    515508
    516 $               // ƒf[ƒ^ƒLƒ
    517 [ŠÇ——̈æ
     509$               // データキュー管理領域
    518510                $IF DTQ.DTQCNT[dtqid]$
    519511                        static DTQMB _kernel_dtqmb_$dtqid$[$DTQ.DTQCNT[dtqid]$];$NL$
     
    521513        $END$
    522514
    523 $       // ƒf[ƒ^ƒLƒ
    524 [‰Šú‰»ƒuƒƒbƒN‚̐¶¬
     515$       // データキュー初期化ブロックの生成
    525516        const DTQINIB _kernel_dtqinib_table[TNUM_SDTQID] = {$NL$
    526517        $JOINEACH dtqid DTQ.ID_LIST ",\n"$
     
    532523$END$$NL$
    533524
    534 $ “®“I¶¬ƒf[ƒ^ƒLƒ
    535 [—p‚̃f[ƒ^ƒLƒ
    536 [‰Šú‰»ƒuƒƒbƒN‚̐¶¬
     525$ 動的生成データキュー用のデータキュー初期化ブロックの生成
    537526$IF num_adtqid > 0$
    538527        DTQINIB _kernel_adtqinib_table[$num_adtqid$];$NL$
     
    541530$END$$NL$
    542531
    543 $ ƒf[ƒ^ƒLƒ
    544 [ŠÇ—ƒuƒƒbƒN‚̐¶¬
     532$ データキュー管理ブロックの生成
    545533$IF num_dtqid > 0$
    546534        DTQCB _kernel_dtqcb_table[TNUM_DTQID];$NL$
     
    550538
    551539$
    552 $  —Dæ“xƒf[ƒ^ƒLƒ
    553 [
     540$  優先度データキュー
    554541$
    555542/*$NL$
     
    558545$NL$
    559546
    560 $ Ã“I‚ɐ¶¬‚³‚ꂽ—Dæ“xƒf[ƒ^ƒLƒ
    561 [‚̐”
     547$ 静的に生成された優先度データキューの数
    562548#define TNUM_SPDQID     $LENGTH(PDQ.ID_LIST)$$NL$
    563549$NL$
    564550
    565 $ —Dæ“xƒf[ƒ^ƒLƒ
    566 [ID”ԍ†‚̍őå’l
     551$ 優先度データキューID番号の最大値
    567552const ID _kernel_tmax_pdqid = (TMIN_PDQID + TNUM_PDQID - 1);$NL$
    568553const ID _kernel_tmax_spdqid = (TMIN_PDQID + TNUM_SPDQID - 1);$NL$
     
    571556$IF LENGTH(PDQ.ID_LIST)$
    572557        $FOREACH pdqid PDQ.ID_LIST$
    573 $               // pdqatr‚ªimTA_TPRInj‚Å‚È‚¢ê‡iE_RSATRj
     558$               // pdqatrが([TA_TPRI])でない場合(E_RSATR)
    574559                $IF (PDQ.PDQATR[pdqid] & ~TA_TPRI) != 0$
    575560                        $ERROR PDQ.TEXT_LINE[pdqid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "pdqatr", PDQ.PDQATR[pdqid], pdqid, "CRE_PDQ")$$END$
    576561                $END$
    577562
    578 $               // pdqcnt‚ª•‰‚̏ꍇiE_PARj
     563$               // pdqcntが負の場合(E_PAR)
    579564                $IF PDQ.PDQCNT[pdqid] < 0$
    580565                        $ERROR PDQ.TEXT_LINE[pdqid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "pdqcnt", PDQ.PDQCNT[pdqid], pdqid, "CRE_PDQ")$$END$
    581566                $END$
    582567
    583 $               // (TMIN_DPRI <= maxdpri && maxdpri <= TMAX_DPRI)‚Å‚È‚¢ê‡iE_PARj
     568$               // (TMIN_DPRI <= maxdpri && maxdpri <= TMAX_DPRI)でない場合(E_PAR)
    584569                $IF !(TMIN_DPRI <= PDQ.MAXDPRI[pdqid] && PDQ.MAXDPRI[pdqid] <= TMAX_DPRI)$
    585570                        $ERROR PDQ.TEXT_LINE[pdqid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "maxdpri", PDQ.MAXDPRI[pdqid], pdqid, "CRE_PDQ")$$END$
    586571                $END$
    587572
    588 $               // pdqmb‚ªNULL‚Å‚È‚¢ê‡iE_NOSPTj
     573$               // pdqmbがNULLでない場合(E_NOSPT)
    589574                $IF !EQ(PDQ.PDQMB[pdqid], "NULL")$
    590575                        $ERROR PDQ.TEXT_LINE[pdqid]$E_NOSPT: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "pdqmb", PDQ.PDQMB[pdqid], pdqid, "CRE_PDQ")$$END$
    591576                $END$
    592577
    593 $               // —Dæ“xƒf[ƒ^ƒLƒ
    594 [ŠÇ——̈æ
     578$               // 優先度データキュー管理領域
    595579                $IF PDQ.PDQCNT[pdqid]$
    596580                        static PDQMB _kernel_pdqmb_$pdqid$[$PDQ.PDQCNT[pdqid]$];$NL$
     
    598582        $END$
    599583
    600 $       // —Dæ“xƒf[ƒ^ƒLƒ
    601 [‰Šú‰»ƒuƒƒbƒN‚̐¶¬
     584$       // 優先度データキュー初期化ブロックの生成
    602585        const PDQINIB _kernel_pdqinib_table[TNUM_SPDQID] = {$NL$
    603586        $JOINEACH pdqid PDQ.ID_LIST ",\n"$
     
    609592$END$$NL$
    610593
    611 $ “®“I¶¬—Dæ“xƒf[ƒ^ƒLƒ
    612 [—p‚Ì—Dæ“xƒf[ƒ^ƒLƒ
    613 [‰Šú‰»ƒuƒƒbƒN‚̐¶¬
     594$ 動的生成優先度データキュー用の優先度データキュー初期化ブロックの生成
    614595$IF num_apdqid > 0$
    615596        PDQINIB _kernel_apdqinib_table[$num_apdqid$];$NL$
     
    618599$END$$NL$
    619600
    620 $ —Dæ“xƒf[ƒ^ƒLƒ
    621 [ŠÇ—ƒuƒƒbƒN‚̐¶¬
     601$ 優先度データキュー管理ブロックの生成
    622602$IF num_pdqid > 0$
    623603        PDQCB _kernel_pdqcb_table[TNUM_PDQID];$NL$
     
    627607
    628608$
    629 ƒ[ƒ‹ƒ{ƒbƒNƒX
     609メールボックス
    630610$
    631611/*$NL$
     
    634614$NL$
    635615
    636 $ Ã“I‚ɐ¶¬‚³‚ꂽƒ[ƒ‹ƒ{ƒbƒNƒX‚̐”
     616$ 静的に生成されたメールボックスの数
    637617#define TNUM_SMBXID     $LENGTH(MBX.ID_LIST)$$NL$
    638618$NL$
    639619
    640 $ ƒ[ƒ‹ƒ{ƒbƒNƒXID”ԍ†‚̍őå’l
     620$ メールボックスID番号の最大値
    641621const ID _kernel_tmax_mbxid = (TMIN_MBXID + TNUM_MBXID - 1);$NL$
    642622const ID _kernel_tmax_smbxid = (TMIN_MBXID + TNUM_SMBXID - 1);$NL$
    643623$NL$
    644624
    645 $ ƒ[ƒ‹ƒ{ƒbƒNƒX‰Šú‰»ƒuƒƒbƒN‚̐¶¬
     625$ メールボックス初期化ブロックの生成
    646626$IF LENGTH(MBX.ID_LIST)$
    647627        const MBXINIB _kernel_mbxinib_table[TNUM_SMBXID] = {$NL$
    648628        $JOINEACH mbxid MBX.ID_LIST ",\n"$
    649 $               // mbxatr‚ªimTA_TPRInbmTA_MPRInj‚Å‚È‚¢ê‡iE_RSATRj
     629$               // mbxatrが([TA_TPRI]|[TA_MPRI])でない場合(E_RSATR)
    650630                $IF (MBX.MBXATR[mbxid] & ~(TA_TPRI|TA_MPRI)) != 0$
    651631                        $ERROR MBX.TEXT_LINE[mbxid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "mbxatr", MBX.MBXATR[mbxid], mbxid, "CRE_MBX")$$END$
    652632                $END$
    653633
    654 $               // (TMIN_MPRI <= maxmpri && maxmpri <= TMAX_MPRI)‚Å‚È‚¢ê‡iE_PARj
     634$               // (TMIN_MPRI <= maxmpri && maxmpri <= TMAX_MPRI)でない場合(E_PAR)
    655635                $IF !(TMIN_MPRI <= MBX.MAXMPRI[mbxid] && MBX.MAXMPRI[mbxid] <= TMAX_MPRI)$
    656636                        $ERROR MBX.TEXT_LINE[mbxid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "maxmpri", MBX.MAXMPRI[mbxid], mbxid, "CRE_MBX")$$END$
    657637                $END$
    658638
    659 $               // mprihd‚ªNULL‚Å‚È‚¢ê‡iE_NOSPTj
     639$               // mprihdがNULLでない場合(E_NOSPT)
    660640                $IF !EQ(MBX.MPRIHD[mbxid], "NULL")$
    661641                        $ERROR MBX.TEXT_LINE[mbxid]$E_NOSPT: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "mprihd", MBX.MPRIHD[mbxid], mbxid, "CRE_MBX")$$END$
    662642                $END$
    663643
    664 $               // ƒ[ƒ‹ƒ{ƒbƒNƒX‰Šú‰»ƒuƒƒbƒN
     644$               // メールボックス初期化ブロック
    665645                $TAB${ ($MBX.MBXATR[mbxid]$), ($MBX.MAXMPRI[mbxid]$) }
    666646        $END$$NL$
     
    670650$END$$NL$
    671651
    672 $ “®“I¶¬ƒ[ƒ‹ƒ{ƒbƒNƒX—p‚̃[ƒ‹ƒ{ƒbƒNƒX‰Šú‰»ƒuƒƒbƒN‚̐¶¬
     652$ 動的生成メールボックス用のメールボックス初期化ブロックの生成
    673653$IF num_ambxid > 0$
    674654        MBXINIB _kernel_ambxinib_table[$num_ambxid$];$NL$
     
    677657$END$$NL$
    678658
    679 $ ƒ[ƒ‹ƒ{ƒbƒNƒXŠÇ—ƒuƒƒbƒN‚̐¶¬
     659$ メールボックス管理ブロックの生成
    680660$IF num_mbxid > 0$
    681661        MBXCB _kernel_mbxcb_table[TNUM_MBXID];$NL$
     
    685665
    686666$
    687 ŒÅ’è’·ƒƒ‚ƒŠƒv[ƒ‹
     667固定長メモリプール
    688668$
    689669/*$NL$
     
    692672$NL$
    693673
    694 $ Ã“I‚ɐ¶¬‚³‚ꂽŒÅ’è’·ƒƒ‚ƒŠƒv[ƒ‹‚̐”
     674$ 静的に生成された固定長メモリプールの数
    695675#define TNUM_SMPFID     $LENGTH(MPF.ID_LIST)$$NL$
    696676$NL$
    697677
    698 $ ŒÅ’è’·ƒƒ‚ƒŠƒv[ƒ‹ID”ԍ†‚̍őå’l
     678$ 固定長メモリプールID番号の最大値
    699679const ID _kernel_tmax_mpfid = (TMIN_MPFID + TNUM_MPFID - 1);$NL$
    700680const ID _kernel_tmax_smpfid = (TMIN_MPFID + TNUM_SMPFID - 1);$NL$
     
    703683$IF LENGTH(MPF.ID_LIST)$
    704684        $FOREACH mpfid MPF.ID_LIST$
    705 $               // mpfatr‚ªimTA_TPRInj‚Å‚È‚¢ê‡iE_RSATRj
     685$               // mpfatrが([TA_TPRI])でない場合(E_RSATR)
    706686                $IF (MPF.MPFATR[mpfid] & ~TA_TPRI) != 0$
    707687                        $ERROR MPF.TEXT_LINE[mpfid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "mpfatr", MPF.MPFATR[mpfid], mpfid, "CRE_MPF")$$END$
    708688                $END$
    709689
    710 $               // blkcnt‚ª0ˆÈ‰º‚̏ꍇiE_PARj
     690$               // blkcntが0以下の場合(E_PAR)
    711691                $IF MPF.BLKCNT[mpfid] <= 0$
    712692                        $ERROR MPF.TEXT_LINE[mpfid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "blkcnt", MPF.BLKCNT[mpfid], mpfid, "CRE_MPF")$$END$
    713693                $END$
    714694
    715 $               // blksz‚ª0ˆÈ‰º‚̏ꍇiE_PARj
     695$               // blkszが0以下の場合(E_PAR)
    716696                $IF MPF.BLKSZ[mpfid] <= 0$
    717697                        $ERROR MPF.TEXT_LINE[mpfid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "blksz", MPF.BLKSZ[mpfid], mpfid, "CRE_MPF")$$END$
    718698                $END$
    719699
    720 $               // ŒÅ’è’·ƒƒ‚ƒŠƒv[ƒ‹—̈æ
     700$               // 固定長メモリプール領域
    721701                $IF EQ(MPF.MPF[mpfid], "NULL")$
    722702                        static MPF_T _kernel_mpf_$mpfid$[($MPF.BLKCNT[mpfid]$) * COUNT_MPF_T($MPF.BLKSZ[mpfid]$)];$NL$
    723703                $END$
    724704
    725 $               // mpfmb‚ªNULL‚Å‚È‚¢ê‡iE_NOSPTj
     705$               // mpfmbがNULLでない場合(E_NOSPT)
    726706                $IF !EQ(MPF.MPFMB[mpfid], "NULL")$
    727707                        $ERROR MPF.TEXT_LINE[mpfid]$E_NOSPT: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "mpfmb", MPF.MPFMB[mpfid], mpfid, "CRE_MPF")$$END$
    728708                $END$
    729709
    730 $               // ŒÅ’è’·ƒƒ‚ƒŠƒv[ƒ‹ŠÇ——̈æ
     710$               // 固定長メモリプール管理領域
    731711                static MPFMB _kernel_mpfmb_$mpfid$[$MPF.BLKCNT[mpfid]$];$NL$
    732712        $END$
    733713
    734 $       // ŒÅ’è’·ƒƒ‚ƒŠƒv[ƒ‹‰Šú‰»ƒuƒƒbƒN‚̐¶¬
     714$       // 固定長メモリプール初期化ブロックの生成
    735715        const MPFINIB _kernel_mpfinib_table[TNUM_SMPFID] = {$NL$
    736716        $JOINEACH mpfid MPF.ID_LIST ",\n"$
     
    742722$END$$NL$
    743723
    744 $ “®“I¶¬ŒÅ’è’·ƒƒ‚ƒŠƒv[ƒ‹—p‚̌Œ蒷ƒƒ‚ƒŠƒv[ƒ‹‰Šú‰»ƒuƒƒbƒN‚̐¶¬
     724$ 動的生成固定長メモリプール用の固定長メモリプール初期化ブロックの生成
    745725$IF num_ampfid > 0$
    746726        MPFINIB _kernel_ampfinib_table[$num_ampfid$];$NL$
     
    749729$END$$NL$
    750730
    751 $ ŒÅ’è’·ƒƒ‚ƒŠƒv[ƒ‹ŠÇ—ƒuƒƒbƒN‚̐¶¬
     731$ 固定長メモリプール管理ブロックの生成
    752732$IF num_mpfid > 0$
    753733        MPFCB _kernel_mpfcb_table[TNUM_MPFID];$NL$
     
    757737
    758738$
    759 ŽüŠúƒnƒ“ƒhƒ‰
     739周期ハンドラ
    760740$
    761741/*$NL$
     
    764744$NL$
    765745
    766 $ Ã“I‚ɐ¶¬‚³‚ꂽŽüŠúƒnƒ“ƒhƒ‰‚̐”
     746$ 静的に生成された周期ハンドラの数
    767747#define TNUM_SCYCID     $LENGTH(CYC.ID_LIST)$$NL$
    768748$NL$
    769749
    770 $ ŽüŠúƒnƒ“ƒhƒ‰ID”ԍ†‚̍őå’l
     750$ 周期ハンドラID番号の最大値
    771751const ID _kernel_tmax_cycid = (TMIN_CYCID + TNUM_CYCID - 1);$NL$
    772752const ID _kernel_tmax_scycid = (TMIN_CYCID + TNUM_SCYCID - 1);$NL$
    773753$NL$
    774754
    775 $ ŽüŠúƒnƒ“ƒhƒ‰‰Šú‰»ƒe[ƒuƒ‹‚̐¶¬
     755$ 周期ハンドラ初期化テーブルの生成
    776756$IF LENGTH(CYC.ID_LIST)$
    777757        const CYCINIB _kernel_cycinib_table[TNUM_SCYCID] = {$NL$
    778758        $JOINEACH cycid CYC.ID_LIST ",\n"$
    779 $               // cycatr‚ªimTA_STAnj‚Å‚È‚¢ê‡iE_RSATRj
     759$               // cycatrが([TA_STA])でない場合(E_RSATR)
    780760                $IF (CYC.CYCATR[cycid] & ~TA_STA) != 0$
    781761                        $ERROR CYC.TEXT_LINE[cycid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "cycatr", CYC.CYCATR[cycid], cycid, "CRE_CYC")$$END$
    782762                $END$
    783763
    784 $               // (0 < cyctim && cyctim <= TMAX_RELTIM)‚Å‚È‚¢ê‡iE_PARj
     764$               // (0 < cyctim && cyctim <= TMAX_RELTIM)でない場合(E_PAR)
    785765                $IF !(0 < CYC.CYCTIM[cycid] && CYC.CYCTIM[cycid] <= TMAX_RELTIM)$
    786766                        $ERROR CYC.TEXT_LINE[cycid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "cyctim", CYC.CYCTIM[cycid], cycid, "CRE_CYC")$$END$
    787767                $END$
    788768
    789 $               // (0 <= cycphs && cycphs <= TMAX_RELTIM)‚Å‚È‚¢ê‡iE_PARj
     769$               // (0 <= cycphs && cycphs <= TMAX_RELTIM)でない場合(E_PAR)
    790770                $IF !(0 <= CYC.CYCPHS[cycid] && CYC.CYCPHS[cycid] <= TMAX_RELTIM)$
    791771                        $ERROR CYC.TEXT_LINE[cycid]$E_PAR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "cycphs", CYC.CYCPHS[cycid], cycid, "CRE_CYC")$$END$
    792772                $END$
    793773
    794 $               // ŒxFcycatr‚ÉTA_STA‚ªÝ’肳‚ê‚Ä‚¢‚āC(cycphs == 0)‚̏ꍇ
     774$               // 警告:cycatrにTA_STAが設定されていて,(cycphs == 0)の場合
    795775                $IF (CYC.CYCATR[cycid] & TA_STA) != 0 && CYC.CYCPHS[cycid] == 0$
    796776                        $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$
    797777                $END$
    798778
    799 $               // ŽüŠúƒnƒ“ƒhƒ‰‰Šú‰»ƒuƒƒbƒN
     779$               // 周期ハンドラ初期化ブロック
    800780                $TAB${ ($CYC.CYCATR[cycid]$), (intptr_t)($CYC.EXINF[cycid]$), ($CYC.CYCHDR[cycid]$), ($CYC.CYCTIM[cycid]$), ($CYC.CYCPHS[cycid]$) }
    801781        $END$$NL$
     
    805785$END$$NL$
    806786
    807 $ “®“I¶¬ŽüŠúƒnƒ“ƒhƒ‰—p‚ÌŽüŠúƒnƒ“ƒhƒ‰‰Šú‰»ƒuƒƒbƒN‚̐¶¬
     787$ 動的生成周期ハンドラ用の周期ハンドラ初期化ブロックの生成
    808788$IF num_acycid > 0$
    809789        CYCINIB _kernel_acycinib_table[$num_acycid$];$NL$
     
    812792$END$$NL$
    813793
    814 $ ŽüŠúƒnƒ“ƒhƒ‰ŠÇ—ƒuƒƒbƒN‚̐¶¬
     794$ 周期ハンドラ管理ブロックの生成
    815795$IF num_cycid > 0$
    816796        CYCCB _kernel_cyccb_table[TNUM_CYCID];$NL$
     
    820800
    821801$
    822 ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰
     802アラームハンドラ
    823803$
    824804/*$NL$
     
    827807$NL$
    828808
    829 $ Ã“I‚ɐ¶¬‚³‚ꂽƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰‚̐”
     809$ 静的に生成されたアラームハンドラの数
    830810#define TNUM_SALMID     $LENGTH(ALM.ID_LIST)$$NL$
    831811$NL$
    832812
    833 $ ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰ID”ԍ†‚̍őå’l
     813$ アラームハンドラID番号の最大値
    834814const ID _kernel_tmax_almid = (TMIN_ALMID + TNUM_ALMID - 1);$NL$
    835815const ID _kernel_tmax_salmid = (TMIN_ALMID + TNUM_SALMID - 1);$NL$
    836816$NL$
    837817
    838 $ ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰‰Šú‰»ƒuƒƒbƒN‚̐¶¬
     818$ アラームハンドラ初期化ブロックの生成
    839819$IF LENGTH(ALM.ID_LIST)$
    840820        const ALMINIB _kernel_alminib_table[TNUM_SALMID] = {$NL$
    841821        $JOINEACH almid ALM.ID_LIST ",\n"$
    842 $               // almatr‚ªiTA_NULLj‚Å‚È‚¢ê‡iE_RSATRj
     822$               // almatrが(TA_NULL)でない場合(E_RSATR)
    843823                $IF ALM.ALMATR[almid] != 0$
    844824                        $ERROR ALM.TEXT_LINE[almid]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' of `%3%\' in %4%"), "almatr", ALM.ALMATR[almid], almid, "CRE_ALM")$$END$
    845825                $END$
    846826
    847 $               // ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰‰Šú‰»ƒuƒƒbƒN
     827$               // アラームハンドラ初期化ブロック
    848828                $TAB${ ($ALM.ALMATR[almid]$), (intptr_t)($ALM.EXINF[almid]$), ($ALM.ALMHDR[almid]$) }
    849829        $END$$NL$
     
    853833$END$$NL$
    854834
    855 $ “®“I¶¬ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰—p‚̃Aƒ‰[ƒ€ƒnƒ“ƒhƒ‰‰Šú‰»ƒuƒƒbƒN‚̐¶¬
     835$ 動的生成アラームハンドラ用のアラームハンドラ初期化ブロックの生成
    856836$IF num_aalmid > 0$
    857837        ALMINIB _kernel_aalminib_table[$num_aalmid$];$NL$
     
    860840$END$$NL$
    861841
    862 $ ƒAƒ‰[ƒ€ƒnƒ“ƒhƒ‰ŠÇ—ƒuƒƒbƒN‚̐¶¬
     842$ アラームハンドラ管理ブロックの生成
    863843$IF num_almid > 0$
    864844        ALMCB _kernel_almcb_table[TNUM_ALMID];$NL$
     
    868848
    869849$
    870 Š„ž‚ÝŠÇ—‹@”\
     850割込み管理機能
    871851$
    872852/*$NL$
     
    875855$NL$
    876856
    877 $ Š„ž‚ݔԍ†‚ÆŠ„ž‚݃nƒ“ƒhƒ‰”ԍ†‚Ì•ÏŠ·ƒe[ƒuƒ‹‚̍쐬
     857$ 割込み番号と割込みハンドラ番号の変換テーブルの作成
    878858$IF LENGTH(INTNO_ATTISR_VALID) != LENGTH(INHNO_ATTISR_VALID)$
    879859        $ERROR$length of `INTNO_ATTISR_VALID' is different from length of `INHNO_ATTISR_VALID'$END$
     
    887867$END$
    888868
    889 $ Š„ž‚Ý—v‹ƒ‰ƒCƒ“‚ÉŠÖ‚·‚éƒGƒ‰[ƒ`ƒFƒbƒN
     869$ 割込み要求ラインに関するエラーチェック
    890870$i = 0$
    891871$FOREACH intno INT.ORDER_LIST$
    892 $       // intno‚ªCFG_INT‚ɑ΂·‚銄ž‚ݔԍ†‚Æ‚µ‚Đ³‚µ‚­‚È‚¢ê‡iE_PARj
     872$       // intnoがCFG_INTに対する割込み番号として正しくない場合(E_PAR)
    893873        $IF !LENGTH(FIND(INTNO_CFGINT_VALID, INT.INTNO[intno]))$
    894874                $ERROR INT.TEXT_LINE[intno]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "intno", INT.INTNO[intno], "CFG_INT")$$END$
    895875        $END$
    896876
    897 $       // intno‚ªCFG_INT‚É‚æ‚Á‚ĐݒèÏ‚݂̏ꍇiE_OBJj
     877$       // intnoがCFG_INTによって設定済みの場合(E_OBJ)
    898878        $j = 0$
    899879        $FOREACH intno2 INT.ORDER_LIST$
     
    904884        $END$
    905885
    906 $       // intatr‚ªimTA_ENAINTnbmTA_EDGEnj‚Å‚È‚¢ê‡iE_RSATRj
     886$       // intatrが([TA_ENAINT]|[TA_EDGE])でない場合(E_RSATR)
    907887        $IF (INT.INTATR[intno] & ~(TA_ENAINT|TA_EDGE|TARGET_INTATR)) != 0$
    908888                $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$
    909889        $END$
    910890
    911 $       // intpri‚ªCFG_INT‚ɑ΂·‚銄ž‚Ý—Dæ“x‚Æ‚µ‚Đ³‚µ‚­‚È‚¢ê‡iE_PARj
     891$       // intpriがCFG_INTに対する割込み優先度として正しくない場合(E_PAR)
    912892        $IF !LENGTH(FIND(INTPRI_CFGINT_VALID, INT.INTPRI[intno]))$
    913893                $ERROR INT.TEXT_LINE[intno]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "intpri", INT.INTPRI[intno], "CFG_INT")$$END$
    914894        $END$
    915895
    916 $       // ƒJ[ƒlƒ‹ŠÇ—‚ɌŒ肳‚ê‚Ä‚¢‚éintno‚ɑ΂µ‚āCintpri‚ÉTMIN_INTPRI
    917 $       // ‚æ‚è‚à¬‚³‚¢’l‚ªŽw’肳‚ꂽê‡iE_OBJj
     896$       // カーネル管理に固定されているintnoに対して,intpriにTMIN_INTPRI
     897$       // よりも小さい値が指定された場合(E_OBJ)
    918898        $IF LENGTH(FIND(INTNO_FIX_KERNEL, intno))$
    919899                $IF INT.INTPRI[intno] < TMIN_INTPRI$
     
    922902        $END$
    923903
    924 $       // ƒJ[ƒlƒ‹ŠÇ—ŠO‚ɌŒ肳‚ê‚Ä‚¢‚éintno‚ɑ΂µ‚āCintpri‚ÉTMIN_INTPRI
    925 $       // ‚æ‚è‚à¬‚³‚¢’l‚ªŽw’肳‚ê‚È‚©‚Á‚½ê‡iE_OBJj
     904$       // カーネル管理外に固定されているintnoに対して,intpriにTMIN_INTPRI
     905$       // よりも小さい値が指定されなかった場合(E_OBJ)
    926906        $IF LENGTH(FIND(INTNO_FIX_NONKERNEL, intno))$
    927907                $IF INT.INTPRI[intno] >= TMIN_INTPRI$
     
    932912$END$
    933913
    934 $ Š„ž‚݃nƒ“ƒhƒ‰‚ÉŠÖ‚·‚éƒGƒ‰[ƒ`ƒFƒbƒN
     914$ 割込みハンドラに関するエラーチェック
    935915$i = 0$
    936916$FOREACH inhno INH.ORDER_LIST$
    937 $       // inhno‚ªDEF_INH‚ɑ΂·‚銄ž‚݃nƒ“ƒhƒ‰”ԍ†‚Æ‚µ‚Đ³‚µ‚­‚È‚¢ê‡iE_PARj
     917$       // inhnoがDEF_INHに対する割込みハンドラ番号として正しくない場合(E_PAR)
    938918        $IF !LENGTH(FIND(INHNO_DEFINH_VALID, INH.INHNO[inhno]))$
    939919                $ERROR INH.TEXT_LINE[inhno]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "inhno", INH.INHNO[inhno], "DEF_INH")$$END$
    940920        $END$
    941921
    942 $       // inhno‚ªDEF_INH‚É‚æ‚Á‚ĐݒèÏ‚݂̏ꍇiE_OBJj
     922$       // inhnoがDEF_INHによって設定済みの場合(E_OBJ)
    943923        $j = 0$
    944924        $FOREACH inhno2 INH.ORDER_LIST$
     
    949929        $END$
    950930
    951 $       // inhatr‚ªiTA_NULLj‚Å‚È‚¢ê‡iE_RSATRj
     931$       // inhatrが(TA_NULL)でない場合(E_RSATR)
    952932        $IF (INH.INHATR[inhno] & ~TARGET_INHATR) != 0$
    953933                $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$
    954934        $END$
    955935
    956 $       // ƒJ[ƒlƒ‹ŠÇ—‚ɌŒ肳‚ê‚Ä‚¢‚éinhno‚ɑ΂µ‚āCinhatr‚ÉTA_NONKERNEL
    957 $       //@‚ªŽw’肳‚ê‚Ä‚¢‚éê‡iE_RSATRj
     936$       // カーネル管理に固定されているinhnoに対して,inhatrにTA_NONKERNEL
     937$       // が指定されている場合(E_RSATR)
    958938        $IF LENGTH(FIND(INHNO_FIX_KERNEL, inhno))$
    959939                $IF (INH.INHATR[inhno] & TA_NONKERNEL) != 0$
     
    962942        $END$
    963943
    964 $       // ƒJ[ƒlƒ‹ŠÇ—ŠO‚ɌŒ肳‚ê‚Ä‚¢‚éinhno‚ɑ΂µ‚āCinhatr‚ÉTA_NONKERNEL
    965 $       // ‚ªŽw’肳‚ê‚Ä‚¢‚È‚¢ê‡iE_RSATRj
     944$       // カーネル管理外に固定されているinhnoに対して,inhatrにTA_NONKERNEL
     945$       // が指定されていない場合(E_RSATR)
    966946        $IF LENGTH(FIND(INHNO_FIX_NONKERNEL, inhno))$
    967947                $IF (INH.INHATR[inhno] & TA_NONKERNEL) == 0$
     
    972952        $IF LENGTH(INTNO[INH.INHNO[inhno]])$
    973953                $intno = INTNO[INH.INHNO[inhno]]$
    974 $               // inhno‚ɑΉž‚·‚éintno‚ɑ΂·‚éCFG_INT‚ª‚È‚¢ê‡iE_OBJj
     954$               // inhnoに対応するintnoに対するCFG_INTがない場合(E_OBJ)
    975955                $IF !LENGTH(INT.INTNO[intno])$
    976956                        $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$
    977957                $ELSE$
    978958                        $IF (INH.INHATR[inhno] & TA_NONKERNEL) == 0$
    979 $                               // inhatr‚ÉTA_NONKERNEL‚ªŽw’肳‚ê‚Ä‚¨‚炸Cinhno‚ɑΉž
    980 $                               // ‚·‚éintno‚ɑ΂µ‚ÄCFG_INT‚Őݒ肳‚ꂽŠ„ž‚Ý—Dæ“x‚ª
    981 $                               // TMIN_INTPRI‚æ‚è‚à¬‚³‚¢ê‡iE_OBJj
     959$                               // inhatrにTA_NONKERNELが指定されておらず,inhnoに対応
     960$                               // するintnoに対してCFG_INTで設定された割込み優先度が
     961$                               // TMIN_INTPRIよりも小さい場合(E_OBJ)
    982962                                $IF INT.INTPRI[intno] < TMIN_INTPRI$
    983963                                        $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$
    984964                                $END$
    985965                        $ELSE$
    986 $                               // inhatr‚ÉTA_NONKERNEL‚ªŽw’肳‚ê‚Ä‚¨‚èCinhno‚ɑΉž
    987 $                               // ‚·‚éintno‚ɑ΂µ‚ÄCFG_INT‚Őݒ肳‚ꂽŠ„ž‚Ý—Dæ“x‚ª
    988 $                               // TMIN_INTPRIˆÈã‚Å‚ ‚éê‡iE_OBJj
     966$                               // inhatrにTA_NONKERNELが指定されており,inhnoに対応
     967$                               // するintnoに対してCFG_INTで設定された割込み優先度が
     968$                               // TMIN_INTPRI以上である場合(E_OBJ)
    989969                                $IF INT.INTPRI[intno] >= TMIN_INTPRI$
    990970                                        $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$
     
    996976$END$
    997977
    998 $ Š„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“iISRj‚ÉŠÖ‚·‚éƒGƒ‰[ƒ`ƒFƒbƒN
     978$ 割込みサービスルーチン(ISR)に関するエラーチェック
    999979$FOREACH order ISR.ORDER_LIST$
    1000 $       // isratr‚ªiTA_NULLj‚Å‚È‚¢ê‡iE_RSATRj
     980$       // isratrが(TA_NULL)でない場合(E_RSATR)
    1001981        $IF (ISR.ISRATR[order] & ~TARGET_ISRATR) != 0$
    1002982                $ERROR ISR.TEXT_LINE[order]$E_RSATR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "isratr", ISR.ISRATR[order], "ATT_ISR")$$END$
    1003983        $END$
    1004984
    1005 $       // intno‚ªATT_ISR‚ɑ΂·‚銄ž‚ݔԍ†‚Æ‚µ‚Đ³‚µ‚­‚È‚¢ê‡iE_PARj
     985$       // intnoがATT_ISRに対する割込み番号として正しくない場合(E_PAR)
    1006986        $IF !LENGTH(FIND(INTNO_ATTISR_VALID, ISR.INTNO[order]))$
    1007987                $ERROR ISR.TEXT_LINE[order]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "intno", ISR.INTNO[order], "ATT_ISR")$$END$
    1008988        $END$
    1009989
    1010 $       // (TMIN_ISRPRI <= isrpri && isrpri <= TMAX_ISRPRI)‚Å‚È‚¢ê‡iE_PARj
     990$       // (TMIN_ISRPRI <= isrpri && isrpri <= TMAX_ISRPRI)でない場合(E_PAR)
    1011991        $IF !(TMIN_ISRPRI <= ISR.ISRPRI[order] && ISR.ISRPRI[order] <= TMAX_ISRPRI)$
    1012992                $ERROR ISR.TEXT_LINE[order]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "isrpri", ISR.ISRPRI[order], "ATT_ISR")$$END$
     
    1017997        $inhno = INHNO[intno]$
    1018998
    1019 $       // Š„ž‚ݔԍ†intno‚ɑ΂µ‚Ä“o˜^‚³‚ꂽISR‚̃ŠƒXƒg‚̍쐬
     999$       // 割込み番号intnoに対して登録されたISRのリストの作成
    10201000        $isr_order_list = {}$
    10211001        $FOREACH order ISR.ORDER_LIST$
     
    10261006        $END$
    10271007
    1028 $       // Š„ž‚ݔԍ†intno‚ɑ΂µ‚Ä“o˜^‚³‚ꂽISR‚ª‘¶Ý‚·‚éê‡
     1008$       // 割込み番号intnoに対して登録されたISRが存在する場合
    10291009        $IF LENGTH(isr_order_list) > 0$
    1030 $               // intno‚ɑΉž‚·‚éinhno‚ɑ΂µ‚ÄDEF_INH‚ª‚ ‚éê‡iE_OBJj
     1010$               // intnoに対応するinhnoに対してDEF_INHがある場合(E_OBJ)
    10311011                $IF LENGTH(INH.INHNO[inhno])$
    10321012                        $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$
    10331013                $END$
    10341014
    1035 $               // intno‚ɑ΂·‚éCFG_INT‚ª‚È‚¢ê‡iE_OBJj
     1015$               // intnoに対するCFG_INTがない場合(E_OBJ)
    10361016                $IF !LENGTH(INT.INTNO[intno])$
    10371017                        $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$
    10381018                $ELSE$
    1039 $                       // intno‚ɑ΂µ‚ÄCFG_INT‚Őݒ肳‚ꂽŠ„ž‚Ý—Dæ“x‚ªTMIN_INTPRI
    1040 $                       // ‚æ‚è‚à¬‚³‚¢ê‡iE_OBJj
     1019$                       // intnoに対してCFG_INTで設定された割込み優先度がTMIN_INTPRI
     1020$                       // よりも小さい場合(E_OBJ)
    10411021                        $IF INT.INTPRI[intno] < TMIN_INTPRI$
    10421022                                $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$
     
    10461026$END$
    10471027
    1048 $ Š„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“iISRjŠÇ—‚̃f[ƒ^\‘¢
     1028$ 割込みサービスルーチン(ISR)管理のデータ構造
    10491029$intno_isr_list = {}$
    10501030$FOREACH intno INTNO_ATTISR_VALID$
     
    10821062$END$$NL$
    10831063
    1084 $ Š„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“iISRjŒÄo‚µ‚Ì‚½‚ß‚ÌŠ„ž‚݃nƒ“ƒhƒ‰‚̐¶¬
     1064$ 割込みサービスルーチン(ISR)呼出しのための割込みハンドラの生成
    10851065$FOREACH intno INTNO_ISR$
    10861066        $inhno = INHNO[intno]$
     
    10921072        $INH.ORDER_LIST = APPEND(INH.ORDER_LIST, inhno)$
    10931073
    1094 $       // ISR—p‚ÌŠ„ž‚݃nƒ“ƒhƒ‰
     1074$       // ISR用の割込みハンドラ
    10951075        void$NL$
    10961076        _kernel_inthdr_$intno$(void)$NL$
     
    11031083$END$
    11041084
    1105 $ Š„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“‚̐”
     1085$ 割込みサービスルーチンの数
    11061086#define TNUM_SISR       $LENGTH(ISR.ORDER_LIST)$$NL$
    11071087#define TNUM_ISR        $LENGTH(ISR.ORDER_LIST) + num_aisrid$$NL$
    11081088$NL$
    11091089
    1110 $ Š„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“ID”ԍ†‚̍őå’l
     1090$ 割込みサービスルーチンID番号の最大値
    11111091const ID _kernel_tmax_isrid = (TMIN_ISRID + TNUM_ISRID - 1);$NL$
    11121092const uint_t _kernel_tnum_sisr = TNUM_SISR;$NL$
    11131093$NL$
    11141094
    1115 $ Š„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“‰Šú‰»ƒuƒƒbƒN‚̐¶¬
     1095$ 割込みサービスルーチン初期化ブロックの生成
    11161096$IF LENGTH(ISR.ORDER_LIST)$
    11171097        const ISRINIB _kernel_sisrinib_table[TNUM_SISR] = {$NL$
     
    11251105$NL$
    11261106
    1127 $ “®“I¶¬Š„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“—p‚ÌŠ„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“‰Šú‰»ƒuƒƒb
    1128 $ ƒN‚̐¶¬
     1107$ 動的生成割込みサービスルーチン用の割込みサービスルーチン初期化ブロッ
     1108$ クの生成
    11291109$IF num_aisrid > 0$
    11301110        ISRINIB _kernel_aisrinib_table[$num_aisrid$];$NL$
     
    11341114$NL$
    11351115
    1136 $ Š„ž‚݃T[ƒrƒXƒ‹[ƒ`ƒ“ŠÇ—ƒuƒƒbƒN‚̐¶¬
     1116$ 割込みサービスルーチン管理ブロックの生成
    11371117$IF num_isr > 0$
    11381118        ISRCB _kernel_isrcb_table[TNUM_ISR];$NL$
     
    11431123
    11441124$
    1145 Š„ž‚ÝŠÇ—‹@”\‚Ì‚½‚ß‚Ì•W€“I‚ȏ‰Šú‰»î•ñ‚̐¶¬
    1146 $
    1147 $ Š„ž‚݃nƒ“ƒhƒ‰‚̏‰Šú‰»‚É•K—v‚ȏî•ñ
     1125割込み管理機能のための標準的な初期化情報の生成
     1126$
     1127$ 割込みハンドラの初期化に必要な情報
    11481128$IF !OMIT_INITIALIZE_INTERRUPT || ALT(USE_INHINIB_TABLE,0)$
    11491129
    1150 $ Š„ž‚݃nƒ“ƒhƒ‰”
     1130$ 割込みハンドラ数
    11511131#define TNUM_INHNO      $LENGTH(INH.ORDER_LIST)$$NL$
    11521132const uint_t _kernel_tnum_inhno = TNUM_INHNO;$NL$
     
    11591139$NL$
    11601140
    1161 $ Š„ž‚݃nƒ“ƒhƒ‰‰Šú‰»ƒe[ƒuƒ‹
     1141$ 割込みハンドラ初期化テーブル
    11621142$IF LENGTH(INH.ORDER_LIST)$
    11631143        const INHINIB _kernel_inhinib_table[TNUM_INHNO] = {$NL$
     
    11751155$END$
    11761156
    1177 $ Š„ž‚Ý—v‹ƒ‰ƒCƒ“‚̏‰Šú‰»‚É•K—v‚ȏî•ñ
     1157$ 割込み要求ラインの初期化に必要な情報
    11781158$IF !OMIT_INITIALIZE_INTERRUPT || ALT(USE_INTINIB_TABLE,0)$
    11791159
    1180 $ Š„ž‚Ý—v‹ƒ‰ƒCƒ“”
     1160$ 割込み要求ライン数
    11811161#define TNUM_INTNO      $LENGTH(INT.ORDER_LIST)$$NL$
    11821162const uint_t _kernel_tnum_intno = TNUM_INTNO;$NL$
    11831163$NL$
    11841164
    1185 $ Š„ž‚Ý—v‹ƒ‰ƒCƒ“‰Šú‰»ƒe[ƒuƒ‹
     1165$ 割込み要求ライン初期化テーブル
    11861166$IF LENGTH(INT.ORDER_LIST)$
    11871167        const INTINIB _kernel_intinib_table[TNUM_INTNO] = {$NL$
     
    11961176
    11971177$
    1198 $  CPU—áŠOŠÇ—‹@”\
     1178$  CPU例外管理機能
    11991179$
    12001180/*$NL$
     
    12031183$NL$
    12041184
    1205 $ CPU—áŠOƒnƒ“ƒhƒ‰‚ÉŠÖ‚·‚éƒGƒ‰[ƒ`ƒFƒbƒN
     1185$ CPU例外ハンドラに関するエラーチェック
    12061186$i = 0$
    12071187$FOREACH excno EXC.ORDER_LIST$
    1208 $       // excno‚ªDEF_EXC‚ɑ΂·‚éCPU—áŠOƒnƒ“ƒhƒ‰”ԍ†‚Æ‚µ‚Đ³‚µ‚­‚È‚¢ê‡iE_PARj
     1188$       // excnoがDEF_EXCに対するCPU例外ハンドラ番号として正しくない場合(E_PAR)
    12091189        $IF !LENGTH(FIND(EXCNO_DEFEXC_VALID, EXC.EXCNO[excno]))$
    12101190                $ERROR EXC.TEXT_LINE[excno]$E_PAR: $FORMAT(_("illegal %1% `%2%\' in %3%"), "excno", EXC.EXCNO[excno], "DEF_EXC")$$END$
    12111191        $END$
    12121192
    1213 $       // excno‚ªDEF_EXC‚É‚æ‚Á‚ĐݒèÏ‚݂̏ꍇiE_OBJj
     1193$       // excnoがDEF_EXCによって設定済みの場合(E_OBJ)
    12141194        $j = 0$
    12151195        $FOREACH excno2 EXC.ORDER_LIST$
     
    12201200        $END$
    12211201
    1222 $       // excatr‚ªiTA_NULLj‚Å‚È‚¢ê‡iE_RSATRj
     1202$       // excatrが(TA_NULL)でない場合(E_RSATR)
    12231203        $IF (EXC.EXCATR[excno] & ~TARGET_EXCATR) != 0$
    12241204                $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$
     
    12271207$END$
    12281208
    1229 $ CPU—áŠOƒnƒ“ƒhƒ‰‚Ì‚½‚ß‚Ì•W€“I‚ȏ‰Šú‰»î•ñ‚̐¶¬
     1209$ CPU例外ハンドラのための標準的な初期化情報の生成
    12301210$IF !OMIT_INITIALIZE_EXCEPTION$
    12311211
    1232 $ CPU—áŠOƒnƒ“ƒhƒ‰”
     1212$ CPU例外ハンドラ数
    12331213#define TNUM_EXCNO      $LENGTH(EXC.ORDER_LIST)$$NL$
    12341214const uint_t _kernel_tnum_excno = TNUM_EXCNO;$NL$
     
    12391219$NL$
    12401220
    1241 $ CPU—áŠOƒnƒ“ƒhƒ‰‰Šú‰»ƒe[ƒuƒ‹
     1221$ CPU例外ハンドラ初期化テーブル
    12421222$IF LENGTH(EXC.ORDER_LIST)$
    12431223        const EXCINIB _kernel_excinib_table[TNUM_EXCNO] = {$NL$
     
    12521232
    12531233$
    1254 ”ñƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg—p‚̃Xƒ^ƒbƒN—̈æ
     1234非タスクコンテキスト用のスタック領域
    12551235$
    12561236/*$NL$
     
    12601240
    12611241$IF !LENGTH(ICS.ORDER_LIST)$
    1262 $       // DEF_ICS‚ª‚È‚¢ê‡‚̃fƒtƒHƒ‹ƒg’l‚̐ݒè
     1242$       // DEF_ICSがない場合のデフォルト値の設定
    12631243        #ifdef DEFAULT_ISTK$NL$
    12641244        $NL$
     
    12751255$ELSE$
    12761256
    1277 $       // Ã“IAPIuDEF_ICSv‚ª•¡”‚ ‚éiE_OBJj
     1257$       // 静的API「DEF_ICS」が複数ある(E_OBJ)
    12781258        $IF LENGTH(ICS.ORDER_LIST) > 1$
    12791259                $ERROR$E_OBJ: $FORMAT(_("too many %1%"), "DEF_ICS")$$END$
    12801260        $END$
    12811261
    1282 $       // istksz‚ª0ˆÈ‰º‚©Cƒ^[ƒQƒbƒg’è‹`‚̍ŏ¬’liTARGET_MIN_ISTKSZj‚æ‚è‚à
    1283 $       // ¬‚³‚¢ê‡iE_PARj
     1262$       // istkszが0以下か,ターゲット定義の最小値(TARGET_MIN_ISTKSZ)よりも
     1263$       // 小さい場合(E_PAR)
    12841264        $IF ICS.ISTKSZ[1] <= 0 || (TARGET_MIN_ISTKSZ
    12851265                                                                        && ICS.ISTKSZ[1] < TARGET_MIN_ISTKSZ)$
     
    12871267        $END$
    12881268
    1289 $       // istksz‚ªƒXƒ^ƒbƒN—̈æ‚̃TƒCƒY‚Æ‚µ‚Đ³‚µ‚­‚È‚¢ê‡iE_PARj
     1269$       // istkszがスタック領域のサイズとして正しくない場合(E_PAR)
    12901270        $IF !EQ(ICS.ISTK[1], "NULL") && CHECK_STKSZ_ALIGN
    12911271                                                        && (ICS.ISTKSZ[1] & (CHECK_STKSZ_ALIGN - 1))$
     
    12941274
    12951275        $IF EQ(ICS.ISTK[1], "NULL")$
    1296 $               // ƒXƒ^ƒbƒN—̈æ‚ÌŽ©“®Š„•t‚¯
     1276$               // スタック領域の自動割付け
    12971277                static STK_T                            _kernel_istack[COUNT_STK_T($ICS.ISTKSZ[1]$)];$NL$
    12981278                #define TOPPERS_ISTKSZ          ROUND_STK_T($ICS.ISTKSZ[1]$)$NL$
     
    13051285$NL$
    13061286
    1307 $ ”ñƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg—p‚̃Xƒ^ƒbƒN—̈æ
     1287$ 非タスクコンテキスト用のスタック領域
    13081288const SIZE              _kernel_istksz = TOPPERS_ISTKSZ;$NL$
    13091289STK_T *const    _kernel_istk = TOPPERS_ISTK;$NL$
     
    13151295
    13161296$
    1317 ƒJ[ƒlƒ‹‚ªŠ„‚è•t‚¯‚郁ƒ‚ƒŠ—̈æ
     1297カーネルが割り付けるメモリ領域
    13181298$
    13191299/*$NL$
     
    13231303
    13241304$IF !LENGTH(KMM.ORDER_LIST)$
    1325 $       // DEF_KMM‚ª‚È‚¢ê‡‚̃fƒtƒHƒ‹ƒg’l‚̐ݒè
     1305$       // DEF_KMMがない場合のデフォルト値の設定
    13261306        #define TOPPERS_KMMSZ           0$NL$
    13271307        #define TOPPERS_KMM                     NULL$NL$
    13281308$ELSE$
    1329 $       // Ã“IAPIuDEF_KMMv‚ª•¡”‚ ‚éiE_OBJj
     1309$       // 静的API「DEF_KMM」が複数ある(E_OBJ)
    13301310        $IF LENGTH(KMM.ORDER_LIST) > 1$
    13311311                $ERROR$E_OBJ: $FORMAT(_("too many %1%"), "DEF_KMM")$$END$
    13321312        $END$
    13331313
    1334 $       // kmmsz‚ª0ˆÈ‰º‚̏ꍇiE_PARj
     1314$       // kmmszが0以下の場合(E_PAR)
    13351315        $IF KMM.KMMSZ[1] <= 0$
    13361316                $ERROR KMM.TEXT_LINE[1]$E_PAR: $FORMAT(_("%1% `%2%\' is zero in %3%"), "kmmsz", KMM.KMMSZ[1], "DEF_KMM")$$END$
    13371317        $END$
    13381318
    1339 $       // kmmsz‚ªƒJ[ƒlƒ‹‚ªŠ„‚è•t‚¯‚郁ƒ‚ƒŠ—̈æ‚̃TƒCƒY‚Æ‚µ‚Đ³‚µ‚­‚È‚¢ê‡iE_PARj
     1319$       // kmmszがカーネルが割り付けるメモリ領域のサイズとして正しくない場合(E_PAR)
    13401320        $IF !EQ(KMM.KMM[1], "NULL") && CHECK_MB_ALIGN
    13411321                                                        && (KMM.KMMSZ[1] & (CHECK_MB_ALIGN - 1))$
     
    13441324
    13451325        $IF EQ(KMM.KMM[1], "NULL")$
    1346 $               // ƒJ[ƒlƒ‹‚ªŠ„‚è•t‚¯‚郁ƒ‚ƒŠ—̈æ‚ÌŽ©“®Š„•t‚¯
     1326$               // カーネルが割り付けるメモリ領域の自動割付け
    13471327                static MB_T                                     _kernel_memory[TOPPERS_COUNT_SZ($KMM.KMMSZ[1]$, sizeof(MB_T))];$NL$
    13481328                #define TOPPERS_KMMSZ           TOPPERS_ROUND_SZ($KMM.KMMSZ[1]$, sizeof(MB_T))$NL$
     
    13551335$NL$
    13561336
    1357 $ ƒJ[ƒlƒ‹‚ªŠ„‚è•t‚¯‚郁ƒ‚ƒŠ—̈æ
     1337$ カーネルが割り付けるメモリ領域
    13581338const SIZE              _kernel_kmmsz = TOPPERS_KMMSZ;$NL$
    13591339MB_T *const             _kernel_kmm = TOPPERS_KMM;$NL$
     
    13611341
    13621342$
    1363 ƒ^ƒCƒ€ƒCƒxƒ“ƒgŠÇ—
     1343タイムイベント管理
    13641344$
    13651345/*$NL$
     
    13711351
    13721352$
    1373 $  Šeƒ‚ƒWƒ
    1374 [ƒ‹‚̏‰Šú‰»ŠÖ”
     1353$  各モジュールの初期化関数
    13751354$
    13761355/*$NL$
     
    13971376
    13981377$
    1399 ‰Šú‰»ƒ‹[ƒ`ƒ“‚ÌŽÀsŠÖ”
     1378初期化ルーチンの実行関数
    14001379$
    14011380/*$NL$
     
    14071386{$NL$
    14081387$FOREACH order INI.ORDER_LIST$
    1409 $       // iniatr‚ªiTA_NULLj‚Å‚È‚¢ê‡iE_RSATRj
     1388$       // iniatrが(TA_NULL)でない場合(E_RSATR)
    14101389        $IF INI.INIATR[order] != 0$
    14111390                $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$
     
    14171396
    14181397$
    1419 I—¹ˆ—ƒ‹[ƒ`ƒ“‚ÌŽÀsŠÖ”
     1398終了処理ルーチンの実行関数
    14201399$
    14211400/*$NL$
     
    14271406{$NL$
    14281407$FOREACH rorder TER.RORDER_LIST$
    1429 $       // teratr‚ªiTA_NULLj‚Å‚È‚¢ê‡iE_RSATRj
     1408$       // teratrが(TA_NULL)でない場合(E_RSATR)
    14301409        $IF TER.TERATR[rorder] != 0$
    14311410                $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$
Note: See TracChangeset for help on using the changeset viewer.