Everything

ref_tsk

iref_tsk

Outline
Reference task state.
C format
 ER      ref_tsk (ID tskid, T_RTSK *pk_rtsk);
 ER      iref_tsk (ID tskid, T_RTSK *pk_rtsk);
Parameter(s)
I/O
Parameter
Description
I
 ID      tskid;
ID number of the task.
TSK_SELF: Invoking task.
Value: ID number of the task.
O
 T_RTSK  *pk_rtsk;
Pointer to the packet returning the task state.

[Task state packet: T_RTSK]
 typedef struct  t_rtsk {
     STAT    tskstat;        /*Current state*/
     PRI     tskpri;         /*Current priority*/
     PRI     tskbpri;        /*Base priority*/
     STAT    tskwait;        /*Reason for waiting*/
     ID      wobjid;         /*Object ID number for which the task is waiting*/
     TMO     lefttmo;        /*Remaining time until time-out*/
     UINT    actcnt;         /*Activation request count*/
     UINT    wupcnt;         /*Wake-up request count*/
     UINT    suscnt;         /*Suspension count*/
 } T_RTSK;

Explanation
Stores task state packet (current state, current priority, etc.) of the task specified by parameter tskid in the area specified by parameter pk_rtsk.
- tskstat
Stores the current state.
TTS_RUN: RUNNING state
TTS_RDY: READY state
TTS_WAI: WAITING state
TTS_SUS: SUSPENDED state
TTS_WAS: WAITING-SUSPENDED state
TTS_DMT: DORMANT state
- tskpri
Stores the current priority.
The tskpri is effective only when the tskstat is other than TTS_DMT.
- tskbpri
Stores the base priority.
The tskbpri is effective only when the tskstat is other than TTS_DMT.
- tskwait
Stores the reason for waiting.
The tskwait is effective only when the tskstat is TTS_WAI or TTS_WAS.
TTW_SLP: Sleeping state caused by slp_tsk or tslp_tsk
TTW_DLY: Delayed state caused by dly_tsk
TTW_SEM: WAITING state for a semaphore resource caused by wai_sem or twai_sem
TTW_FLG: WAITING state for an eventflag caused by wai_flg or twai_flg
TTW_SDTQ: Sending WAITING state for a data queue caused by snd_dtq or tsnd_dtq
TTW_RDTQ: Receiving WAITING state for a data queue caused by rcv_dtq or trcv_dtq
TTW_MBX: Receiving WAITING state for a mailbox caused by rcv_mbx or trcv_mbx
TTW_MTX: WAITING state for a mutex caused by loc_mtx or tloc_mtx
TTW_SMBF: Sending WAITING state for a message buffer caused by snd_mbf or tsnd_mbf
TTW_RMBF: Receiving WAITING state for a message buffer caused by rcv_mbf or trcv_mbf
TTW_MPF: WAITING state for a fixed-sized memory block caused by get_mpf or tget_mpf
TTW_MPL: WAITING state for a variable-sized memory block caused by get_mpl or tget_mpl
- wobjid
Stores the object (such as semaphore, eventflag, etc.) ID number for which the task waiting.
The wobjid is effective only when the tskwait is TTW_SEM or TTW_FLG or TTW_SDTQ or TTW_RDTQ or TTW_MBX or TTW_MTX or TTW_SMBF or TTW_RMBF or TTW_MPF or TTW_MPL.
- lefttmo
Stores the remaining time until time-out (in millisecond).
The TMO_FEVR is stored for waiting forever.
The lefttmo is effective only when the tskstat is TTS_WAI or TTS_WAS, and the tskwait is other than TTW_DLY.
Note The lefttmo is undefined when the tskwait is TTW_DLY.
- actcnt
Stores the activation request count.
- wupcnt
Stores the wake-up request count.
The wupcnt is effective only when the tskstat is other than TTS_DMT.
- suscnt
Stores the suspension count.
The suscnt is effective only when the tskstat is other than TTS_DMT.
Return value
Macro
Value
Description
E_OK
0
Normal completion.
E_PAR
-17
Parameter error.
- pk_rtsk == NULL
E_ID
-18
Invalid ID number.
- tskid < 0
- tskid > VTMAX_TSK
- When this service call was issued from a non-task, TSK_SELF was specified for tskid.
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 iref_tsk is issued from task or the ref_tsk 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 ref_tsk)
- The operand-write access to the area indicated by pk_rtsk has not been permitted to the invoking task.
E_NOEXS
-42
Non-existent object.
- The task specified by tskid does not exist.