cre_mpf
acre_mpf
ER cre_mpf ( ID mpfid, T_CMPF *pk_cmpf );
ER_ID acre_mpf ( T_CMPF *pk_cmpf );
typedef struct t_cmpf { ATR mpfatr; /*固定長メモリ・プール属性*/ UINT blkcnt; /*獲得可能なメモリ・ブロック数*/ UINT blksz; /*メモリ・ブロックのサイズ(バイト数)*/ VP mpf; /*固定長メモリ・プール領域の先頭アドレス*/ VP mpfmb; /*固定長メモリ・プール管理領域の先頭アドレス*/ } T_CMPF; |
cre_mpfは,指定されたmpfidの固定長メモリ・プールをpk_cmpfで指定された内容で生成します。acre_mpfはpk_cmpfで指定された内容で固定長メモリ・プールを生成し,生成した固定長メモリ・プールIDを返します。
mpfatr := ( TA_TFIFO || TA_TPRI )
2 ) 獲得可能なメモリ・ブロック数(blkcnt),メモリ・ブロックのサイズ(blksz),固定長メモリ・プール領域の先頭アドレス(mpf)
アプリケーション側で,TSZ_MPF(blkcnt, blksz)バイトの固定長メモリ・プール領域を確保し,その先頭アドレスをmpfに指定します。
アプリケーション側で,TSZ_MPF(blkcnt, blksz)バイトの固定長メモリ・プール領域を確保し,その先頭アドレスをmpfに指定します。
備考2 RI600PXは,固定長メモリ・プール領域に関するアクセス権については何も関知しません。タスクが固定長メモリ・プールから獲得したメモリ・ブロックにアクセスするには,固定長メモリ・プール領域は適切にアクセス許可が設定されたメモリ・オブジェクト内に確保する必要があります。
また,RI600PXは固定長メモリ・プール領域内に管理テーブルを生成します。この管理テーブルがアプリケーションによって書き換えられた場合,システムの正常な動作は保証されません。
また,RI600PXは固定長メモリ・プール領域内に管理テーブルを生成します。この管理テーブルがアプリケーションによって書き換えられた場合,システムの正常な動作は保証されません。
3 ) 固定長メモリ・プール管理領域の先頭アドレス(mpfmb)
アプリケーション側で,TSZ_MPFMB(blkcnt, blksz)バイトの固定長メモリ・プール管理領域を確保し,その先頭アドレスをmpfmbに指定します。
アプリケーション側で,TSZ_MPFMB(blkcnt, blksz)バイトの固定長メモリ・プール管理領域を確保し,その先頭アドレスをmpfmbに指定します。
備考2 RI600PXは,固定長メモリ・プール管理領域に関するアクセス権については何も関知しません。通常は,固定長メモリ・プール管理領域はメモリ・オブジェクト以外でかつユーザ・スタック以外の領域に作成してください。メモリ・オブジェクト内に固定長メモリ・プール管理領域を作成した場合は,そのメモリ・オブジェクトへのオペランド・ライト・アクセスが許可されたタスクが,誤って固定長メモリ・プール管理領域を書き換えてしまう危険があります。