pget_mpl

ipget_mpl

Outline

Acquire variable-sized memory block (polling).

C format

 ER      pget_mpl (ID mplid, UINT blksz, VP *p_blk);
 ER      ipget_mpl (ID mplid, UINT blksz, VP *p_blk);
Parameter(s)

I/O

Parameter

Description

I

 ID      mplid;
ID number of the variable-sized memory pool from which a memory block is acquired.

I

 UINT    blksz;
Memory block size to be acquired (in bytes).

O

 VP      *p_blk;
Start address of the acquired memory block.



Explanation

This service call acquires a variable-size memory block of the size specified by parameter blksz from the variable-size memory pool specified by parameter mplid, and stores its start address into the area specified by parameter p_blk.

If no variable-size memory blocks could be acquired from the target variable-size memory pool (no successive areas equivalent to the requested size were available) when this service call is issued, this service call does not acquire variable-size memory block but returns E_TMOUT.

Note 1 The RI850V4 acquires variable-size memory blocks in the unit of "integral multiple of 4". If a value other than an integral multiple of 4 is specified for parameter blksz, it is rounded up to be an integral multiple of 4.

Note 2 If no variable-size memory blocks could be acquired from the target variable-size memory pool (no successive areas equivalent to the requested size were available) when this service call is issued, the contents in the area specified by parameter p_blk become undefined.

Return value

Macro

Value

Description

E_OK

0

Normal completion.

E_PAR

-17

Parameter error.

- blksz = 0x0

- blksz > 0x7fffffff

E_ID

-18

Invalid ID number.

- mplid < 0x0

- mplid > Maximum ID number

E_CTX

-25

Context error.

- This service call was issued in the CPU locked state.

E_NOEXS

-42

Non-existent object.

- Specified variable-sized memory pool is not registered.

E_TMOUT

-50

Polling failure.

- No successive areas equivalent to the requested size were available in the target variable-size memory pool.