ref_tsk

iref_tsk

概要

タスク詳細情報の参照

C言語形式

 ER      ref_tsk ( ID tskid, T_RTSK *pk_rtsk );
 ER      iref_tsk ( ID tskid, T_RTSK *pk_rtsk );
パラメータ

I/O

パラメータ

説明

I

 ID      tskid;
タスクのID

TSK_SELF: 自タスク

数値: タスクのID

O

 T_RTSK  *pk_rtsk;
タスク詳細情報を格納する領域へのポインタ



【 タスク詳細情報T_RTSKの構造 】

 typedef struct  t_rtsk {
         STAT    tskstat;        /*現在状態*/
         PRI     tskpri;         /*現在優先度*/
         PRI     tskbpri;        /*ベース優先度*/
         STAT    tskwait;        /*待ち要因*/
         ID      wobjid;         /*待ちオブジェクトID*/
         TMO     lefttmo;        /*タイムアウトするまでの時間*/
         UINT    actcnt;         /*起動要求数*/
         UINT    wupcnt;         /*起床要求数*/
         UINT    suscnt;         /*サスペンド要求数*/
 } T_RTSK;


機能

tskidで指定されたタスクのタスク詳細情報(現在状態,現在優先度など)をpk_rtskで指定された領域に格納します。

- tskstat
タスクの現在状態が格納されます。

TTS_RUN: RUNNING状態

TTS_RDY: READY状態

TTS_WAI: WAITING状態

TTS_SUS: SUSPENDED状態

TTS_WAS: WAITING-SUSPENDED状態

TTS_DMT: DORMANT状態

- tskpri
タスクの現在優先度が格納されます。
tskpriは,tskstatがTTS_DMT以外の場合のみ有効です。


- tskbpri
タスクのベース優先度が格納されます。
tskbpriは,tskstatがTTS_DMT以外の場合のみ有効です。


- tskwait
タスクの待ち要因(WAITING状態の種類)が格納されます。
tskwaitは,tskstatがTTS_WAIまたはTTS_WASの場合のみ有効です。


TTW_SLPslp_tskまたはtslp_tskによる起床待ち状態

TTW_DLYdly_tskによる時間経過待ち状態

TTW_SEMwai_semまたはtwai_semによる資源獲得待ち状態

TTW_FLGwai_flgまたはtwai_flgによるイベントフラグ待ち状態

TTW_SDTQsnd_dtqまたはtsnd_dtqによるデータ送信待ち状態

TTW_RDTQrcv_dtqまたはtrcv_dtqによるデータ受信待ち状態

TTW_MBXrcv_mbxまたはtrcv_mbxによるメッセージ受信待ち状態

TTW_MTXloc_mtxまたはtloc_mtxによるミューテックス待ち状態

TTW_SMBFsnd_mbfまたはtsnd_mbfによるメッセージ送信待ち状態

TTW_RMBFrcv_mbfまたはtrcv_mbfによるメッセージ受信待ち状態

TTW_MPFget_mpfまたはtget_mpfによる固定長メモリ・ブロック獲得待ち状態

TTW_MPLget_mplまたはtget_mplによる可変長メモリ・ブロック獲得待ち状態

- wobjid
待ち対象のオブジェクト(セマフォ,イベントフラグなど)のIDが格納されます。
wobjidは,tskwaitがTTW_SEM,TTW_FLG,TTW_SDTQ,TTW_RDTQ,TTW_MBX,TTW_MTX,TTW_SMBF,TTW_RMBF,TTW_MPF,またはTTW_MPLの場合のみ有効です。


- lefttmo
タイムアウトまでの残り時間(単位:ミリ秒)が格納されます。永久待ちの場合は,TMO_FEVRが格納されます。
lefttmoは,tskstatがTTS_WAIまたはTTS_WASの場合で,かつtskwaitがTTW_DLY以外の場合のみ有効です。



備考 TTW_DLYの場合は,lefttmoは不定となります。

- actcnt
タスクの起動要求数が格納されます。

- wupcnt
タスクの起床要求数が格納されます。
wupcntは,tskstatがTTS_DMT以外の場合のみ有効です。


- suscnt
タスクのサスペンド要求数が格納されます。
suscntは,tskstatがTTS_DMT以外の場合のみ有効です。


戻り値

マクロ

数値

意味

E_OK

0

正常終了

E_PAR

-17

パラメータ・エラー

- pk_rtsk == NULL

E_ID

-18

不正ID番号

- tskid < 0

- tskid > VTMAX_TSK

- 非タスクから本サービス・コールを発行した際,tskidTSK_SELFを指定した。

E_CTX

-25

コンテキスト・エラー

- CPUロック状態から本サービス・コールを発行した。

- 「PSW.IPL > カーネル割り込みマスクレベル」の状態から本サービス・コールを発行した。

備考 タスクからiref_tskを発行した場合,および非タスクからref_tskを発行した場合,コンテキスト・エラーは検出されず,システムの正常な動作は保証されません。

E_MACV

-26

メモリ・アクセス違反(ref_tskのみ)

- 呼び出しタスクからのpk_rtskが示す領域に対するオペランド・ライト・アクセス許可がない。

E_NOEXS

-42

オブジェクト未生成

- tskidのタスクが存在しない。