-   
 cre_mbf
 acre_mbf
 
-   
 ER      cre_mbf ( ID mbfid, T_CMBF *pk_cmbf );
 ER_ID   acre_mbf ( T_CMBF *pk_cmbf );
 
|  |  |  | 
|  | 
 ID      mbfid;
 |  | 
|  | 
 T_CMBF  *pk_cmbf;
 | 
 メッセージ・バッファ生成情報を格納した領域へのポインタ
 | 
 
 【 メッセージ・バッファ生成情報T_CMBFの構造 】
 
 
| 
 typedef struct  t_cmbf {
         ATR     mbfatr;         /*メッセージ・バッファ属性*/
         UINT    maxmsz;         /*メッセージの最大サイズ(バイト数)*/
         SIZE    mbfsz;          /*メッセージ・バッファ領域のサイズ(バイト数)*/
         VP      mbf;            /*メッセージ・バッファ領域の先頭アドレス*/
 } T_CMBF;
 | 
 
 本サービス・コールは,信頼されたドメインに所属するタスクからのみ呼び出せます。
 
 cre_mbfは,指定された
mbfidのメッセージ・バッファを
pk_cmbfで指定された内容で生成します。acre_mbfは
pk_cmbfで指定された内容でメッセージ・バッファを生成し,生成したメッセージ・バッファIDを返します。
 
 1 )	 メッセージ・バッファ属性(
mbfatr)
mbfatrにはTA_TFIFOのみを指定できます。
 
 -	 
TA_TFIFO(= 0x0000)
メッセージ・バッファの送信待ちキューの順序をFIFO順とします。
 
 備考	 メッセージ・バッファの受信待ちキューはFIFO順です。
 
 2 )	 メッセージの最大サイズ(
maxmsz)
このメッセージ・バッファに送信するメッセージの最大サイズを指定します。
rcv_mbf,
prcv_mbf,および
trcv_mbfで指定するメッセージ受信領域は,このサイズ以上でなければなりません。
 
 3 )	 メッセージ・バッファ領域のサイズ(mbfsz),メッセージ・バッファ領域の先頭アドレス(
mbf)
アプリケーション側で,
mbfszバイトのメッセージ・バッファ領域を確保し,その先頭アドレスを
mbfに指定します。
また,
mbfszに0を指定することもできます。この場合,メッセージ・バッファにメッセージを蓄えておくことはできないため,送信側と受信側の先に実行した方が待ち状態になり,他方が行われた時点で待ちが解除される,つまり送信側と受信側が完全に同期した動作となります。なお,
mbfszが0の場合は,
mbfは無視されます。
 
 備考1	 RI600PXは,メッセージ・バッファ領域に関するアクセス権については何も関知しません。通常は,メッセージ・バッファ領域はメモリ・オブジェクト以外でかつユーザ・スタック以外の領域に作成してください。メモリ・オブジェクト内にメッセージ・バッファ領域を作成した場合は,そのメモリ・オブジェクトへのオペランド・ライト・アクセスが許可されたタスクが,誤ってメッセージ・バッファ領域を書き換えてしまう危険があります。
 
 備考2	 μITRON4.0仕様には,
mbfにNULLを指定することでRI600PXがメッセージ・バッファ領域を割り当てる機能がありますが,本サービス・コールはこの機能をサポートしていません。
 
 
|  |  |  | 
|  |  | 
 acre_mbfの正常終了(生成されたメッセージ・バッファID)
 | 
|  |  |  | 
|  |  |  | 
|  |  | 
 -	 maxmsz  == 0,maxmsz  > 65528
 
 -	 0 < mbfsz< 8, mbfsz> 65532 
 -	 mbfsz == 0かつmbf  + mbfsz   >  0x100000000
 | 
|  |  |  | 
|  |  | 
 -	 CPUロック状態から本サービス・コールを発行した。
 
 -	 「PSW.IPL > カーネル割り込みマスクレベル」の状態から本サービス・コールを発行した。
 | 
|  |  | 
 -	 スタック・ポインタが呼出しタスクのユーザ・スタック領域の範囲外を指している。
 
 -	 呼び出しタスクからのpk_cmbf が示す領域に対するオペランド・リード・アクセス許可がない。
 | 
|  |  | 
 -	 呼出しタスクは,信頼されたドメインに所属していない。
 | 
|  |  | 
 -	 mbfsz!= 0かつ mbf== NULL | 
|  |  |  | 
|  |  |  |