(toppers-users 3217) [ASP]CRE_MBXのconfigが正常にできない
中村
norichan1108 @ gmail.com
2010年 6月 18日 (金) 11:02:17 JST
こんにちは、中村です。
TOPPERS/ASP 1.3.2(for cq_st_arm custom ver(for stbee)) にて
以下の現象にて困っています。
// 初期化ルーチンの登録
ATT_INI({ TA_NULL, 0, ui_init });
// UI処理タスクの生成
CRE_TSK(UI_TSK, {ATR_UI_TSK, 0, ui_tsk, PRI_UI_TSK, STK_UI_TSK,NULL});
// UIメールボックス
CRE_MBX(UI_MBX, { TA_TPRI|TA_MPRI , TMAX_MPRI, NULL });
上記、CRE_MBXですが、なぜか下記のエラーがでてkernel_cfg.[ch]が生成できま
せん。
cfg:ui.cfg:13: error: E_PAR: illegal maxmpri `TMAX_MPRI' of `UI_MBX' in
CRE_MBX
maxmpriはTMIN_MPRI〜TMAX_MPRIの値を設定するはずですよね?
ためしに、
CRE_MBX(UI_MBX, { TA_TPRI|TA_MPRI , 1, NULL });
とすると
cfg:ui.cfg:13: error: E_PAR: illegal maxmpri `1' of `UI_MBX' in CRE_MBX
となります。
もっと変なのは、
CRE_MBX(UI_MBX, { 0xff , 1, NULL });
ATRを変な値にしてみたにもかかわらず、
cfg:ui.cfg:13: error: E_PAR: illegal maxmpri `1' of `UI_MBX' in CRE_MBX
と、ATRはまったく評価されていません。
kernel.tfには下記のようにあり、maxmpriの設定はTMAX_MPRIでまったく問題な
いようにおもうのですが、私の勘違いでしょうか?
それとも、どこか文法的にやらかしているんでしょうか?
宜しくお願いいたします。
$
$ メールボックス
$
/*$NL$
$SPC$* Mailbox Functions$NL$
$SPC$*/$NL$
$NL$
$ メールボックスID番号の最大値
const ID _kernel_tmax_mbxid = (TMIN_MBXID + TNUM_MBXID - 1);$NL$
$NL$
$ メールボックス初期化ブロックの生成
$IF LENGTH(MBX.ID_LIST)$
const MBXINIB _kernel_mbxinib_table[TNUM_MBXID] = {$NL$
$JOINEACH mbxid MBX.ID_LIST ",\n"$
$ // mbxatrが([TA_TPRI]|[TA_MPRI])でない場合(E_RSATR)
$IF (MBX.MBXATR[mbxid] & ~(TA_TPRI|TA_MPRI)) != 0$
$ERROR MBX.TEXT_LINE[mbxid]$E_RSATR: $FORMAT(_("illegal %1%
`%2%\' of `%3%\' in %4%"), "mbxatr", MBX.MBXATR[mbxid], mbxid,
"CRE_MBX")$$END$
$END$
$ // (TMIN_MPRI <= maxmpri && maxmpri <= TMAX_MPRI)でない場合(E_PAR)
$IF !(TMIN_MPRI <= MBX.MAXMPRI[mbxid] && MBX.MAXMPRI[mbxid] <=
TMAX_MPRI)$
$ERROR MBX.TEXT_LINE[mbxid]$E_PAR: $FORMAT(_("illegal %1%
`%2%\' of `%3%\' in %4%"), "maxmpri", MBX.MAXMPRI[mbxid], mbxid,
"CRE_MBX")$$END$
$END$
$ // mprihdがNULLでない場合(E_NOSPT)
$IF !EQ(MBX.MPRIHD[mbxid], "NULL")$
$ERROR MBX.TEXT_LINE[mbxid]$E_NOSPT: $FORMAT(_("illegal %1%
`%2%\' of `%3%\' in %4%"), "mprihd", MBX.MPRIHD[mbxid], mbxid,
"CRE_MBX")$$END$
$END$
$ // メールボックス初期化ブロック
$TAB${ ($MBX.MBXATR[mbxid]$), ($MBX.MAXMPRI[mbxid]$) }
$END$$NL$
};$NL$
$NL$
$ // メールボックスコントロールブロック
MBXCB _kernel_mbxcb_table[TNUM_MBXID];$NL$
$ELSE$
TOPPERS_EMPTY_LABEL(const MBXINIB, _kernel_mbxinib_table);$NL$
TOPPERS_EMPTY_LABEL(MBXCB, _kernel_mbxcb_table);$NL$
$END$
$NL$