(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$