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.

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 For the size of the memory block, refer to "9.3.1 Size of Variable-sized memory block".

Note 2 The contents of the block are undefined.

Note 3 The alignment number of memory blocks changes with creation method of the variable-sized memory pool.

- Created by system configuration file
The alignment number is 1. To enlarge the alignment number to 4, specify unique section to Section name assigned to the memory pool area (mpl_section) in Variable-sized Memory Pool Information (variable_memorypool[]) and locate the section to 4-bytes boundary address when linking.


- Created by cre_mpl or acre_mpl
The alignment number is 4.

Return value

Macro

Value

Description

E_OK

0

Normal completion.

E_PAR

-17

Parameter error.

- blksz == 0

- blksz exceeds the maximum size that can be acquired.

- p_blk == NULL

E_ID

-18

Invalid ID number.

- mplid < 0

- mplid > VTMAX_MPL

E_CTX

-25

Context error.

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

- This service call was issued in the status "PSW.IPL > kernel interrupt mask level".

Note When the ipget_mpl is issued from task or the pget_mpl is issued from non-task, the context error is not detected and normal operation of the system is not guaranteed.

E_MACV

-26

Memory access violation. (only for pget_mpl)

- Stack pointer points out of user stack for invoking task.

- The operand-write access to the area indicated by p_blk has not been permitted to the invoking task.

E_NOEXS

-42

Non-existent object.

- The variable-sized memory pool specified by mplid does not exist.

E_TMOUT

-50

Polling failure.