I-right/V,は、
i386 CPU およびその互換 CPU を使用した PC-AT 互換機用の
μITRON 3.0 仕様 OSであり、
東京大学坂村研究室で開発された、
μITRON3.0 仕様に準拠したリアルタイムカーネルである ItIs Phase3 をもとに、
パーソナルメディア株式会社が DOS/V パソコン ( IBM PC/AT 互換機 )
向けに独自に移植したものである。
I-right/V は レベル E までのすべての機能を実現しており、
いくつかの独自の拡張機能も持っている。
また、デバッグ等に使用するためのモニターシステムが含まれる。
ターゲット CPU としては、intel 80486DX 以上のCPUをサポートしている。
開発環境としては、GNU 開発環境の新版 (GCC 2.X) を用いる。
GCC 2.X の拡張機能 (long long 型、インラインアセンブラ機能など)
やパラメータ渡しのコンベンションに依存している部分がある。
以下のレベルC システムコールはサポートしない。
dis_int | 割込み禁止 |
ena_int | 割込み許可 |
def_exc | 例外ハンドラ定義 |
chg_ims | 割込みマスク変更 |
ref_ims | 割込みマスク参照 |
また、以下のシステムコールは、 他の方法で代用できるためサポートしない。
ret_int | 割込みハンドラからの復帰 |
ret_wup | 割込みハンドラ復帰とタスク起床 |
ret_tmr | タイマハンドラからの復帰 |
メモリー管理は周辺核 ( BTRON メモリー管理 ) で行うため、ITRON のメモリー管理機能は使用しない。 そのため、下記の機能は使用できない。
I-right/V は、以下の点でμITRON3.0仕様に従っていない。
FN
のサイズは最大 2バイトとしているが、
I-right/V では 4バイトで扱っている。
これは、あえてハーフワードで扱うメリットがほとんどないためである。
SYSTIME
、CYCTIME
、
ALMTIME
のサイズは 48 ビットを推奨しているが。
I-right/V ではこれらを 64 ビットで扱っている。
これは、GCC の long long
型を用いた方がプログラムの見通しがよく、
移植性の面からも有利であると考えたためである。
E_OACV
エラーになるが、
I-right/V ではリングレベル 0
で動作しているユーザタスクからも、
システムオブジェクトをアクセスすることができる。
この仕様は、ユーザタスクをリングレベル 0
で動作させる機能が追加されたと考えれば、
拡張機能であると考えることもできる。
chg_pri
を発行し、
タスク起動直後の優先度を設定可能とするためである。
この仕様は、外部仕様的には、DORMANT 状態のタスクに対する
chg_pri
を可能にしたという拡張機能になっている。
rpl_rdv
が E_PAR
エラーを返すとしているが。
I-right/V では長さが 0 の応答メッセージも使うことができる。
これは、応答メッセージが不要な場合のための仕様で、
一種の拡張機能である。mplid = (-4)
のシステム用メモリプールをユーザタスクからも
状態参照できることになっているが。
I-right/V ではリングレベル 0
以外で動作しているタスクから状態参照することはできない。
これには、深い意味はない。
I-right/V は、μITRON3.0 仕様に定義されている以外に、 以下の拡張機能をサポートしている。
μITRON3.0仕様では、オブジェクトを生成するシステムコール、
タイマハンドラを定義するシステムコールで、
オブジェクトの ID ないしはタイマハンドラの番号を
明示的に指定する必要がある。
この仕様は、動作するタスクがあらかじめわかっているようなケース
( ほとんどの組み込みシステムはこれに該当する )
には適当であるが、
より大規模な OS のマイクロカーネルとして用いるなど、
動作するタスクがわからない場合には使いにくい。
I-right/V では、オブジェクトの ID およびタイマハンドラの番号を、
自動的に割り当てる機能をサポートしている。
オブジェクトの ID については、自動割当の対象になるのは、
正の ID のみである。
この機能をサポートするために追加されたシステムコールは次の通りである。
vcre_tsk | タスク生成 (ID自動割当) |
vcre_sem | セマフォ生成 (ID自動割当) |
vcre_flg | イベントフラグ生成 (ID自動割当) |
vcre_mbx | メイルボックス生成 (ID自動割当) |
vcre_mbf | メッセージバッファ生成 (ID自動割当) |
vcre_por | ランデブ用のポート生成 (ID自動割当) |
vcre_mpl | 可変長メモリプール生成 (ID自動割当) |
vcre_mpf | 固定長メモリプール生成 (ID自動割当) |
vdef_cyc | 周期起動ハンドラ定義 (ハンドラ番号自動割当) |
vdef_alm | アラームハンドラ定義 (ハンドラ番号自動割当) |
I-right/V では、原則としてこれらの自動割り当て機能を使用する。 特別な理由がない限り、 ID/ハンドラ番号を指定しての生成/定義をしてはいけない。
デバッグサポート機能とは、
I-right/V 上で動作するタスクのデバッグを容易にするための機能で、
主にデバッガで利用される機能である。
現バージョンでは、以下の 2つのシステムコールをサポートしている。
vset_reg | タスクのレジスタ内容の設定 |
vget_reg | タスクのレジスタ内容の参照 |
この機能は I-right/V ではサポートしていない。
優先度継承セマフォとは、 優先度継承プロトコルを実現するための同期オブジェクトである。 現バージョンでは、バイナリセマフォのみをサポートしている。 この機能は、 ITRON 仕様カーネルで優先度継承プロトコルを実現するための機構の研究の一貫として実装したもので、 2 通りの仕様を用意している。 将来的には、どちらかの仕様しかサポートしないケースや、 どちらでもない第3の仕様をサポートするケースも考えられる。 この機能をサポートするために追加されたシステムコールは次の通りである。
vcre_pis | 優先度継承セマフォ生成 |
vvcre_pis | 優先度継承セマフォの生成(ID自動割当) |
vdel_pis | 優先度継承セマフォ削除 |
vsig_pis | 優先度継承セマフォ資源返却 |
vwai_pis | 優先度継承セマフォ資源獲得 |
vpreq_pis | 優先度継承セマフォ資源獲得(ポーリング) |
vtwai_pis | 優先度継承セマフォ資源獲得(タイムアウト有) |
vref_pis | 優先度継承セマフォ状態参照 |