tget_mpf

Outline

Acquire fixed-sized memory block (with time-out).

C format

 ER      tget_mpf (ID mpfid, VP *p_blk, TMO tmout);
Parameter(s)

I/O

Parameter

Description

I

 ID      mpfid;
ID number of the fixed-sized memory pool.

O

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

I

 TMO     tmout;
Specified time-out (in millisecond).

TMO_FEVR: Waiting forever.

TMO_POL: Polling.

Value: Specified time-out.



Explanation

This service call acquires the fixed-sized memory block from the fixed-sized memory pool specified by parameter mpfid and stores the start address in the area specified by parameter p_blk.

If no fixed-size memory blocks could be acquired from the target fixed-size memory pool (no available fixed-size memory blocks exist) when this service call is issued, this service call does not acquire the fixed-size memory block but queues the invoking task to the target fixed-size memory pool wait queue and moves it from the RUNNING state to the WAITING state with time-out (fixed-size memory block acquisition wait state).

The WAITING state for a fixed-sized memory block is cancelled in the following cases.

WAITING State for a Fixed-sized Memory Block Cancel Operation

Return Value

A fixed-sized memory block was returned to the target fixed-sized memory pool as a result of issuing rel_mpf.

E_OK

A fixed-sized memory block was returned to the target fixed-sized memory pool as a result of issuing irel_mpf.

E_OK

Forced release from waiting (accept rel_wai while waiting).

E_RLWAI

Forced release from waiting (accept irel_wai while waiting).

E_RLWAI

The fixed-sized memory pool is reset as a result of issuing vrst_mpf.

EV_RST

The time specified by tmout has elapsed.

E_TMOUT

Forced release from waiting (accept del_mpf while waiting).

E_DLT



Note 1 Invoking tasks are queued to the target fixed-size memory pool wait queue in the order defined at creating the fixed-sized memory pool. (FIFO order or current priority order).

Note 2 The contents of the block are undefined.

Note 3 The alignment number of memory block is 1. Please perform the following, in order to enlarge the alignment number of memory blocks.

- Specify the memory block size to a multiple of the desired alignment number at creating the fixed-sized memory pool.

- Make the start address of the fixed-sized memory pool area into the address of the desired alignment number.

Note 4 TMO_FEVR is specified for wait time tmout, processing equivalent to get_mpf will be executed. When TMO_POL is specified, processing equivalent to pget_mpf will be executed.

Return value

Macro

Value

Description

E_OK

0

Normal completion.

E_PAR

-17

Parameter error.

- p_blk == NULL

- tmout < -1

- tmout > (0x7FFFFFFF - TIC_NUME) / TIC_DENO

E_ID

-18

Invalid ID number.

- mpfid < 0

- mpfid > VTMAX_MPF

E_CTX

-25

Context error.

- This service call was issued from a non-task.

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

- This service call was issued in the dispatching disabled state.

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

E_MACV

-26

Memory access violation.

- 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 fixed-sized memory pool specified by mpfid does not exist.

E_RLWAI

-49

Forced release from the WAITING state.

- Accept rel_wai/irel_wai while waiting.

E_TMOUT

-50

Polling failure or specified time has elapsed.

E_DLT

-51

Waiting object deleted.

- Accept del_mpf while waiting.

EV_RST

-127

Released from WAITING state by the object reset (vrst_mpf)