Everything

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


本章では,RI600V4が提供するサービス・コールを発行する際に使用するデータ・タイプ,マクロについて解説しています。
備考 <ri_root>は,RI600V4のインストール・フォルダを表しています。
デフォルトは,“ C:\Program Files\Renesas Electronics\CubeSuite+\RI600V4”です。
17.1 データ・タイプ
以下に,サービス・コールを発行する際に指定する各種パラメータのデータ・タイプ一覧を示します。
データ・タイプのマクロ定義は,<ri_root>\inc600\kernel.h,またはkernel.hから呼び出される<ri_root>\inc600\itron.hで行われています。
表17-1  データ・タイプ
マクロ

意味
B
signed char
符号付き8ビット整数
H
signed short
符号付き16ビット整数
W
signed long
符号付き32ビット整数
D
signed long long
符号付き64ビット整数
UB
unsigned char
符号なし8ビット整数
UH
unsigned short
符号なし16ビット整数
UW
unsigned long
符号なし32ビット整数
UD
unsigned long long
符号なし64ビット整数
VB
signed char
データ・タイプが一定しない値(8ビット)
VH
signed short
データ・タイプが一定しない値(16ビット)
VW
signed long
データ・タイプが一定しない値(32ビット)
VD
signed long long
データ・タイプが一定しない値(64ビット)
VP
void *
データ・タイプが一定しない値(ポインタ)
FP
void ( * )
処理プログラムの起動アドレス(ポインタ)
INT
signed long
符号付き32ビット整数
UINT
unsigned long
符号なし32ビット整数
BOOL
signed long
真偽値(TRUEまたはFALSE)
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_UINT
signed long
エラー・コード,または符号なし32ビット整数
FLGPTN
unsigned long
イベントフラグのビット・パターン
IMASK
unsigned short
割り込みマスクレベル

17.2 マ ク ロ
RI600V4が提供するサービス・コールを発行する際に使用するマクロ(オブジェクトの現在状態,処理プログラムの属性など)について以下に示します。
17.2.1 定数マクロ
以下に,定数マクロ一覧を示します。
なお,定数マクロの定義は,以下のいずれかで行われています。
- <ri_root>\inc600\kernel.h
- kernel.hから呼び出される<ri_root>\inc600\itron.h
- cfg600が出力するシステム情報ヘッダファイルkernel_id.
本ファイルの内容は,システム・コンフィギュレーション・ファイルの定義内容によって変化します。
表17-2  定数マクロ
分類
マクロ
定義内容
定義場所
説明
一般
NULL
0
itron.h
無効ポインタ
TRUE
1
itron.h

FALSE
0
itron.h

E_OK
0
itron.h
正常終了
属性
TA_NULL
0
itron.h
オブジェクト属性を指定しない
TA_TFIFO
0x0000
kernel.h
タスクの待ち行列はFIFO順
TA_TPRI
0x0001
kernel.h
タスクの待ち行列はタスクの現在優先度順。ただし,同じ現在優先度のタスクの中ではFIFO順。
TA_MFIFO
0x0000
kernel.h
メッセージ・キューはFIFO順
TA_MPRI
0x0002
kernel.h
メッセージ・キューはメッセージ優先度順。ただし,同じメッセージ優先度のメッセージの中ではFIFO順。
TA_ACT
0x0002
kernel.h
タスクを生成と同時に起動
TA_WSGL
0x0000
kernel.h
イベント・フラグに複数タスクの待ちを許さない
TA_WMUL
0x0002
kernel.h
イベント・フラグに複数タスクの待ちを許す
TA_CLR
0x0004
kernel.h
待ち解除時にイベント・フラグをクリア
TA_CEILING
0x0003
kernel.h
優先度上限プロトコル
TA_STA
0x0002
kernel.h
周期ハンドラを動作状態で生成
TA_PHS
0x0004
kernel.h
周期ハンドラ位相を保存
タイム
アウト
TMO_POL
0
itron.h
ポーリング
TMO_FEVR
-1
itron.h
永久待ち
動作
モード
TWF_ANDW
0x0000
kernel.h
イベント・フラグのAND待ち
TWF_ORW
0x0001
kernel.h
イベント・フラグのOR待ち
状態
TTS_RUN
0x0001
kernel.h
RUNNING状態
TTS_RDY
0x0002
kernel.h
READY状態
TTS_WAI
0x0004
kernel.h
WAITING状態
TTS_SUS
0x0008
kernel.h
SUSPENDED状態
TTS_WAS
0x000C
kernel.h
WAITING-SUSPENDED状態
TTS_DMT
0x0010
kernel.h
DORMANT状態
TTW_SLP
0x0001
kernel.h
起床待ち状態
TTW_DLY
0x0002
kernel.h
時間経過待ち状態
TTW_SEM
0x0004
kernel.h
セマフォ資源獲得待ち状態
TTW_FLG
0x0008
kernel.h
イベント・フラグ待ち状態
TTW_SDTQ
0x0010
kernel.h
データ・キューへの送信待ち状態
TTW_RDTQ
0x0020
kernel.h
データ・キューからの受信待ち状態
TTW_MBX
0x0040
kernel.h
メールボックスからの受信待ち状態
TTW_MTX
0x0080
kernel.h
ミューテックス待ち状態
TTW_SMBF
0x0100
kernel.h
メッセージ・バッファへの送信待ち状態
TTW_RMBF
0x0200
kernel.h
メッセージ・バッファからの受信待ち状態
TTW_MPF
0x2000
kernel.h
固定長メモリ・ブロック獲得待ち待ち状態
TTW_MPL
0x4000
kernel.h
可変長メモリブ・ロック獲得待ち待ち状態
TCYC_STP
0x0000
kernel.h
周期ハンドラ非動作状態
TCYC_STA
0x0001
kernel.h
周期ハンドラ動作状態
TALM_STP
0x0000
kernel.h
アラーム・ハンドラ非動作状態
TALM_STA
0x0001
kernel.h
アラーム・ハンドラ動作状態
その他
TSK_SELF
0
kernel.h
自タスク指定
TSK_NONE
0
kernel.h
該当するタスクがない
TPRI_SELF
0
kernel.h
自タスクのベース優先度の指定
TPRI_INI
0
kernel.h
タスクの起動時優先度の指定
カーネル
構成
TMIN_TPRI
1
kernel.h
タスク優先度の最小値
TMAX_TPRI
system.priority
kernel_id.h
タスク優先度の最大値
TMIN_MPRI
1
kernel.h
メッセージ優先度の最小値
TMAX_MPRI
system.message_pri
kernel_id.h
メッセージ優先度の最大値
TKERNEL_MAKER
0x011B
kernel.h
カーネルのメーカー・コード
TKERNEL_PRID
0x0003
kernel.h
カーネルの識別番号
TKERNEL_SPVER
0x5403
kernel.h
ITRON仕様のバージョン番号
TKERNEL_PRVER
0x0130
kernel.h
カーネルのバージョン番号
TMAX_ACTCNT
255
kernel.h
タスク起動要求キューイング数の最大値
TMAX_WUPCNT
255
kernel.h
タスク起床要求キューイング数の最大値
TMAX_SUSCNT
1
kernel.h
タスク強制待ち要求ネスト数の最大値
TBIT_FLGPTN
32
kernel.h
イベントフラグのビット数
TIC_NUME
system.tic_nume
kernel_id.h
基本クロック割り込み周期の分子
TIC_DENO
system.tic_deno
kernel_id.h
基本クロック割り込み周期の分母
TMAX_MAXSEM
65535
kernel.h
セマフォの最大資源数の最大値
VTMAX_TSK
task[]定義数
kernel_id.h
最大タスクID
VTMAX_SEM
semaphore[]定義数
kernel_id.h
最大セマフォID
VTMAX_FLG
flag[]定義数
kernel_id.h
最大イベントフラグID
VTMAX_DTQ
dataqueue[]定義数
kernel_id.h
最大データ・キューID
VTMAX_MBX
mailbox[]定義数
kernel_id.h
最大メールボックスID
VTMAX_MTX
mutex[]定義数
kernel_id.h
最大ミューテックスID
VTMAX_MBF
message_buffer[]
定義数
kernel_id.h
最大メッセージ・バッファID
VTMAX_MPF
memorypool[]
定義数
kernel_id.h
最大固定長メモリ・プールID
VTMAX_MPL
variable_memorypool[]
定義数
kernel_id.h
最大可変長メモリ・プールID
VTMAX_CYH
cyclic_hand[]定義数
kernel_id.h
最大周期ハンドラID
VTMAX_ALH
alarm_hand[]定義数
kernel_id.h
最大アラーム・ハンドラID
VTSZ_MBFTBL
4
kernel.h
メッセージ・バッファのメッセージ管理テーブルのサイズ(単位:バイト)
VTMAX_AREASIZE
0x10000000
kernel.h
各種領域サイズの最大値(単位:バイト)
VTKNL_LVL
system.system_IPL
kernel_id.h
カーネル割り込みマスクレベル
VTIM_LVL
clock.IPL
kernel_id.h
基本クロック用タイマ割り込み優先レベル
エラー・コード
E_NOSPT
-9
itron.h
未サポート機能
E_PAR
-17
itron.h
パラメータ・エラー
E_ID
-18
itron.h
不正ID番号
E_CTX
-25
itron.h
コンテキスト・エラー
E_ILUSE
-28
itron.h
サービス・コール不正使用
E_OBJ
-41
itron.h
オブジェクト状態エラー
E_QOVR
-43
itron.h
キューイング・オーバフロー
E_RLWAI
-49
itron.h
待ち状態の強制解除
E_TMOUT
-50
itron.h
ポーリング失敗またはタイムアウト
EV_RST
-127
itron.h
オブジェクト・リセットによる待ち解除

17.2.2 関数マクロ
以下に,関数マクロ一覧を示します。
なお,関数マクロの定義は,<ri_root>\inc600\itron.hで行われています。
1 ) ER MERCD ( ER ercd )
ercdのメイン・エラー・コードを返します。
2 ) ER SERCD ( ER ercd )
ercdのサブ・エラー・コードを返します。
3 ) ER ERCD ( ER mercd, ER sercd )
mercdのメイン・エラー・コードとsercdのサブ・エラー・コードからなるエラー・コードを返します。
備考 RI600V4のサービス・コールが返すエラー・コードのサブ・エラー・コードはすべて-1,メイン・エラー・コードは表17-2に記載の値です。