第15章  データ・タイプとマクロ
 本章では,RI850V4が提供するサービス・コールを発行する際に使用するデータ・タイプ,データ構造体,マクロについて解説しています。
 
 なお,マクロ,およびデータ構造体の定義は,<ri_root>\include\osに格納されている各ヘッダ・ファイルで行わ
れています。
 備考	 <ri_root> は,RI850V4 のインストール・フォルダを表しています。                                                                            デフォルトでは,“C:\Program Files\Renesas Electronics\CS+\CC\RI850V4RH”となります。
 
 以下に,サービス・コールを発行する際に指定する各種パラメータのデータ・タイプ一覧を示します。
 
 なお,データ・タイプのマクロ定義は,標準ヘッダ・ファイル<ri_root>\include\kernel.h,およびITRON仕様共
通マクロ定義ファイル<ri_root>\include\itron.hから呼び出されるヘッダ・ファイル
<ri_root>\include\os\types.hで行われています。
 
| 
 | 
 | 
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
 データ・タイプが一定しない値(ポインタ),または符号付き32ビット整数
  
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
 | 
 
 RI850V4が提供するサービス・コールを発行する際に使用するデータ構造体(タスク詳細情報,タスク基本情報など)について以下に示します。なお,各データ構造体のシステム予約領域はプログラムから参照しないようにしてください。
 
 なお,タスク詳細情報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_WAS:	WAITING-SUSPENDED状態
 
 -	 tskpri
タスクの現在優先度が格納されます。
 
 -	 tskwait
タスクの待ち要因(WAITING状態の種類)が格納されます。
 
 -	 wobjid
タスクがWAITING状態へと遷移するきっかけとなった管理オブジェクト(セマフォ,イベントフラグなど)のIDが格納されます。
なお,タスクがWAITING状態以外の場合には,0が格納されます。
 
 -	 lefttmo
タスクの時間経過待ち状態が解除されるまでの残り時間(単位:ミリ秒)が格納されます。
 
 -	 actcnt
タスクの起動要求数が格納されます。
 
 -	 wupcnt
タスクの起床要求数が格納されます。
 
 -	 suscnt
タスクのサスペンド要求数が格納されます。
 
 -	 tskatr
タスクの属性(記述言語,初期起動状態など)が格納されます。
 
 -	 itskpri
タスクの初期優先度が格納されます。
 
 なお,タスク基本情報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_WAS:	WAITING-SUSPENDED状態
 
 -	 tskwait
タスクの待ち要因(WAITING状態の種類)が格納されます。
 
 なお,セマフォ詳細情報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
セマフォの属性(キューイング方式)が格納されます。
 
 -	 maxsem
セマフォの最大資源数が格納されます。
 
 なお,イベントフラグ詳細情報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
イベントフラグの属性(キューイング方式,キューイング可能なタスクの最大数など)が格納されます。
 
 TA_TFIFO:	ビット・パターンのチェックを行った順
 
 TA_CLR:	要求条件が満足した際,ビット・パターンをクリア(0x0の設定)
 
 なお,データ・キュー詳細情報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
データ・キューの属性(キューイング方式)が格納されます。
 
 -	 dtqcnt
データ・キューのデータ・キュー領域にキューイング可能なデータの最大数が格納されます。
 
 なお,メッセージ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におけるメッセージの優先度は,その値が小さいほど,高い優先度であることを意味します。
 
 なお,メールボックス詳細情報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
メールボックスの属性(キューイング方式)が格納されます。
 
 TA_TFIFO:	メッセージの受信要求を行った順
 
 TA_MFIFO:	メッセージの送信要求を行った順
 
 なお,ミューテックス詳細情報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:	ロックしているタスクは存在しない
 
 -	 wtskid
ミューテックスの待ちキューにタスクがキューイングされているか否かが格納されます。
 
 TSK_NONE:	待ちキューにタスクはキューイングされていない
 
 その他:	待ちキューの先頭にキューイングされているタスクのID
 
 -	 mtxatr
ミューテックスの属性(キューイング方式)が格納されます。
 
 TA_TFIFO:	ミューテックスのロック要求を行った順
 
 なお,固定長メモリ・プール詳細情報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
固定長メモリ・プールの属性(キューイング方式)が格納されます。
 
 TA_TFIFO:	固定長メモリ・ブロックの獲得要求を行った順
 
 なお,可変長メモリ・プール詳細情報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
可変長メモリ・プールの属性(キューイング方式)が格納されます。
 
 TA_TFIFO:	可変長メモリ・ブロックの獲得要求を行った順
 
 なお,システム時刻情報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ビットが格納されます。
 
 なお,周期ハンドラ詳細情報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
周期ハンドラの現在状態が格納されます。
 
 -	 lefttim
周期ハンドラが次に起動するまでの残り時間(単位:ミリ秒)が格納されます。
 
 -	 cycatr
周期ハンドラの属性(記述言語,初期起動状態など)が格納されます。
 
 -	 cyctim
周期ハンドラの起動周期(単位:ミリ秒)が格納されます。
 
 -	 cycphs
周期ハンドラの初期起動位相(単位:ミリ秒)が格納されます。
なお,RI850V4における初期起動位相は,周期ハンドラの生成処理が完了してから1回目の起動要求が発行されるまでの相対時間間隔を意味しています。
 
 RI850V4が提供するサービス・コールを発行する際に使用するマクロ(管理オブジェクトの現在状態,処理プログラムの属性など)について以下に示します。
 
 なお,現在状態のマクロ定義は,標準ヘッダ・ファイル<ri_root>
\include
\kernel.h,およびITRON仕様共通マクロ定義ファイル<ri_root>
\include\itron.hから呼び出されるヘッダ・ファイル<ri_root>
\include\os\option.hで行われています。
 
 なお,属性のマクロ定義は,標準ヘッダ・ファイル<ri_root>
\include
\kernel.h,およびITRON仕様共通マクロ定義ファイル<ri_root>
\include\itron.hから呼び出されるヘッダ・ファイル<ri_root>
\include\os\option.hで行われています。
 
 
| 
 | 
 | 
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
 DORMANT状態からREADY状態へと遷移した際には,受け付け禁止状態
  
 | 
| 
 | 
 | 
 DORMANT状態からREADY状態へと遷移した際には,受け付け禁止状態
  
 | 
| 
 | 
 | 
 DORMANT状態からREADY状態へと遷移した際には,受け付け禁止状態
  
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
 | 
 
 なお,属性のマクロ定義は,標準ヘッダ・ファイル<ri_root>
\include
\kernel.h,およびITRON仕様共通マクロ定義ファイル<ri_root>
\include\itron.hから呼び出されるヘッダ・ファイル<ri_root>
\include\os\option.hで行われています。
 
 なお,動作モードのマクロ定義は,標準ヘッダ・ファイル<ri_root>
\include
\kernel.h,およびITRON仕様共通マクロ定義ファイル<ri_root>
\include\itron.hから呼び出されるヘッダ・ファイル<ri_root>
\include\os\option.hで行われています。
 
 以下に,サービス・コールからの戻り値一覧を示します。
 
 なお,戻り値のマクロ定義は,標準ヘッダ・ファイル<ri_root>
\include
\kernel.h,およびITRON仕様共通マクロ定義ファイル<ri_root>
\include\itron.hから呼び出されるヘッダ・ファイル<ri_root>
\include
\os\error.h,およびoption.hで行われています。
 
 
| 
 | 
 | 
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
 コンフィギュレーション時に使用するサービス・コールとして定義されていない
  
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
 サービス・コールの発行状態が不正(コンテキスト・エラー)である
  
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
 | 
| 
 | 
 | 
 | 
 
 なお,構成定数のマクロ定義は,標準ヘッダ・ファイル<ri_root>
\include
\kernel.h,およびITRON仕様共通マクロ定義ファイル<ri_root>
\include
\itron.hから呼び出されるヘッダ・ファイル<ri_root>
\include\os\component.hで行われています。ただし,一部数値が可変なマクロ定義に関しては,システム・コンフィギュレーション・ファイルの設定内容にしたがい,システム情報ヘッダ・ファイルで行われています。
 
 RI850V4のヘッダ・ファイルは以下のマクロにより条件コンパイルされます。
 
 RI850V4のヘッダ・ファイルをインクルードしているソース・ファイルをビルドする際に,
 
 使用する環境にあわせて以下のマクロを定義(コンパイラの-D起動オプションなど)してください。