Everything

cre_mbx

acre_mbx

概要
メールボックスの生成
C言語形式
 ER      cre_mbx ( ID mbxid, T_CMBX *pk_cmbx );
 ER_ID   acre_mbx ( T_CMBX *pk_cmbx );
パラメータ
I/O
パラメータ
説明
I
 ID      mbxid;
メールボックスのID
I
 T_CMBX  *pk_cmbx;
メールボックス生成情報を格納した領域へのポインタ

【 メールボックス生成情報T_CMBXの構造 】
 typedef struct  t_cmbx {
         ATR     mbxatr;         /*メールボックス属性*/
         PRI     maxmpri;        /*メッセージ優先度の最大値*/
         VP      mprihd;         /*将来拡張用*/
 } T_CMBX;

機能
本サービス・コールは,信頼されたドメインに所属するタスクからのみ呼び出せます。
cre_mbxは,指定されたmbxidのメールボックスをpk_cmbxで指定された内容で生成します。acre_mbxはpk_cmbxで指定された内容でメールボックスを生成し,生成したメールボックスIDを返します。
1 ) メールボックス属性(mbxatr
mbxatrには以下を指定できます。
   mbxatr := ( ( TA_TFIFO || TA_TPRI ) | ( TA_MFIFO || TA_MPRI) )
- TA_TFIFO(= 0x0000)
メールボックスの待ちキューの順序をFIFO順とします。
- TA_TPRI(= 0x0001)
メールボックスの待ちキューの順序をタスクの現在優先度順とします。ただし,同じ現在優先度のタスクの中ではFIFO順です。
- TA_MFIFO(= 0x0000)
メッセージ・キューの順序をFIFO順とします。
- TA_MPRI(= 0x0002)
メッセージ・キューの順序をメッセージの優先度順とします。ただし,同じメッセージ優先度のメッセージの中ではFIFO順です。
2 ) メッセージ優先度の最大値(maxmpri
mbxatrにTA_MPRIを指定した場合は,メッセージ優先度として1~maxmpriを使用できます。
maxmpriに指定可能な範囲は,1~TMAX_MPRIです。
3 ) mprihd
将来拡張用のため,単に無視されます。
戻り値
マクロ
数値
意味

正の値
acre_mbxの正常終了(生成されたメールボックスID)
E_OK
0
cre_mbxの正常終了
E_RSATR
-11
予約属性
- mbxatrのbit0,bit1以外のビットが1
E_PAR
-17
パラメータ・エラー
- pk_cmbx == NULL
- TA_MPRI指定時
- maxmpri ≦0
- maxmpri> TMAX_MPRI
E_ID
-18
不正ID番号(cre_mbxのみ)
- mbxid≦0
- mbxid > VTMAX_MBX
E_CTX
-25
コンテキスト・エラー
- CPUロック状態から本サービス・コールを発行した。
- 非タスクから本サービス・コールを発行した。
- 「PSW.IPL > カーネル割り込みマスクレベル」の状態から本サービス・コールを発行した。
E_MACV
-26
メモリ・アクセス違反
- スタック・ポインタが呼出しタスクのユーザ・スタック領域の範囲外を指している。
- 呼び出しタスクからのpk_cmbxが示す領域に対するオペランド・リード・アクセス許可がない。
E_OACV
-27
オブジェクト・アクセス違反
- 呼出しタスクは,信頼されたドメインに所属していない。
E_NOID
-34
空きIDなし(acre_mbxのみ)
E_OBJ
-41
オブジェクト状態不正(cre_mbxのみ)
- mbxidのメールボックスが存在する。