cre_mbf
acre_mbf
ER cre_mbf ( ID mbfid, T_CMBF *pk_cmbf );
ER_ID acre_mbf ( T_CMBF *pk_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を返します。
2 ) メッセージの最大サイズ(maxmsz)
このメッセージ・バッファに送信するメッセージの最大サイズを指定します。rcv_mbf,prcv_mbf,およびtrcv_mbfで指定するメッセージ受信領域は,このサイズ以上でなければなりません。
このメッセージ・バッファに送信するメッセージの最大サイズを指定します。rcv_mbf,prcv_mbf,およびtrcv_mbfで指定するメッセージ受信領域は,このサイズ以上でなければなりません。
3 ) メッセージ・バッファ領域のサイズ(mbfsz),メッセージ・バッファ領域の先頭アドレス(mbf)
アプリケーション側で,mbfszバイトのメッセージ・バッファ領域を確保し,その先頭アドレスをmbfに指定します。
また,mbfszに0を指定することもできます。この場合,メッセージ・バッファにメッセージを蓄えておくことはできないため,送信側と受信側の先に実行した方が待ち状態になり,他方が行われた時点で待ちが解除される,つまり送信側と受信側が完全に同期した動作となります。なお,mbfszが0の場合は,mbfは無視されます。
アプリケーション側で,mbfszバイトのメッセージ・バッファ領域を確保し,その先頭アドレスをmbfに指定します。
また,mbfszに0を指定することもできます。この場合,メッセージ・バッファにメッセージを蓄えておくことはできないため,送信側と受信側の先に実行した方が待ち状態になり,他方が行われた時点で待ちが解除される,つまり送信側と受信側が完全に同期した動作となります。なお,mbfszが0の場合は,mbfは無視されます。
備考1 RI600PXは,メッセージ・バッファ領域に関するアクセス権については何も関知しません。通常は,メッセージ・バッファ領域はメモリ・オブジェクト以外でかつユーザ・スタック以外の領域に作成してください。メモリ・オブジェクト内にメッセージ・バッファ領域を作成した場合は,そのメモリ・オブジェクトへのオペランド・ライト・アクセスが許可されたタスクが,誤ってメッセージ・バッファ領域を書き換えてしまう危険があります。