-
cre_mpf
acre_mpf
-
ER cre_mpf ( ID mpfid, T_CMPF *pk_cmpf );
ER_ID acre_mpf ( T_CMPF *pk_cmpf );
|
|
|
|
ID mpfid;
|
|
|
T_CMPF *pk_cmpf;
|
固定長メモリ・プール生成情報を格納した領域へのポインタ
|
【 固定長メモリ・プール生成情報T_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を返します。
1 ) 固定長メモリ・プール属性(
mpfatr)
mpfatrには以下を指定できます。
mpfatr := ( TA_TFIFO || TA_TPRI )
-
TA_TFIFO(= 0x0000)
固定長メモリ・プールの待ちキューの順序をFIFO順とします。
-
TA_TPRI(= 0x0001)
固定長メモリ・プールの待ちキューの順序をタスクの現在優先度順とします。ただし,同じ現在優先度のタスクの中ではFIFO順です。
2 ) 獲得可能なメモリ・ブロック数(
blkcnt),メモリ・ブロックのサイズ(
blksz),固定長メモリ・プール領域の先頭アドレス(
mpf)
アプリケーション側で,TSZ_MPF(
blkcnt, blksz)バイトの固定長メモリ・プール領域を確保し,その先頭アドレスを
mpfに指定します。
備考2 RI600PXは,固定長メモリ・プール領域に関するアクセス権については何も関知しません。タスクが固定長メモリ・プールから獲得したメモリ・ブロックにアクセスするには,固定長メモリ・プール領域は適切にアクセス許可が設定されたメモリ・オブジェクト内に確保する必要があります。
また,RI600PXは固定長メモリ・プール領域内に管理テーブルを生成します。この管理テーブルがアプリケーションによって書き換えられた場合,システムの正常な動作は保証されません。
備考3 μITRON4.0仕様には,
mpfにNULLを指定することでRI600PXが固定長メモリ・プール領域を割り当てる機能がありますが,本サービス・コールはこの機能をサポートしていません。
備考4 メモリ・ブロックのアライメント数は1です。これより大きいアライメント数のメモリ・ブロックを獲得したい場合は,以下を守ってください。
- 固定長メモリ・プール生成時に指定するメモリ・ブロック・サイズを,目的のアライメン数の倍数とする。
- 固定長メモリ・プール領域の先頭アドレスを,目的のアライメント数のアドレスとする。
3 ) 固定長メモリ・プール管理領域の先頭アドレス(
mpfmb)
アプリケーション側で,TSZ_MPFMB(
blkcnt, blksz)バイトの固定長メモリ・プール管理領域を確保し,その先頭アドレスを
mpfmbに指定します。
備考2 RI600PXは,固定長メモリ・プール管理領域に関するアクセス権については何も関知しません。通常は,固定長メモリ・プール管理領域はメモリ・オブジェクト以外でかつユーザ・スタック以外の領域に作成してください。メモリ・オブジェクト内に固定長メモリ・プール管理領域を作成した場合は,そのメモリ・オブジェクトへのオペランド・ライト・アクセスが許可されたタスクが,誤って固定長メモリ・プール管理領域を書き換えてしまう危険があります。
|
|
|
|
|
acre_mpfの正常終了(生成された固定長メモリ・プールID)
|
|
|
|
|
|
|
|
|
- blkcnt == 0,blkcnt > 65535
- blksz == 0,blksz > 65535
- mpf + TSZ_MPF( blkcnt, blksz) > 0x100000000
|
|
|
|
|
|
- CPUロック状態から本サービス・コールを発行した。
- 「PSW.IPL > カーネル割り込みマスクレベル」の状態から本サービス・コールを発行した。
|
|
|
- スタック・ポインタが呼出しタスクのユーザ・スタック領域の範囲外を指している。
- 呼び出しタスクからの pk_cmpfが示す領域に対するオペランド・リード・アクセス許可がない。
|
|
|
- 呼出しタスクは,信頼されたドメインに所属していない。
|
|
|
|
|
|
|
|
|
|