第15章  データ・タイプとマクロ


本章では,RI850V4が提供するサービス・コールを発行する際に使用するデータ・タイプ,データ構造体,マクロについて解説しています。

 なお,マクロ,およびデータ構造体の定義は,<ri_root>\include\osに格納されている各ヘッダ・ファイルで行わ
れています。
備考 <ri_root> は,RI850V4 のインストール・フォルダを表しています。 デフォルトでは,“C:\Program Files\Renesas Electronics\CS+\CC\RI850V4RH”となります。

15.1 データ・タイプ

以下に,サービス・コールを発行する際に指定する各種パラメータのデータ・タイプ一覧を示します。

 なお,データ・タイプのマクロ定義は,標準ヘッダ・ファイル<ri_root>\include\kernel.h,およびITRON仕様共
通マクロ定義ファイル<ri_root>\include\itron.hから呼び出されるヘッダ・ファイル
<ri_root>\include\os\types.hで行われています。
表15−1  データ・タイプ

マクロ



意味

B

signed char

符号付き8ビット整数

H

signed short

符号付き16ビット整数

W

signed long

符号付き32ビット整数

UB

unsigned char

符号なし8ビット整数

UH

unsigned short

符号なし16ビット整数

UW

unsigned long

符号なし32ビット整数

VB

signed char

データ・タイプが一定しない値(8ビット)

VH

signed short

データ・タイプが一定しない値(16ビット)

VW

signed long

データ・タイプが一定しない値(32ビット)

VP

void *

データ・タイプが一定しない値(ポインタ)

FP

void ( * )

処理プログラムの起動アドレス(ポインタ)

INT

signed int

符号付き32ビット整数

UINT

unsigned int

符号なし32ビット整数

BOOL

signed long

真偽値(TRUE,またはFALSE)

FN

signed short

拡張サービス・コール・ルーチンの機能コード番号

ER

signed long

サービス・コールからの戻り値

ID

signed short

管理オブジェクトのID

ATR

unsigned short

管理オブジェクトの属性

STAT

unsigned short

管理オブジェクトの状態

MODE

unsigned short

サービス・コールの動作モード

PRI

signed short

タスク,またはメッセージの優先度

SIZE

unsigned long

領域のサイズ(単位:バイト)

TMO

signed long

タスクの待ち時間(単位:ミリ秒)

RELTIM

unsigned long

相対時間(単位:ミリ秒)

VP_INT

signed long

データ・タイプが一定しない値(ポインタ),または符号付き32ビット整数

ER_BOOL

signed long

真偽値(TRUE,またはFALSE)

ER_ID

signed long

管理オブジェクトのID

ER_UINT

signed int

符号なし32ビット整数

FLGPTN

unsigned long

イベントフラグのビット・パターン

INTNO

signed short

例外コード



15.2 データ構造体

RI850V4が提供するサービス・コールを発行する際に使用するデータ構造体(タスク詳細情報,タスク基本情報など)について以下に示します。なお,各データ構造体のシステム予約領域はプログラムから参照しないようにしてください。

15.2.1 タスク詳細情報

以下に,ref_tsk,およびiref_tskを発行する際に使用するタスク詳細情報T_RTSKを示します。

 なお,タスク詳細情報T_RTSKの定義は,標準ヘッダ・ファイル<ri_root>\include\kernel.hから呼び出される
ヘッダ・ファイル<ri_root>\include\os\packet.hで行われています。
 
 typedef struct  t_rtsk {
         STAT    tskstat;        /*現在状態*/
         PRI     tskpri;         /*現在優先度*/
         PRI     tskbpri;        /*システム予約領域*/
         STAT    tskwait;        /*待ち要因*/
         ID      wobjid;         /*管理オブジェクトのID*/
         UH      RFU1;           /*システム予約領域*/
         TMO     lefttmo;        /*残り時間*/
         UINT    actcnt;         /*起動要求数*/
         UINT    wupcnt;         /*起床要求数*/
         UINT    suscnt;         /*サスペンド要求数*/
         ATR     tskatr;         /*属性*/
         PRI     itskpri;        /*初期優先度*/
         ID      memid;          /*システム予約領域*/
         UH      RFU2;           /*システム予約領域*/
 } T_RTSK;


以下に,タスク詳細情報T_RTSKの詳細を示します。

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


TTS_RUN: RUNNING状態

TTS_RDY: READY状態

TTS_WAI: WAITING状態

TTS_SUS: SUSPENDED状態

TTS_WAS: WAITING-SUSPENDED状態

TTS_DMT: DORMANT状態

- tskpri
タスクの現在優先度が格納されます。


- tskwait
タスクの待ち要因(WAITING状態の種類)が格納されます。


TTW_SLP: slp_tsk,またはtslp_tskによる起床待ち状態

TTW_DLY: dly_tskによる時間経過待ち状態

TTW_SEM: wai_sem,またはtwai_semによる資源獲得待ち状態

TTW_FLG: wai_flg,またはtwai_flgによるイベントフラグ待ち状態

TTW_SDTQ: snd_dtq,またはtsnd_dtqによるデータ送信待ち状態

TTW_RDTQ: rcv_dtq,またはtrcv_dtqによるデータ受信待ち状態

TTW_MBX: rcv_mbx,またはtrcv_mbxによるメッセージ受信待ち状態

TTW_MTX: loc_mtx,またはtloc_mtxによるミューテックス待ち状態

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

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

- wobjid
タスクがWAITING状態へと遷移するきっかけとなった管理オブジェクト(セマフォ,イベントフラグなど)のIDが格納されます。
なお,タスクがWAITING状態以外の場合には,0が格納されます。



- lefttmo
タスクの時間経過待ち状態が解除されるまでの残り時間(単位:ミリ秒)が格納されます。


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


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


- suscnt
タスクのサスペンド要求数が格納されます。


- tskatr
タスクの属性(記述言語,初期起動状態など)が格納されます。


タスクの記述言語(ビット0)

TA_HLNG: C言語

TA_ASM: アセンブリ言語

タスクの初期起動状態(ビット1)

TA_ACT: READY状態

プリエンプトの受け付け状態(ビット14)

TA_DISPREEMPT: 禁止状態

初期割り込み状態(ビット15)

TA_ENAINT: EIレベル・マスカブル割り込み(最大割り込み優先度maxintpri最低割り込み優先度)の受け付けを許可

TA_DISINT: EIレベル・マスカブル割り込み(最大割り込み優先度maxintpri最低割り込み優先度)の受け付けを禁止

【 tskatrの構造 】



- itskpri
タスクの初期優先度が格納されます。


15.2.2 タスク基本情報

以下に,ref_tst,およびiref_tstを発行する際に使用するタスク基本情報T_RTSTを示します。

 なお,タスク基本情報T_RTSTの定義は,標準ヘッダ・ファイル<ri_root>\include\kernel.hから呼び出される
ヘッダ・ファイル<ri_root>\include\os\packet.hで行われています。
 
 typedef struct  t_rtst {
         STAT    tskstat;        /*現在状態*/
         STAT    tskwait;        /*待ち要因*/
 } T_RTST;


以下に,タスク基本情報T_RTSTの詳細を示します。

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


TTS_RUN: RUNNING状態

TTS_RDY: READY状態

TTS_WAI: WAITING状態

TTS_SUS: SUSPENDED状態

TTS_WAS: WAITING-SUSPENDED状態

TTS_DMT: DORMANT状態

- tskwait
タスクの待ち要因(WAITING状態の種類)が格納されます。


TTW_SLP: slp_tsk,またはtslp_tskによる起床待ち状態

TTW_DLY: dly_tskによる時間経過待ち状態

TTW_SEM: wai_sem,またはtwai_semによる資源獲得待ち状態

TTW_FLG: wai_flg,またはtwai_flgによるイベントフラグ待ち状態

TTW_SDTQ: snd_dtq,またはtsnd_dtqによるデータ送信待ち状態

TTW_RDTQ: rcv_dtq,またはtrcv_dtqによるデータ受信待ち状態

TTW_MBX: rcv_mbx,またはtrcv_mbxによるメッセージ受信待ち状態

TTW_MTX: loc_mtx,またはtloc_mtxによるミューテックス待ち状態

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

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

15.2.3 セマフォ詳細情報

以下に,ref_sem,およびiref_semを発行する際に使用するセマフォ詳細情報T_RSEMを示します。

 なお,セマフォ詳細情報T_RSEMの定義は,標準ヘッダ・ファイル<ri_root>\include\kernel.hから呼び出される
ヘッダ・ファイル<ri_root>\include\os\packet.hで行われています。
 
 typedef struct  t_rsem {
         ID      wtskid;         /*待ちタスクの有無*/
         UH      RFU1;           /*システム予約領域*/
         UINT    semcnt;         /*現在資源数*/
         ATR     sematr;         /*属性*/
         UH      RFU2;           /*システム予約領域*/
         UINT    maxsem;         /*最大資源数*/
 } T_RSEM;


以下に,セマフォ詳細情報T_RSEMの詳細を示します。

- wtskid
セマフォの待ちキューにタスクがキューイングされているか否かが格納されます。


TSK_NONE: 待ちキューにタスクはキューイングされていない

その他: 待ちキューの先頭にキューイングされているタスクのID

- semcnt
セマフォの現在資源数が格納されます。


- sematr
セマフォの属性(キューイング方式)が格納されます。


タスク・キューイング方式(ビット0)

TA_TFIFO: 資源の獲得要求を行った順

TA_TPRI: タスクの優先度順

【 sematrの構造 】



- maxsem
セマフォの最大資源数が格納されます。


15.2.4 イベントフラグ詳細情報

以下に,ref_flg,およびiref_flgを発行する際に使用するイベントフラグ詳細情報T_RFLGを示します。

 なお,イベントフラグ詳細情報T_RFLGの定義は,標準ヘッダ・ファイル<ri_root>\include\kernel.hから呼び出
されるヘッダ・ファイル<ri_root>\include\os\packet.hで行われています。
 
 typedef struct  t_rflg {
         ID      wtskid;         /*待ちタスクの有無*/
         UH      RFU1;           /*システム予約領域*/
         FLGPTN  flgptn;         /*現在ビット・パターン*/
         ATR     flgatr;         /*属性*/
         UH      RFU2;           /*システム予約領域*/
 } T_RFLG;


以下に,イベントフラグ詳細情報T_RFLGの詳細を示します。

- wtskid
イベントフラグの待ちキューにタスクがキューイングされているか否かが格納されます。


TSK_NONE: 待ちキューにタスクはキューイングされていない

その他: 待ちキューの先頭にキューイングされているタスクのID

- flgptn
イベントフラグの現在ビット・パターンが格納されます。


- flgatr
イベントフラグの属性(キューイング方式,キューイング可能なタスクの最大数など)が格納されます。


タスク・キューイング方式(ビット0)

TA_TFIFO: ビット・パターンのチェックを行った順

TA_TPRI: タスクの優先度順

キューイング可能なタスクの最大数(ビット1)

TA_WSGL: 1個

TA_WMUL: 複数

ビット・パターンのクリア(ビット2)

TA_CLR: 要求条件が満足した際,ビット・パターンをクリア(0x0の設定)

【 flgatrの構造 】



15.2.5 データ・キュー詳細情報

以下に,ref_dtq,およびiref_dtqを発行する際に使用するデータ・キュー詳細情報T_RDTQを示します。

 なお,データ・キュー詳細情報T_RDTQの定義は,標準ヘッダ・ファイル<ri_root>\include\kernel.hから呼び出
されるヘッダ・ファイル<ri_root>\include\os\packet.hで行われています。
 
 typedef struct  t_rdtq {
         ID      stskid;         /*データ送信待ちタスクの有無*/
         ID      rtskid;         /*データ受信待ちタスクの有無*/
         UINT    sdtqcnt;        /*未受信データの総数*/
         ATR     dtqatr;         /*属性*/
         UH      RFU1;           /*システム予約領域*/
         UINT    dtqcnt;         /*データ数*/
         ID      memid;          /*システム予約領域*/
         UH      RFU2;           /*システム予約領域*/
 } T_RDTQ;


以下に,データ・キュー詳細情報T_RDTQの詳細を示します。

- stskid
データ・キューの送信待ちキューにタスクがキューイングされているか否かが格納されます。


TSK_NONE: 送信待ちキューにタスクはキューイングされていない

その他: 送信待ちキューの先頭にキューイングされているタスクのID

- rtskid
データ・キューの受信待ちキューにタスクがキューイングされているか否かが格納されます。


TSK_NONE: 受信待ちキューにタスクはキューイングされていない

その他: 受信待ちキューの先頭にキューイングされているタスクのID

- sdtqcnt
データ・キューのデータ・キュー領域にキューイングされている未受信データの総数が格納されます。


- dtqatr
データ・キューの属性(キューイング方式)が格納されます。


タスク・キューイング方式(ビット0)

TA_TFIFO: データの送信要求を行った順

TA_TPRI: タスクの優先度順

【 dtqatrの構造 】



- dtqcnt
データ・キューのデータ・キュー領域にキューイング可能なデータの最大数が格納されます。


15.2.6 メッセージ

以下に,snd_mbxisnd_mbxrcv_mbxprcv_mbxiprcv_mbx,およびtrcv_mbxを発行する際に使用するメッセージT_MSG,T_MSG_PRIを示します。

 なお,メッセージT_MSG,T_MSG_PRIの定義は,標準ヘッダ・ファイル<ri_root>\include\kernel.h,および
ITRON仕様共通マクロ定義ファイル<ri_root>\include\itron.hから呼び出されるヘッダ・ファイル
<ri_root>\include\os\types.hで行われています。
【 TA_MFIFO属性用メッセージT_MSGの構造 】

 typedef struct  t_msg {
         struct  t_msg   *msgnext;       /*システム予約領域*/
 } T_MSG;


【 TA_MPRI属性用メッセージT_MSG_PRIの構造 】

 typedef struct  t_msg_pri {
         struct  t_msg   msgque;         /*システム予約領域*/
         PRI     msgpri;                 /*優先度*/
         UH      RFU;                    /*システム予約領域*/
 } T_MSG_PRI;


以下に,メッセージT_MSG,T_MSG_PRIの詳細を示します。

- msgpri
メッセージの優先度が格納されます。


備考1 RI850V4におけるメッセージの優先度は,その値が小さいほど,高い優先度であることを意味します。

備考2 メッセージの優先度として指定可能な値は,システム・コンフィギュレーション・ファイル作成時にメールボックス情報最大メッセージ優先度maxmpri)で定義された値域に限定されます。

15.2.7 メールボックス詳細情報

以下に,ref_mbx,およびiref_mbxを発行する際に使用するメールボックス詳細情報T_RMBXを示します。

 なお,メールボックス詳細情報T_RMBXの定義は,標準ヘッダ・ファイル<ri_root>\include\kernel.hから呼び出
されるヘッダ・ファイル<ri_root>\include\os\packet.hで行われています。
 
 typedef struct  t_rmbx {
         ID      wtskid;         /*待ちタスクの有無*/
         UH      RFU1;           /*システム予約領域*/
         T_MSG   *pk_msg;        /*待ちメッセージの有無*/
         ATR     mbxatr;         /*属性*/
         UH      RFU2;           /*システム予約領域*/
 } T_RMBX;


以下に,メールボックス詳細情報T_RMBXの詳細を示します。

- wtskid
メールボックスの待ちキューにタスクがキューイングされているか否かが格納されます。


TSK_NONE: 待ちキューにタスクはキューイングされていない

その他: 待ちキューの先頭にキューイングされているタスクのID

- pk_msg
メールボックスの待ちキューにメッセージがキューイングされているか否かが格納されます。


NULL: 待ちキューにメッセージはキューイングされていない

その他: 待ちキューの先頭にキューイングされているメッセージの先頭アドレス

- mbxatr
メールボックスの属性(キューイング方式)が格納されます。


タスク・キューイング方式(ビット0)

TA_TFIFO: メッセージの受信要求を行った順

TA_TPRI: タスクの優先度順

メッセージ・キューイング方式(ビット1)

TA_MFIFO: メッセージの送信要求を行った順

TA_MPRI: メッセージの優先度順

【 mbxatrの構造 】



15.2.8 ミューテックス詳細情報

以下に,ref_mtx,およびiref_mtxを発行する際に使用するミューテックス詳細情報T_RMTXを示します。

 なお,ミューテックス詳細情報T_RMTXの定義は,標準ヘッダ・ファイル<ri_root>\include\kernel.hから呼び出
されるヘッダ・ファイル<ri_root>\include\os\packet.hで行われています。
 
 typedef struct  t_rmtx {
         ID      htskid;         /*ロックの有無*/
         ID      wtskid;         /*待ちタスクの有無*/
         ATR     mtxatr;         /*属性*/
         PRI     ceilpri;        /*システム予約領域*/
 } T_RMTX;


以下に,ミューテックス詳細情報T_RMTXの詳細を示します。

- htskid
ミューテックスをロックしているタスクが存在しているか否かが格納されます。


TSK_NONE: ロックしているタスクは存在しない

その他: ロックしているタスクのID

- wtskid
ミューテックスの待ちキューにタスクがキューイングされているか否かが格納されます。


TSK_NONE: 待ちキューにタスクはキューイングされていない

その他: 待ちキューの先頭にキューイングされているタスクのID

- mtxatr
ミューテックスの属性(キューイング方式)が格納されます。


タスク・キューイング方式(ビット0〜1)

TA_TFIFO: ミューテックスのロック要求を行った順

TA_TPRI: タスクの優先度順

【 mtxatrの構造 】



15.2.9 固定長メモリ・プール詳細情報

以下に,ref_mpf,およびiref_mpfを発行する際に使用する固定長メモリ・プール詳細情報T_RMPFを示します。

 なお,固定長メモリ・プール詳細情報T_RMPFの定義は,標準ヘッダ・ファイル<ri_root>\include\kernel.hから
呼び出されるヘッダ・ファイル<ri_root>\include\os\packet.hで行われています。
 
 typedef struct  t_rmpf {
         ID      wtskid;         /*待ちタスクの有無*/
         UH      RFU;            /*システム予約領域*/
         UINT    fblkcnt;        /*空き固定長メモリ・ブロックの総数*/
         ATR     mpfatr;         /*属性*/
         ID      memid;          /*システム予約領域*/
 } T_RMPF;


以下に,固定長メモリ・プール詳細情報T_RMPFの詳細を示します。

- wtskid
固定長メモリ・プールの待ちキューにタスクがキューイングされているか否かが格納されます。


TSK_NONE: 待ちキューにタスクはキューイングされていない

その他: 待ちキューの先頭にキューイングされているタスクのID

- fblkcnt
固定長メモリ・プールから獲得可能な空き固定長メモリ・ブロックの総数が格納されます。


- mpfatr
固定長メモリ・プールの属性(キューイング方式)が格納されます。


タスク・キューイング方式(ビット0)

TA_TFIFO: 固定長メモリ・ブロックの獲得要求を行った順

TA_TPRI: タスクの優先度順

【 mpfatrの構造 】



15.2.10 可変長メモリ・プール詳細情報

以下に,ref_mpl,およびiref_mplを発行する際に使用する可変長メモリ・プール詳細情報T_RMPLを示します。

なお,可変長メモリ・プール詳細情報T_RMPLの定義は,標準ヘッダ・ファイル<ri_root>\include\kernel.hから呼び出されるヘッダ・ファイル<ri_root>\include\os\packet.hで行われています。

 
 typedef struct  t_rmpl {
         ID      wtskid;         /*待ちタスクの有無*/
         UH      RFU;            /*システム予約領域*/
         SIZE    fmplsz;         /*空き可変長メモリ・ブロックの合計サイズ*/
         UINT    fblksz;         /*空き可変長メモリ・ブロックの最大サイズ*/
         ATR     mplatr;         /*属性*/
         ID      memid;          /*システム予約領域*/
 } T_RMPL;


以下に,可変長メモリ・プール詳細情報T_RMPLの詳細を示します。

- wtskid
可変長メモリ・プールの待ちキューにタスクがキューイングされているか否かが格納されます。


TSK_NONE: 待ちキューにタスクはキューイングされていない

その他: 待ちキューの先頭にキューイングされているタスクのID

- fmplsz
可変長メモリ・プールから獲得可能な空き可変長メモリ・ブロックの合計サイズ(単位:バイト)が格納されます。


- fblksz
可変長メモリ・プールから獲得可能な空き可変長メモリ・ブロックの最大サイズ(単位:バイト)が格納されます。


- mplatr
可変長メモリ・プールの属性(キューイング方式)が格納されます。


タスク・キューイング方式(ビット0)

TA_TFIFO: 可変長メモリ・ブロックの獲得要求を行った順

TA_TPRI: タスクの優先度順

【 mplatrの構造 】



15.2.11 システム時刻情報

以下に,set_timiset_timget_tim,およびiget_timを発行する際に使用するシステム時刻情報SYSTIMを示します。

なお,システム時刻情報SYSTIMの定義は,標準ヘッダ・ファイル<ri_root>\include\kernel.h,およびITRON仕様共通マクロ定義ファイル<ri_root>\include\itron.hから呼び出されるヘッダ・ファイル<ri_root>\include\os\types.hで行われています。

 
 typedef struct  t_systim {
         UW      ltime;          /*システム時刻(下位32ビット)*/
         UH      utime;          /*システム時刻(上位16ビット)*/
         UH      RFU;            /*システム予約領域*/
 } SYSTIM;


以下に,システム時刻情報SYSTIMの詳細を示します。

- ltime
システム時刻(単位:ミリ秒)の下位32ビットが格納されます。


- utime
システム時刻(単位:ミリ秒)の上位16ビットが格納されます。


15.2.12 周期ハンドラ詳細情報

以下に,ref_cyc,およびiref_cycを発行する際に使用する周期ハンドラ詳細情報T_RCYCを示します。

なお,周期ハンドラ詳細情報T_RCYCの定義は,標準ヘッダ・ファイル<ri_root>\include\kernel.hから呼び出されるヘッダ・ファイル<ri_root>\include\os\packet.hで行われています。

 
 typedef struct  t_rcyc {
         STAT    cycstat;        /*現在状態*/
         UH      RFU1;           /*システム予約領域*/
         RELTIM  lefttim;        /*残り時間*/
         ATR     cycatr;         /*属性*/
         UH      RFU2;           /*システム予約領域*/
         RELTIM  cyctim;         /*起動周期*/
         RELTIM  cycphs;         /*初期起動位相*/
 } T_RCYC;


以下に,周期ハンドラ詳細情報T_TCYCの詳細を示します。

- cycstat
周期ハンドラの現在状態が格納されます。


TCYC_STP: 停止状態(STP状態)

TCYC_STA: 動作状態(STA状態)

- lefttim
周期ハンドラが次に起動するまでの残り時間(単位:ミリ秒)が格納されます。


- cycatr
周期ハンドラの属性(記述言語,初期起動状態など)が格納されます。


周期ハンドラの記述言語(ビット0)

TA_HLNG: C言語

TA_ASM: アセンブリ言語

周期ハンドラの初期起動状態(ビット1)

TA_STA: 動作状態(STA状態)

起動位相保存の有無(ビット2)

TA_PHS: 保存

【 cycatrの構造 】



- cyctim
周期ハンドラの起動周期(単位:ミリ秒)が格納されます。


- cycphs
周期ハンドラの初期起動位相(単位:ミリ秒)が格納されます。
なお,RI850V4における初期起動位相は,周期ハンドラの生成処理が完了してから1回目の起動要求が発行されるまでの相対時間間隔を意味しています。



15.3 マ ク ロ

RI850V4が提供するサービス・コールを発行する際に使用するマクロ(管理オブジェクトの現在状態,処理プログラムの属性など)について以下に示します。

15.3.1 管理オブジェクトの現在状態

以下に,サービス・コール(ref_tskref_semなど)の発行により獲得される各種管理オブジェクトの現在状態一覧を示します。

なお,現在状態のマクロ定義は,標準ヘッダ・ファイル<ri_root>\include\kernel.h,およびITRON仕様共通マクロ定義ファイル<ri_root>\include\itron.hから呼び出されるヘッダ・ファイル<ri_root>\include\os\option.hで行われています。

表15−2  管理オブジェクトの現在状態

マクロ



意味

TTS_RUN

0x01

RUNNING状態

TTS_RDY

0x02

READY状態

TTS_WAI

0x04

WAITING状態

TTS_SUS

0x08

SUSPENDED状態

TTS_WAS

0x0c

WAITING-SUSPENDED状態

TTS_DMT

0x10

DORMANT状態

TCYC_STP

0x00

停止状態(STP状態)

TCYC_STA

0x01

動作状態(STA状態)

TTW_SLP

0x0001

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

TTW_DLY

0x0002

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

TTW_SEM

0x0004

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

TTW_FLG

0x0008

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

TTW_SDTQ

0x0010

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

TTW_RDTQ

0x0020

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

TTW_MBX

0x0040

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

TTW_MTX

0x0080

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

TTW_MPF

0x2000

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

TTW_MPL

0x4000

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

TSK_NONE

0

タスクはキューイングされていない



15.3.2 処理プログラムの属性

以下に,サービス・コール(ref_tskref_cycなど)の発行により獲得される各種処理プログラムの属性一覧を示します。

なお,属性のマクロ定義は,標準ヘッダ・ファイル<ri_root>\include\kernel.h,およびITRON仕様共通マクロ定義ファイル<ri_root>\include\itron.hから呼び出されるヘッダ・ファイル<ri_root>\include\os\option.hで行われています。

表15−3  処理プログラムの属性

マクロ



意味

TA_HLNG

0x0000

C言語

TA_ASM

0x0001

アセンブリ言語

TA_ACT

0x0002

READY状態

TA_DISPREEMPT

0x4000

DORMANT状態からREADY状態へと遷移した際には,受け付け禁止状態

TA_ENAINT

0x0000

DORMANT状態からREADY状態へと遷移した際には,受け付け禁止状態

TA_DISINT

0x8000

DORMANT状態からREADY状態へと遷移した際には,受け付け禁止状態

TA_STA

0x0002

動作状態(STA状態)

TA_PHS

0x0004

保存



15.3.3 管理オブジェクトの属性

以下に,サービス・コール(ref_semref_flgなど)の発行により獲得される各種管理オブジェクトの属性一覧を示します。

なお,属性のマクロ定義は,標準ヘッダ・ファイル<ri_root>\include\kernel.h,およびITRON仕様共通マクロ定義ファイル<ri_root>\include\itron.hから呼び出されるヘッダ・ファイル<ri_root>\include\os\option.hで行われています。

表15−4  管理オブジェクトの属性

マクロ



意味

TA_TFIFO

0x0000

要求を行った順

TA_TPRI

0x0001

タスクの優先度順

TA_WSGL

0x0000

1個

TA_WMUL

0x0002

複数

TA_CLR

0x0004

ビット・パターンをクリア

TA_MFIFO

0x0000

要求を行った順

TA_MPRI

0x0002

メッセージの優先度順



15.3.4 サービス・コールの動作モード

以下に,サービス・コール(act_tskwup_tskなど)を発行する際に使用する各種サービス・コールの動作モード一覧を示します。

なお,動作モードのマクロ定義は,標準ヘッダ・ファイル<ri_root>\include\kernel.h,およびITRON仕様共通マクロ定義ファイル<ri_root>\include\itron.hから呼び出されるヘッダ・ファイル<ri_root>\include\os\option.hで行われています。

表15−5  サービス・コールの動作モード

マクロ



意味

TSK_SELF

0

自タスク

TPRI_INI

0

初期優先度

TMO_FEVR

-1

永久待ち

TMO_POL

0

ポーリング

TWF_ANDW

0x00

AND待ち

TWF_ORW

0x01

OR待ち

TPRI_SELF

0

自タスクの現在優先度



15.3.5 戻 り 値

以下に,サービス・コールからの戻り値一覧を示します。

なお,戻り値のマクロ定義は,標準ヘッダ・ファイル<ri_root>\include\kernel.h,およびITRON仕様共通マクロ定義ファイル<ri_root>\include\itron.hから呼び出されるヘッダ・ファイル<ri_root>\include\os\error.h,およびoption.hで行われています。

表15−6  戻り値

マクロ

数値

意味

E_OK

0

正常終了

E_NOSPT

-9

未サポートの機能である

E_RSFN

-10

コンフィギュレーション時に使用するサービス・コールとして定義されていない

E_RSATR

-11

属性の指定が不正である

E_PAR

-17

パラメータの指定が不正である

E_ID

-18

IDの指定が不正である

E_CTX

-25

サービス・コールの発行状態が不正(コンテキスト・エラー)である

E_ILUSE

-28

サービス・コールの使用方法が不正である

E_NOMEM

-33

メモリ領域が確保できない

E_OBJ

-41

管理オブジェクトの状態が不正である

E_NOEXS

-42

管理オブジェクトが生成されていない

E_QOVR

-43

カウンタがオーバフローした

E_RLWAI

-49

rel_wai,またはirel_waiの発行により,WAITING状態を強制的に解除された

E_TMOUT

-50

待ち時間が経過した

FALSE

0



TRUE

1





15.3.6 構成定数

以下に,構成定数の一覧を示します。

なお,構成定数のマクロ定義は,標準ヘッダ・ファイル<ri_root>\include\kernel.h,およびITRON仕様共通マクロ定義ファイル<ri_root>\include\itron.hから呼び出されるヘッダ・ファイル<ri_root>\include\os\component.hで行われています。ただし,一部数値が可変なマクロ定義に関しては,システム・コンフィギュレーション・ファイルの設定内容にしたがい,システム情報ヘッダ・ファイルで行われています。

表15−7  優先度範囲

マクロ

数値

意味

TMIN_TPRI

1

タスク優先度の最小値

TMAX_TPRI

可変

タスク優先度の最大値

TMIN_MPRI

1

メッセージ優先度の最小値

TMAX_MPRI

0x7fff

メッセージ優先度の最大値



表15−8  バージョン情報

マクロ

数値

意味

TKERNEL_MAKER

0x011b

カーネルのメーカー・コード

TKERNEL_PRID

0x0000

カーネルの識別番号

TKERNEL_SPVER

0x5403

ITRON仕様のバージョン番号

TKERNEL_PRVER

0x02xx

カーネルのバージョン番号



表15−9  キューイング数の最大値

マクロ

数値

意味

TMAX_ACTCNT

127

タスク起動要求キューイング数の最大値

TMAX_WUPCNT

127

タスク起床要求キューイング数の最大値

TMAX_SUSCNT

127

サスペンド要求キューイング数の最大値



表15−10  ビット・パターンのビット数

マクロ

数値

意味

TBIT_FLGPTN

32

イベントフラグのビット数



表15−11  基本クロック周期

マクロ

数値

意味

TIC_NUME

可変

基本クロック周期(単位:ミリ秒)の分子

TIC_DENO

1

基本クロック周期(単位:ミリ秒)の分母



15.4 条件コンパイル用マクロ

RI850V4のヘッダ・ファイルは以下のマクロにより条件コンパイルされます。

RI850V4のヘッダ・ファイルをインクルードしているソース・ファイルをビルドする際に,

使用する環境にあわせて以下のマクロを定義(コンパイラの-D起動オプションなど)してください。

表15−12  条件コンパイル用マクロ

分類

マクロ

内容

コンパイラ・パッケージ

__rel__

CC-RHを使用。

relの前後にアンダーバーが二つ必要です。

__ghs__

CCV850を使用。

ghsの前後にアンダーバーが二つ必要です。

記述言語

__asm__

アセンブリ言語。

asmの前後にアンダーバーが二つ必要です。