rel_mpl

概要

可変長メモリ・ブロックの返却

C言語形式

 ER      rel_mpl ( ID mplid, VP blk );
パラメータ

I/O

パラメータ

説明

I

 ID      mplid;
可変長メモリ・プールのID

I

 VP      blk;
可変長メモリ・ブロックの先頭アドレス



機能

mplidで指定された可変長メモリ・プールにblkで指定された可変長メモリ・ブロックを返却します。

可変長メモリ・ブロックを返却したあと,対象可変長メモリ・プールの待ちキューにキューイングされているタスクをキューの先頭から調べていき,待ちタスクが要求するサイズのメモリを割り当てられる場合はメモリを割り当てます。この動作を待ちキューにタスクがなくなるか,メモリが割り当てられなくなるまで繰り返します。これにより,メモリを獲得できたタスクは,待ちキューから外れ,WAITING状態(可変長メモリ・ブロック獲得待ち状態)からREADY状態へ,またはWAITING-SUSPENDED状態からSUSPENDED状態へと遷移します。

備考 RI600PXでは,blkに関して簡易的なエラー検出しか行っていません。blkには,必ず正しい値を指定してください。blkが不正でかつエラー検出されない場合,以後の動作は保証されません。

戻り値

マクロ

数値

意味

E_OK

0

正常終了

E_PAR

-17

パラメータ・エラー

- blk == NULL

- blkが不正

E_ID

-18

不正ID番号

- mplid≦0

- mplid > VTMAX_MPL

E_CTX

-25

コンテキスト・エラー

- CPUロック状態から本サービス・コールを発行した。

- 非タスクから本サービス・コールを発行した。

- 「PSW.IPL > カーネル割り込みマスクレベル」の状態から本サービス・コールを発行した。

E_MACV

-26

メモリ・アクセス違反

- スタック・ポインタが呼出しタスクのユーザ・スタック領域の範囲外を指している。

E_NOEXS

-42

オブジェクト未生成

- mplidの可変長メモリ・プールが存在しない。