RL-ARM User's Guide

Task Management

Each RTX task is always in exactly one state, which tells the disposition of the task.

StateDescription
RUNNINGThe task that is currently running is in the RUNNING state. Only one task at a time can be in this state. The os_tsk_self() returns the Task ID (TID) of the currently executing task.
READYTasks which are ready to run are in the READY state. Once the running task has completed processing, RTX selects the next ready task with the highest priority and starts it.
WAIT_DLYTasks which are waiting for a delay to expire are in the WAIT_DLY State. Once the delay has expired, the task is switched to the READY state. The os_dly_wait() function is used to place a task in the WAIT_DLY state.
WAIT_ITVTasks which are waiting for an interval to expire are in the WAIT_ITV State. Once the interval delay has expired, the task is switched back to the READY State. The os_itv_wait() function is used to place a task in the WAIT_IVL State.
WAIT_ORTasks which are waiting for at least one event flag are in the WAIT_OR State. When the event occurs, the task is switched to the READY state. The os_evt_wait_or() function is used to place a task in the WAIT_OR state.
WAIT_ANDTasks which are waiting for all the set events to occur are in the WAIT_AND state. When all event flags are set, the task is switched to the READY state. The os_evt_wait_and() function is used to place a task in the WAIT_AND state.
WAIT_SEMTasks which are waiting for a semaphore are in the WAIT_SEM state. When the token is obtained from the semaphore, the task is switched to the READY state. The os_sem_wait() function is used to place a task in the WAIT_SEM state.
WAIT_MUTTasks which are waiting for a free mutex are in the WAIT_MUT state. When a mutex is released, the task acquire the mutex and switch to the READY state. The os_mut_wait() function is used to place a task in the WAIT_MUT state.
WAIT_MBXTasks which are waiting for a mailbox message are in the WAIT_MBX state. Once the message has arrived, the task is switched to the READY state. The os_mbx_wait() function is used to place a task in the WAIT_MBX state.
Tasks waiting to send a message when the mailbox is full are also put into the WAIT_MBX state. When the message is read out from the mailbox, the task is switched to the READY state. In this case the os_mbx_send() function is used to place a task in the WAIT_MBX state.
INACTIVETasks which have not been started or tasks which have been deleted are in the INACTIVE state. The os_tsk_delete() function places a task that has been started (with os_tsk_create()) into the INACTIVE state.