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


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

備考 <ri_root>は,RI600PXのインストール・フォルダを表しています。
デフォルトは,“ C:\Program Files\Renesas Electronics\CubeSuite+\RI600PX”です。


18.1 データ・タイプ

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

データ・タイプのマクロ定義は,<ri_root>\inc600\kernel.h,またはkernel.hから呼び出される<ri_root>\inc600\itron.hで行われています。

表18−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_ID

signed long

エラー・コード,またはオブジェクトID

ER_UINT

signed long

エラー・コード,または符号なし32ビット整数

ER_BOOL

signed long

エラー・コード,または真偽値(TRUEまたはFALSE)

ACPTN

unsigned short

アクセス許可パターン

FLGPTN

unsigned long

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

IMASK

unsigned short

割り込みマスクレベル

TEXPTN

unsigned long

タスク例外要因



18.2 定数マ ク ロ

以下に,定数マクロ一覧を示します。

なお,定数マクロの定義は,以下のいずれかで行われています。

- <ri_root>\inc600\kernel.h

- kernel.hから呼び出される<ri_root>\inc600\itron.h

- cfg600pxが出力するシステム情報ヘッダファイルkernel_id.
本ファイルの内容は,システム・コンフィギュレーション・ファイルの定義内容によって変化します。


表18−2  定数マクロ



分類

マクロ

定義内容

定義場所

説明

一般

NULL

0

itron.h

無効ポインタ

TRUE

1

itron.h



FALSE

0

itron.h



E_OK

0

itron.h

正常終了

属性

TA_NULL

0

itron.h

オブジェクト属性を指定しない

TA_HLNG

0x0000

kernel.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待ち

タスク

例外

TTEX_ENA

0x0000

kernel.h

タスク例外許可状態

TTEX_DIS

0x0001

kernel.h

タスク例外禁止状態

状態

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

0x0004

kernel.h

カーネルの識別番号

TKERNEL_SPVER

0x5403

kernel.h

ITRON仕様のバージョン番号

TKERNEL_PRVER

0x0120

kernel.h

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

TMAX_ACTCNT

255

kernel.h

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

TMAX_WUPCNT

255

kernel.h

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

TMAX_SUSCNT

1

kernel.h

タスク強制待ち要求ネスト数の最大値

TBIT_FLGPTN

32

kernel.h

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

TBIT_TEXPTN

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_DOMAIN

備考1参照

kernel_id.h

最大ドメインID

VTMAX_TSK

備考1参照

kernel_id.h

最大タスクID

VTMAX_SEM

備考1参照

kernel_id.h

最大セマフォID

VTMAX_FLG

備考1参照

kernel_id.h

最大イベントフラグID

VTMAX_DTQ

備考1参照

kernel_id.h

最大データ・キューID

VTMAX_MBX

備考1参照

kernel_id.h

最大メールボックスID

VTMAX_MTX

備考1参照

kernel_id.h

最大ミューテックスID

VTMAX_MBF

備考1参照

kernel_id.h

最大メッセージ・バッファID

VTMAX_MPF

備考1参照

kernel_id.h

最大固定長メモリ・プールID

VTMAX_MPL

備考1参照

kernel_id.h

最大可変長メモリ・プールID

VTMAX_CYH

備考1参照

kernel_id.h

最大周期ハンドラID

VTMAX_ALH

備考1参照

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_SYS

-5

itron.h

システム・エラー

E_NOSPT

-9

itron.h

未サポート機能

E_RSFN

-10

itron.h

予約機能コード

E_RSATR

-11

itron.h

予約属性

E_PAR

-17

itron.h

パラメータ・エラー

E_ID

-18

itron.h

不正ID番号

E_CTX

-25

itron.h

コンテキスト・エラー

E_MACV

-26

itron.h

メモリ・アクセス違反

E_OACV

-27

itron.h

オブジェクト;アクセス違反

E_ILUSE

-28

itron.h

サービス・コール不正使用

E_NOMEM

-33

itron.h

メモリ不足

E_NOID

-34

itron.h

ID番号不足

E_OBJ

-41

itron.h

オブジェクト状態エラー

E_NOEXS

-42

itron.h

オブジェクト未生成

E_QOVR

-43

itron.h

キューイング・オーバフロー

E_RLWAI

-49

itron.h

待ち状態の強制解除

E_TMOUT

-50

itron.h

ポーリング失敗またはタイムアウト

E_DLT

-51

itron.h

待ちオブジェクトの削除

E_CLS

-52

itron.h

待ちオブジェクトの状態変化

EV_RST

-127

itron.h

オブジェクト・リセットによる待ち解除

保護

機能

拡張

TDOM_SELF

0

kernel.h

自タスクが所属するドメイン

TACP_SHARED

((1u <<

(VTMAX_DOMAIN)) -1)

kernel.h

すべてのドメインがアクセスできることを示すアクセス許可パターン

TACT_SRW

{TACP_SHARED,

TACP_SHARED,

TACP_SHARED}

kernel.h

すべてのアクセスがすべてのドメインに許可されることを示すアクセス許可ベクタ

備考2参照

TACT_SRO

{TACP_SHARED,

0,

TACP_SHARED}

kernel.h

オペランド・ライト・アクセスはすべてのドメインに禁止され,オペランド・リードアクセスおよび実行アクセスはすべてのドメインに許可されていることを示すアクセス許可ベクタ

備考2参照

TPM_READ

1

kernel.h

オペランド・リード・アクセス

TPM_WRITE

2

kernel.h

オペランド・ライト・アクセス

TPM_EXEC

4

kernel.h

実行アクセス



備考1 「20.7 最大ID(maxdefine)」を参照してください。

備考2 初期代入文の右辺にのみ記述できます。

18.3 関数マクロ

以下に,関数マクロ一覧を示します。

なお,関数マクロの定義は,以下のいずれかで行われています。

- <ri_root>\inc600\kernel.h

- kernel.hから呼び出される<ri_root>\inc600\itron.h

18.3.1 エラー・コード関連

1 ) ER MERCD ( ER ercd )
ercdのメイン・エラー・コードを返します。


2 ) ER SERCD ( ER ercd )
ercdのサブ・エラー・コードを返します。


3 ) ER ERCD ( ER mercd, ER sercd )
mercdのメイン・エラー・コードとsercdのサブ・エラー・コードからなるエラー・コードを返します。


備考 RI600PXのサービス・コールが返すエラー・コードのサブ・エラー・コードはすべて-1,メイン・エラー・コードは表18−2に記載の値です。

18.3.2 データ・キュー関連

1 ) SIZE TSZ_DTQ ( UINT dtqcnt )
データ数がdtqcntのデータ・キュー領域のサイズ(単位:バイト)を返します。


18.3.3 固定長メモリ・プール関連

1 ) SIZE TSZ_MPF ( UINT blkcnt, UINT blksz )
blkszバイトのメモリ・ブロックをblkcnt個獲得可能な固定長メモリ・プール領域のサイズ(単位:バイト)を返します。


2 ) SIZE TSZ_MPFMB ( UINT blkcnt, UINT blksz )
blkszバイトのメモリ・ブロックをblkcnt個獲得可能な固定長メモリ・プールの管理領域のサイズ(単位:バイト)を返します。


18.3.4 ドメイン関連

1 ) ATR TA_DOM ( ID domid )
domidで指定されたドメインに所属することを示すタスク属性値を返します。本マクロは,タスク生成時に指定するtskatr(タスク属性)のbit7-4を設定するために使用します。


18.3.5 アクセス許可関連

1 ) ACPTN TACP( ID domid )

domidで指定されたドメインからのみアクセス可能であることを示すアクセス許可パターンを返します。

2 ) ACVCT TACT_PRW( ID domid )

すべてのアクセス(オペランド・リード,オペランド・ライト,実行)が,domidで指定されたドメインにのみ許可されていることを示すアクセス許可ベクタを返します。
本マクロは,初期代入文の右辺にのみ記述できます。


3 ) ACVCT TACT_PRO( ID domid )

オペランド・リード・アクセスおよび実行アクセスがdomidで指定されたドメインにのみ許可され,オペランド・ライト・アクセスがすべてのドメインに禁止されていることを示すアクセス許可ベクタを返します。
本マクロは,初期代入文の右辺にのみ記述できます。


4 ) ACVCT TACT_SRPW( ID domid )

オペランド・リード・アクセスおよび実行アクセスがすべてのドメインにのみ許可され,オペランド・ライト・アクセスがdomidで指定されたドメインにのみ許可されていることを示すアクセス許可ベクタを返します。
本マクロは,初期代入文の右辺にのみ記述できます。