メインページ | モジュール | 名前空間一覧 | クラス階層 | 構成 | ファイル一覧 | 名前空間メンバ | 構成メンバ | ファイルメンバ | 関連ページ

サービスコールスタブ

μITRON 4.0仕様のサービスコールを間接的に呼び出すためのスタブクラス [詳細]

構成

class  fncode_stub
 機能コードを用いたサービスコールスタブの定義 [詳細]

class  outline_stub
 外部関数を用いたサービスコールスタブの定義 [詳細]

class  raw_stub
 最も単純なサービスコールスタブ [詳細]


解説

サービスコールスタブ モジュールは、TOPPERS カーネルのサービスコールの呼出し方法をパラメータ化 するための機構である。 ユーザ独自のサービスコールスタブを定義することで、μITRON 以外のカーネルや、μITRON の異なる バージョンのカーネルを使用することも、原理的には可能である。

カーネル間の差異の吸収:
  主として、サポートされるサービスコールの違いを意識することなくライブラリを構築できる。 存在しないサービスコールを呼出そうとした場合、コンパイル時にエラーにすることも、実行時に エラーにすることもできる。また、ユーザの手によって、不足したサービスコールを補完することも 可能である。
  使用するサービスコールスタブをテンプレート引数にすることで、該当するサービスコールを実際に (テンプレートではなく実体として)呼出すようなコードを記述するまで、コンパイルエラーになる ことを回避することができる。
引数や返却値の型の統一:
  μITRON 仕様のカーネルは、仕様を満たしていたとしても、サービスコールの引数の型が 微妙に異なる場合がある。また、同一のカーネルでもターゲットによって異なる可能性もある。
  C++では、そうした微妙な型の差異が多重定義等に思わぬ障害を引き起こす可能性があるため、 サービスコールスタブによって型を統一することができる。
例外指定の付加:
  μITRON カーネルのヘッダは、主としてC言語で使用することを想定して実装されているため、C++の 例外指定がない場合がある。
  サービスコールスタブを用いることで、各サービスコールに例外指定を追加することができる。 これにより、例外処理に関連した不要なコードが生成されることを抑止し、プログラムの効率化を図る ことができる。