( アタッチクラス/メモリ操作クラス/例外クラス ) 4.1 概要
アタッチクラスはJavaプログラムからITRONの機能を利用する手段を 提供する。タスク、セマフォ、メールボックスといった ITRON 機能毎 にそれに対応するクラスを設け、そのクラスのインスタンスをITRON カーネルオブジェクトに対応させる。ITRONカーネルオブジェクトの操 作は生成したインスタンスのメソッドを呼び出すことで行なうので、い ちいちオブジェクトのID を指定する必要はない。これはJavaのオブジ ェクト指向プログラミングになじむものである。
アタッチという名称はクラスのインスタンスが ITRON カーネルオブジ ェクトに1対1対応するところから来ている。対応の方法として、イン スタンス生成時に以下のどちらかを選択することができる。
(1) ITRONカーネルオブジェクトを生成し、それを生成インスタン
スに対応させる。
(2) 既に存在する ITRON カーネルオブジェクトに生成インスタン スを対応させる。
メモリ操作クラスはアドレスを意識しないでメモリを扱う手段を提供す る。Javaにはメモリアドレスの概念がないので、ITRONの機能を利用す る場合に必要なアドレスを指定することができない。またその内容を操 作することもできない。メモリ操作クラスを用いるとストリームI/Oの ような形式でメモリを扱うことができる。
例外クラスはアタッチクラス とメモリ操作クラスで発生するエラーを Javaの例外処理機構で扱うための手段を提供する。ITRON由来のエラー とそれ以外のエラーに分類されており、ITRON 由来のエラーはさらに
ITRONのエラーコード毎に別々のクラスに派生定義されているため、例
外処理機構の利用を容易にする。
30 パッケージ名:org.jtron.attach
例外クラス:
ITRONによる例外クラス
ItronCauseException
各ITRONサービスコール例外クラス
ItronSYSException ItronNOSPTException ItronRSFNException ItronRSATRException ItronPARException ItronIDException ItronCTXException ItronMACVException ItronOACVException ItronILUSEException ItronNOMEMException ItronNOIDException ItronOBJException ItronNOEXSException ItronQOVRException ItronRLWAIException ItronTMOUTException ItronDLTException ItronCLSException ItronWBLKException ItronBOVRException
JTRONによる例外クラス
JtronCauseException
org.jtron.JtronException
ItronCauseException JtronCauseException
ItronSYSException, ItronNOSPTException, ItronRSFNException, ItronRSATRException, ItronPARException, ItronIDException, ItronCTXException, ItronMACVException, ItronOACVException, ItronILUSEException, ItronNOMEMException, ItronNOIDException, ItronOBJException, ItronNOEXSException, ItronQOVRException, ItronRLWAIException, ItronTMOUTException, ItronDLTException, ItronCLSException, ItronWBLKException, ItronBOVRException
図4.1: org.jtron.attachパッケージの例外クラス構成
アタッチクラスは下層のμITRON仕様OSの実装に大きく影響される。
そのため実装されていないサービスコールが必要なクラス・メソッドの 扱いをどうするかを以下のどちらかの実装定義とする。
(1)該当クラス・メソッドを実装しない。この場合、実行時これを呼び出 すとClassNotFoundException、NoSuchMethodExceptionの ような例外が発生する。
(2)すべてのクラス・メソッドを実装し、実行時これを呼び出した時 ItronNOSPTException例外を起こす。
32 クラス:
メモリ操作クラス ItronMemory タスク
Task, T_CTSK, T_RTST, T_RTSK, T_DTEX, T_RTEX, T_ROVR セマフォ
Semaphore, T_CSEM, T_RSEM イベントフラグ
EventFlag, T_CFLG, T_RFLG データキュー
DataQueue, T_CDTQ, T_RDTQ メールボックス
MailBox, T_CMBX, T_RMBX ミューテックス
Mutex, T_CMTX, T_RMTX メッセージバッファ
MessageBuffer, T_CMBF, T_RMBF ランデブ
RendezvousPort, T_CPOR, T_RPOR, Rendezvous, T_RRDV
固定長メモリプール
FixedMemoryPool, T_CMPF, T_RMPF, ItronFixedMemory
可変長メモリプール
VariableMemoryPool, T_CMPL, T_RMPL, ItronVariableMemory
周期ハンドラ
CyclicHandler, T_CCYC, T_RCYC アラームハンドラ
AlarmHandler, T_CALM, T_RALM 割込みサービスルーチン
InterruptServiceRoutine, T_CISR, T_RISR その他
Kernel, T_DOVR, T_RSYS, T_DINH, T_DSVC, T_DEXC, T_RCFG, T_RVER
ItronMemory
ItronFixedMemory
java.lang.Object
Rendezvous
ItronVariableMemory
図4.2: org.jtron.attachパッケージのメモリ操作クラス構成
34
4.2 Java API
4.2.1 ITRON による例外クラス(ItronCauseException)
org.jtron.JtronException
org.jtron.attach.ItronCauseException