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のメールボックスが存在する。