第12章  サービス・コール


本章では,RI78V4が提供しているサービス・コールについて解説しています。

12.1 概  要

RI78V4が提供しているサービス・コールは,ユーザが記述した処理プログラムからRI78V4が管理している資源(タスク,セマフォなど)を間接的に操作するために用意されたサービス・ルーチンです。

以下に,RI78V4が提供しているサービス・コールを管理モジュール別に示します。

- タスク管理機能

act_tsk  iact_tsk  can_act  sta_tsk  ista_tsk  ext_tsk  ter_tsk
chg_pri  ichg_pri  ref_tsk

- タスク付属同期機能

slp_tsk  tslp_tsk  wup_tsk  iwup_tsk  can_wup  ican_wup  rel_wai
irel_wai  sus_tsk  isus_tsk  rsm_tsk  irsm_tsk  frsm_tsk  ifrsm_tsk
dly_tsk

- 同期通信機能(セマフォ)

sig_sem  isig_sem  wai_sem  pol_sem  twai_sem  ref_sem

- 同期通信機能(イベントフラグ)

set_flg  iset_flg  clr_flg  wai_flg  pol_flg  twai_flg  ref_flg

- 同期通信機能(データ・キュー)

snd_dtq  psnd_dtq  ipsnd_dtq  tsnd_dtq  fsnd_dtq  ifsnd_dtq  rcv_dtq
prcv_dtq  trcv_dtq  ref_dtq 


- 同期通信機能(メールボックス)

snd_mbx  rcv_mbx  prcv_mbx  trcv_mbx  ref_mbx

- メモリ・プール管理機能

get_mpf  pget_mpf  tget_mpf  rel_mpf  ref_mpf

- 時間管理機能

sta_cyc  stp_cyc  ref_cyc

- システム状態管理機能

rot_rdq  irot_rdq  get_tid  iget_tid  loc_cpu  iloc_cpu  unl_cpu
iunl_cpu  ena_dsp  dis_dsp  sns_ctx  sns_loc  sns_dsp  sns_dpn

- システム構成管理機能

ref_ver

12.2 サービス・コールの呼び出し

サービス・コールをC言語,またはアセンブリ言語で記述された処理プログラムから呼び出す方法を以下に示します。

12.2.1 C言語形式の呼び出し

通常のC言語関数と同様の方法で呼び出しを行うことにより,サービス・コールのパラメータはRI78V4に引き数として渡され,該当処理が実行されます。

【 C言語におけるサービス・コールの呼び出しイメージ 】

 #include        <kernel.h>              /*標準ヘッダ・ファイルの定義*/
 #include        <kernel_id.h>           /*システム情報ヘッダ・ファイルの定義*/
 
 void
 func_task ( VP_INT exinf )
 {
         ER      ercd;                   /*変数の宣言*/
         ID      tskid = ID_tskA;        /*変数の宣言,初期化*/
 
         ercd = act_tsk ( tskid );       /*サービス・コールの呼び出し*/
 
         ............
         ............
 
         ext_tsk ( );                    /*自タスクの終了*/
 }
 

備考 RI78V4が提供するサービス・コールを処理プログラムから呼び出す場合,以下に示したヘッダ・ファイルの定義(インクルード処理)が必要となります。

kernel.h: 標準ヘッダ・ファイル(C言語用)

kernel_id.h: システム情報ヘッダ・ファイル(C言語用)

12.2.2 アセンブリ言語形式の呼び出し

アセンブラの関数呼び出し規約にしたがってパラメータの設定を行ったのち,CALL命令で呼び出しを行うことにより,サービス・コールのパラメータはRI78V4に引き数として渡され,該当処理が実行されます。

【 アセンブリ言語におけるサービス・コールの呼び出しイメージ 】

 $INCLUDE        (kernel.inc)            ;標準ヘッダ・ファイルの定義
 $INCLUDE        (kernel_id.inc)         ;システム情報ヘッダ・ファイルの定義
 
         .SECTION .bss, BSS
 _ercd:
         DS      (2)                     ;戻り値の保存用領域を確保
 
        .PUBLIC  _func_task
        .SECTION  .textf, TEXTF
 _func_task:
         MOV     A, #ID_tskA             ;パラメータの設定
         CALL    !!_act_tsk              ;サービス・コールの呼び出し
         MOVW    !LOWW(_ercd), AX        ;戻り値の設定
 
         ............
         ............
 
         CALL    !!_ext_tsk              ;自タスクの終了
         BR      !!__kernel_int_exit     ;カーネル終了処理へ分岐
 

備考 RI78V4が提供するサービス・コールを処理プログラムから呼び出す場合,以下に示したヘッダ・ファイルの定義(インクルード処理)が必要となります。

kernel.inc: 標準ヘッダ・ファイル(アセンブリ言語用)

kernel_id.inc: システム情報ヘッダ・ファイル(アセンブリ言語用)

12.3 サービス・コールのスタック使用量

RI78V4では,サービス・コールの前処理/後処理でPC,PSW,HLといったレジスタ群の値を“該当サービス・コールを発行した処理プログラムのスタック(タスク・スタック,またはシステム・スタック)”に退避/復帰する処理を行っています。

また,サービス・コールの引き数を格納するための領域として“該当サービス・コールを発行した処理プログラムのスタック”が,サービス・コールの内部処理を実行する際に必要となるスタック領域として“システム・スタック”が使用されます。

したがって,タスク・スタック,システム・スタックの各領域を確保する際には,“サービス・コールの発行に伴うスタックの消費”を考慮する必要があります。

以下に,サービス・コールの発行に伴い必要となる各スタックのサイズを示します。

表12−1  サービス・コールのスタック使用量(単位:バイト)

サービス・コール名

発行元スタック

引き数用

発行元スタック

内部処理用

システム・スタック

内部処理用

0

10

6

0

10

6

0

10

6

0

10

12

0

10

12

0

10

16

0

10

6

0

10

12

0

10

14

0

10

6

0

10

6

0

10

8

0

10

12

0

10

6

0

10

6

0

10

14

0

10

6

0

10

12

0

10

12

0

10

12

0

10

6

0

10

6

0

10

6

8

10

16

0

10

16

4

10

16

0

10

6

0

10

16

0

10

16

4

10

16

0

10

6

0

10

14

0

10

14

4

10

14

0

10

6

0

10

8

0

10

12

0

10

12

4

10

12

0

10

6

0

10

14

0

10

14

4

10

14

0

10

6

0

10

6

0

10

12

0

10

6

0

10

6

0

10

8

0

10

6

0

10

6

0

10

8

0

10

6

0

10

6

0

10

6

0

10

6

0

10

6

0

10

6

0

10

6



12.4 データ・マクロ

RI78V4が提供するサービス・コールを発行する際に使用するデータ・マクロ(データ・タイプ,現在状態など)について以下に示します。

12.4.1 データ・タイプ

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

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

表12−2  データ・タイプ

マクロ



意味

UH

unsigned short int

符号なし16ビット整数

VP

void __near

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

UINT

unsigned int

符号なし16ビット整数

VP_INT

signed long int

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

ID

unsigned char

ID

BOOL

signed int

真偽値

STAT

unsigned short int

現在状態,または待ち要因

ER

signed short int

戻り値

ER_UINT

unsigned short int

符号なし16ビット整数

PRI

signed char

優先度

FLGPTN

unsigned short int

ビット・パターン

MODE

unsigned char

要求条件

TMO

signed long int

待ち時間(単位:ティック)

RELTIM

unsigned long int

相対時間(単位:ティック)



注 RI78V4のID型の定義は,μITRON4.0仕様の定義と異なります。

12.4.2 現在状態

以下に,サービス・コール(ref_tskref_cyc)の発行により獲得される現在状態を示します。

なお,現在状態のマクロ定義は,標準ヘッダ・ファイル<ri_root>\include\kernel.hで行われています。

表12−3  現在状態

マクロ



意味

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状態)



12.4.3 WAITING種別

以下に,サービス・コール(ref_tsk)の発行により獲得されるWAITING種別を示します。

なお,WAITING種別のマクロ定義は,標準ヘッダ・ファイル<ri_root>\include\kernel.hで行われています。

表12−4  WAITING種別

マクロ



意味

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_MPF

0x2000

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



12.4.4 戻 り 値

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

なお,戻り値のマクロ定義は,標準ヘッダ・ファイル<ri_root>\include\kernel.hで行われています。

表12−5  戻り値

マクロ

数値

意味

E_OK

0

正常終了

E_ILUSE

-28

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

E_OBJ

-41

処理プログラムの現在状態が不正である

E_QOVR

-43

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

E_RLWAI

-49

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

E_TMOUT

-50

待ち時間が経過した

FALSE

0



TRUE

1





12.4.5 条件コンパイル・マクロ

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

表12−6  条件コンパイル・マクロ

分類

マクロ

内容

Cコンパイラ・パッケージ

__REL__

CC-RLを使用



12.4.6 その他のマクロ

以下に,サービス・コールを発行する際に使用するその他のマクロを示します。

なお,その他のマクロのマクロ定義は,標準ヘッダ・ファイル<ri_root>\include\kernel.hで行われています。

表12−7  その他のマクロ

マクロ



意味

TSK_SELF

0

自タスク

TPRI_INI

0

初期優先度

TMO_FEVR

-1

永久待ち

TMO_POL

0

ポーリング

TWF_ANDW

0x00

AND待ち

TWF_ORW

0x01

OR待ち

TPRI_SELF

0

自タスクの現在優先度

TSK_NONE

0

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

NULL

0

メッセージはキューイングされていない



12.5 データ構造体

RI78V4が提供するサービス・コールを発行する際に使用するデータ構造体(タスク状態情報,セマフォ状態情報など)について以下に示します。

12.5.1 タスク状態情報

以下に,ref_tskを発行する際に使用するタスク状態情報T_RTSKを示します。

なお,タスク状態情報T_RTSKの定義は,標準ヘッダ・ファイル<ri_root>\include\{kernel.h,kernel.inc}から呼び出されるヘッダ・ファイル<ri_root>\include\os\{packet.h,packet.inc}で行われています。

【 packet.h 】

 
 typedef struct  t_rtsk {
         STAT    tskstat;        /*現在状態*/
         PRI     tskpri;         /*現在優先度*/
         PRI     tskbpri;        /*システム予約領域*/
         STAT    tskwait;        /*待ち要因*/
         ID      wobjid;         /*管理オブジェクトのID*/
         TMO     lefttmo;        /*システム予約領域*/
         UINT    actcnt;         /*起動要求数*/
         UINT    wupcnt;         /*起床要求数*/
         UINT    suscnt;         /*サスペンド要求数*/
 } T_RTSK;


【 packet.inc 】

 
 rtsk_tskstat    .EQU     0x00     ;現在状態
 rtsk_tskpri     .EQU     0x02     ;現在優先度
 rtsk_tskbpri    .EQU     0x03     ;システム予約領域
 rtsk_tskwait    .EQU     0x04     ;待ち要因
 rtsk_wobjid     .EQU     0x06     ;管理オブジェクトのID
 rtsk_lefttmo    .EQU     0x08     ;システム予約領域
 rtsk_actcnt     .EQU     0x0c     ;起動要求数
 rtsk_wupcnt     .EQU     0x0e     ;起床要求数
 rtsk_suscnt     .EQU     0x10     ;サスペンド要求数


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

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


TTS_RUN: RUNNING状態

TTS_RDY: READY状態

TTS_WAI: WAITING状態

TTS_SUS: SUSPENDED状態

TTS_WAS: WAITING-SUSPENDED状態

TTS_DMT: DORMANT状態

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


- tskbpri,rtsk_tskbpri
システム予約領域です。


- tskwait,rtsk_tskwait
WAITING種別(WAITING状態の種類)が格納されます。


TTW_NONE: 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_MPF: get_mpf,またはtget_mpfによるメモリ・ブロック待ち状態

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


- lefttmo,rtsk_lefttmo
システム予約領域です。


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


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


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


12.5.2 セマフォ状態情報

以下に,ref_semを発行する際に使用するセマフォ状態情報T_RSEMを示します。

なお,セマフォ状態情報T_RSEMの定義は,標準ヘッダ・ファイル<ri_root>\include\{kernel.h,kernel.inc}から呼び出されるヘッダ・ファイル<ri_root>\include\os\{packet.h,packet.inc}で行われています。

【 packet.h 】

 
 typedef struct  t_rsem {
         ID      wtskid;         /*待ちタスクの有無*/
         UINT    semcnt;         /*現在資源数*/
 } T_RSEM;


【 packet.inc 】

 
 rsem_wtskid     .EQU     0x00     ;待ちタスクの有無
 rsem_semcnt     .EQU     0x02     ;現在資源数


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

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


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

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

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


12.5.3 イベントフラグ状態情報

以下に,ref_flgを発行する際に使用するイベントフラグ状態情報T_RFLGを示します。

なお,イベントフラグ状態情報T_RFLGの定義は,標準ヘッダ・ファイル<ri_root>\include\{kernel.h,kernel.inc}から呼び出されるヘッダ・ファイル<ri_root>\include\os\{packet.h,packet.inc}で行われています。

【 packet.h 】

 
 typedef struct  t_rflg {
         ID      wtskid;         /*待ちタスクの有無*/
         FLGPTN  flgptn;         /*現在ビット・パターン*/
 } T_RFLG;


【 packet.inc 】

 
 rflg_wtskid     .EQU     0x00     ;待ちタスクの有無
 rflg_flgptn     .EQU     0x02     ;現在ビット・パターン


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

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


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

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

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


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

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

なお,データ・キュー詳細情報T_RDTQの定義は,標準ヘッダ・ファイル<ri_root>\include\{kernel.h,kernel.inc}から呼び出されるヘッダ・ファイル<ri_root>\include\os\{packet.h,packet.inc}で行われています。

【 packet.h 】

 
 typedef struct  t_rdtq {
         ID      stskid;         /*データ送信待ちタスクの有無*/
         ID      rtskid;         /*データ受信待ちタスクの有無*/
         UINT    sdtqcnt;        /*未受信データの総数*/
 } T_RDTQ;


【 packet.inc 】

 
 rdtq_stskid     .EQU     0x00     ;データ送信待ちタスクの有無
 rdtq_rtskid     .EQU     0x01     ;データ受信待ちタスクの有無
 rdtq_sdtqcnt    .EQU     0x02     ;未受信データの総数


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

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


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

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

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


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

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

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


12.5.5 メッセージ

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

なお,メッセージT_MSG,T_MSG_PRIの定義は,標準ヘッダ・ファイル<ri_root>\include\kernel.hから呼び出されるヘッダ・ファイル<ri_root>\include\os\types.hで行われています。

【 TA_MFIFO属性用メッセージT_MSGの構造 】

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

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

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

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

- msgque
システム予約領域です。


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


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

備考2 メッセージの優先度として指定可能な値は,“1〜31”に限られます。

12.5.6 メールボックス状態情報

以下に,ref_mbxを発行する際に使用するメールボックス状態情報T_RMBXを示します。

なお,メールボックス状態情報T_RMBXの定義は,標準ヘッダ・ファイル<ri_root>\include\{kernel.h,kernel.inc}から呼び出されるヘッダ・ファイル<ri_root>\include\os\{packet.h,packet.inc}で行われています。

【 packet.h 】

 
 typedef struct  t_rmbx {
         ID      wtskid;                 /*待ちタスクの有無*/
         T_MSG   __near   *pk_msg;       /*待ちメッセージの有無*/
 } T_RMBX;


【 packet.inc 】

 
 rmbx_wtskid     .EQU     0x00             ;待ちタスクの有無
 rmbx_pk_msg     .EQU     0x02             ;待ちメッセージの有無


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

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


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

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

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


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

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

12.5.7 固定長メモリ・プール状態情報

以下に,ref_mpfを発行する際に使用する固定長メモリ・プール状態情報T_RMPFを示します。

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

【 packet.h 】

 
 typedef struct  t_rmpf {
         ID      wtskid;         /*待ちタスクの有無*/
         UINT    fblkcnt;        /*空きメモリ・ブロックの総数*/
 } T_RMPF;


【 packet.inc 】

 
 rmpf_wtskid     .EQU     0x00     ;待ちタスクの有無
 rmpf_fblkcnt    .EQU     0x02     ;空きメモリ・ブロックの総数


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

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


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

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

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


12.5.8 周期ハンドラ状態情報

以下に,ref_cycを発行する際に使用する周期ハンドラ状態情報T_RCYCを示します。

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

【 packet.h 】

 
 typedef struct  t_rcyc {
         STAT    cycstat;        /*現在状態*/
         RELTIM  lefttim;        /*残り時間*/
 } T_RCYC;


【 packet.inc 】

 
 rcyc_cycstat    .EQU     0x00     ;現在状態
 rcyc_lefttim    .EQU     0x02     ;残り時間


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

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


TCYC_STP: 動作停止状態(STP状態)

TCYC_STA: 動作開始状態(STA状態)

- lefttim,rcyc_lefttim
周期ハンドラが次に起動するまでの残り時間(単位:ティック)が格納されます。
なお,対象周期ハンドラが動作停止状態(STP状態)の場合には,本メンバの内容は不定値となります。



12.5.9 バージョン情報

以下に,ref_verを発行する際に使用するバージョン情報T_RVERを示します。

なお,バージョン情報T_RVERの定義は,標準ヘッダ・ファイル<ri_root>\include\{kernel.h,kernel.inc}から呼び出されるヘッダ・ファイル<ri_root>\include\os\{packet.h,packet.inc}で行われています。

【 packet.h 】

 
 typedef struct  t_rver {
         UH      maker;          /*メーカ・コード*/
         UH      prid;           /*識別番号*/
         UH      spver;          /*ITRON仕様のバージョン番号*/
         UH      prver;          /*カーネルのバージョン番号*/
         UH      prno[4];        /*管理情報*/
 } T_RVER;


【 packet.inc 】

 
 verinf_maker    .EQU     0x00     ;メーカ・コード
 verinf_prid     .EQU     0x02     ;識別番号
 verinf_spver    .EQU     0x04     ;ITRON仕様のバージョン番号
 verinf_prver    .EQU     0x06     ;カーネルのバージョン番号
 verinf_prno     .EQU     0x08     ;管理情報


以下に,バージョン情報T_RVERの詳細を示します。

- maker,verinf_maker
カーネルのメーカ・コードが格納されます。


0x011b: ルネサスエレクトロニクス製

- prid,verinf_prid
カーネルの識別番号が格納されます。


0x0006: 識別番号

- spver,verinf_spver
カーネルが準拠しているITRON仕様のバージョン番号が格納されます。


0x5403: μITRON4.0仕様Ver.4.03.03

- prver,verinf_prver
カーネルのバージョン番号が格納されます。


0x02xx: Ver.2.xx

- prno[0],verinf_prno
カーネルの版数が格納されています。


0x0: Vバージョン

- prno[1],verinf_prno + 0x2
カーネルのメモリ・モデルが格納されています。


0x2: ミディアム・モデル

- prno[2],verinf_prno + 0x4
システム予約領域です。


- prno[3],verinf_prno + 0x6
システム予約領域です。