オブジェクト

カーネルが操作対象とする資源をオブジェクトと総称する。オブジェクトには、タスクのほかに、メモリプールや、セマフォイベントフラグメールボックスなどの同期・通信機構、およびタイムイベントハンドラ(周期ハンドラおよびアラームハンドラ)が含まれている。

オブジェクト生成時には、原則として属性を指定することができる。属性はオブジェクトの細かな動作の違いやオブジェクトの初期状態を定める。属性にTA_XXXXXが指定されている場合、そのオブジェクトを「TA_XXXXX属性のオブジェクト」と呼ぶ。特に指定すべき属性がない場合には、TA_NULL(=0)を指定する。オブジェクト登録後に属性を読み出すインタフェースは、一般には用意されない。

オブジェクトの属性は、下位側がシステム属性を表し、上位側が実装独自属性を表す。どのビット位置を境に上位側/下位側と区別するかは特に定めない。基本的には、標準仕様で定義されていないビットは実装独自属性として使用できる。ただし、原則としてシステム属性はLSB(最下位ビット)から MSB(最上位ビット)に向かって順に割り当てる。実装独自属性ではMSBからLSBに向かって割り当てるものとする。属性の未定義のビットは0クリアされていなければならない。

オブジェクトは拡張情報を持つ場合がある。拡張情報はオブジェクト登録時に指定し、オブジェクトが実行を始める時にパラメータとして渡される情報で、カーネルの動作には影響を与えない。拡張情報はオブジェクトの状態参照システムコールで読み出すことができる。

オブジェクトはID番号により識別される。μT-Kernelでは、ID番号はオブジェクトの生成時に自動的に割り当てられる。利用者がID番号を指定することはできない。このため、デバッグの際にオブジェクトを識別することが困難となる。そこで、各オブジェクトの生成の際に、デバッグ用のオブジェクト名称を指定することができる。この名称はあくまでデバッグ用であり、μT-Kernel/DSの機能からのみ参照できる。また、名称に関するチェックは、μT-Kernelでは一切行われない。