twai_flg

Outline

Wait for eventflag (with timeout).

C format

 ER      twai_flg (ID flgid, FLGPTN waiptn, MODE wfmode, FLGPTN *p_flgptn, TMO tmout);
Parameter(s)

I/O

Parameter

Description

I

 ID      flgid;
ID number of the eventflag to wait for.

I

 FLGPTN  waiptn;
Wait bit pattern.

I

 MODE    wfmode;
Wait mode.

TWF_ANDW: AND waiting condition.

TWF_ORW: OR waiting condition.

O

 FLGPTN  *p_flgptn;
Bit pattern causing a task to be released from waiting.

I

 TMO     tmout;
Specified timeout (unit:millisecond).

TMO_FEVR: Waiting forever.

TMO_POL: Polling.

Value: Specified timeout.



Explanation

This service call checks whether the bit pattern specified by parameter waiptn and the bit pattern that satisfies the required condition specified by parameter wfmode are set to the eventflag specified by parameter flgid.

If a bit pattern that satisfies the required condition has been set for the target eventflag, the bit pattern of the target eventflag is stored in the area specified by parameter p_flgptn.

If the bit pattern of the target eventflag does not satisfy the required condition when this service call is issued, the invoking task is queued to the target eventflag wait queue.

As a result, the invoking task is unlinked from the ready queue and is moved from the RUNNING state to the WAITING state (WAITING state for an eventflag).

The WAITING state for an eventflag is cancelled in the following cases, and then moved to the READY state.

WAITING State for an Eventflag Cancel Operation

Return Value

A bit pattern that satisfies the required condition was set to the target eventflag as a result of issuing set_flg.

E_OK

A bit pattern that satisfies the required condition was set to the target eventflag as a result of issuing iset_flg.

E_OK

Forced release from waiting (accept rel_wai while waiting).

E_RLWAI

Forced release from waiting (accept irel_wai while waiting).

E_RLWAI

Polling failure or timeout.

E_TMOUT



The following shows the specification format of required condition wfmode.

- wfmode = TWF_ANDW
Checks whether all of the bits to which 1 is set by parameter waiptn are set as the target eventflag.


- wfmode = TWF_ORW
Checks which bit, among bits to which 1 is set by parameter waiptn, is set as the target eventflag.


Note 1 With the RI850V4, whether to enable queuing of multiple tasks to the event flag wait queue is defined during configuration. If this service call is issued for the event flag (TW_WSGL attribute) to which a wait task is queued, therefore, "E_ILUSE" is returned regardless of whether the required condition is immediately satisfied.

TA_WSGL: Only one task is allowed to be in the WAITING state for the eventflag.

TA_WMUL: Multiple tasks are allowed to be in the WAITING state for the eventflag.

Note 2 Invoking tasks are queued to the target event flag (TA_WMUL attribute) wait queue in the order defined during configuration (FIFO order or priority order).

Note 3 The RI850V4 performs bit pattern clear processing (0x0 setting) when the required condition of the target eventflag (TA_CLR attribute) is satisfied.

Note 4 If the event flag wait state is cancelled because rel_wai or irel_wai was issued or the wait time elapsed, the contents in the area specified by parameter p_flgptn become undefined.

Note 5 TMO_FEVR is specified for wait time tmout, processing equivalent to wai_flg will be executed. When TMO_POL is specified, processing equivalent to pol_flg /ipol_flg will be executed.

Return value

Macro

Value

Description

E_OK

0

Normal completion.

E_PAR

-17

Parameter error.

- waiptn = 0x0

- wfmode is invalid.

- tmout < TMO_FEVR

E_ID

-18

Invalid ID number.

- flgid < 0x0

- flgid > Maximum ID number

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.

E_ILUSE

-28

Illegal service call use.

- There is already a task waiting for an eventflag with the TA_WSGL attribute.

E_NOEXS

-42

Non-existent object.

- Specified eventflag is not registered.

E_RLWAI

-49

Forced release from the WAITING state.

- Accept rel_wai/irel_wai while waiting.

E_TMOUT

-50

Timeout.

- Polling failure or timeout.