-   
 
 cre_mpl
 acre_mpl
 
-   
 
 ER      cre_mpl ( ID mplid, T_CMPL *pk_cmpl );
 ER_ID   acre_mpl ( T_CMPL *pk_cmpl );
 
| 
 | 
 | 
 | 
| 
 | 
 ID      mplid;
 
 | 
 | 
| 
 | 
 T_CMPL  *pk_cmpl;
 
 | 
 可変長メモリ・プール生成情報を格納した領域へのポインタ
  
 | 
 
 【 可変長メモリ・プール生成情報T_CMPLの構造 】
 
 
 typedef struct  t_cmpl {
         ATR     mplatr;         /*可変長メモリ・プール属性*/
         SIZE    mplsz;          /*可変長メモリ・プール領域のサイズ(バイト数)*/
         VP      mpl;            /*可変長メモリ・プール領域の先頭アドレス*/
         UINT    maxblksz;       /*最大メモリ・ブロック・サイズ(バイト数)*/
 } T_CMPL;
 
 | 
 
 本サービス・コールは,信頼されたドメインに所属するタスクからのみ呼び出せます。
 
 cre_mplは,指定された
mplidの可変長メモリ・プールを
pk_cmplで指定された内容で生成します。acre_mplは
pk_cmplで指定された内容で可変長メモリ・プールを生成し,生成した可変長メモリ・プールIDを返します。
 
 1 )	 可変長メモリ・プール属性(
mplatr)
mplatrにはTA_TFIFOのみを指定できます。
 
 -	 
TA_TFIFO(= 0x0000)
可変長メモリ・プールの待ちキューの順序をFIFO順とします。
 
 2 )	 
可変長メモリ・プール領域のサイズ(
mplsz),可変長メモリ・プール領域の先頭アドレス(
mpl)
アプリケーション側で,
mplszバイトの可変長メモリ・プール領域を確保し,その先頭アドレスを
mplに指定します。
mplは4バイト境界でなければなりません。
 
 備考1	 RI600PXは,可変長メモリ・プール領域に関するアクセス権については何も関知しません。タスクが可変長メモリ・プールから獲得したメモリ・ブロックにアクセスするには,可変長メモリ・プール領域は適切にアクセス許可が設定されたメモリ・オブジェクト内に確保する必要があります。
また,RI600PXは可変長メモリ・プール領域内に管理テーブルを生成します。この管理テーブルがアプリケーションによって書き換えられた場合,システムの正常な動作は保証されません。
 
 備考2	 μITRON4.0仕様には,
mplにNULLを指定することでRI600PXが可変長メモリ・プール領域を割り当てる機能がありますが,本サービス・コールはこの機能をサポートしていません。
 
 備考3	 獲得するメモリ・ブロックのアライメント数は,4です。
 
 3 )	 最大メモリ・ブロック・サイズ(
maxblksz)
maxblkszにはメモリ・ブロックの最大サイズを指定します。実際に獲得可能メモリ・ブロックの最大サイズは,
maxblkszより大きくなることがあります。詳細は,「
9.3.1 可変長メモリ・ブロックのサイズ」を参照してください。
 
 
| 
 | 
 | 
 | 
| 
 | 
 | 
 acre_mplの正常終了(生成された可変長メモリ・プールID)
  
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
 -	 maxblksz  == 0,maxblksz  > 0x0BFFFFF4
 
 -	  maxblkszに対して mplszが小さすぎる。
  
 -	  mpl +  mplsz > 0x100000000
  
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
 -	 CPUロック状態から本サービス・コールを発行した。
  
 -	 「PSW.IPL > カーネル割り込みマスクレベル」の状態から本サービス・コールを発行した。
  
 | 
| 
 | 
 | 
 -	 スタック・ポインタが呼出しタスクのユーザ・スタック領域の範囲外を指している。
  
 -	 呼び出しタスクからの pk_cmplが示す領域に対するオペランド・リード・アクセス許可がない。
  
 | 
| 
 | 
 | 
 -	 呼出しタスクは,信頼されたドメインに所属していない。
  
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
 |