第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に記載の値です。