ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
デバイスドライバの記述 Oracle Solaris 10 8/11 Information Library (日本語) |
パート I Solaris プラットフォーム用デバイスドライバの設計
21. ドライバのコンパイル、ロード、パッケージ化、およびテスト
22. デバイスドライバのデバッグ、テスト、およびチューニング
コンソールフレームバッファードライバでの視覚的な入出力インタフェースの実装
コンソールフレームバッファードライバでのポーリングされた入出力の実装
X Window System のフレームバッファー固有の DDX モジュール
コンソールフレームバッファードライバの開発、テスト、およびデバッグ
カーネル端末エミュレータの役割は、コンソールフレームバッファーに、そのフレームバッファーの画面の高さ、幅、およびピクセルの深さモードによって決定される正しい位置と表現でテキストを描画することです。端末エミュレータはまた、スクロールの操作、ソフトウェアカーソルの制御、および ANSI 端末のエスケープシーケンスの解釈も行います。端末エミュレータは、グラフィックスカードに応じて VGA テキストモードまたはピクセルモードのどちらかでコンソールフレームバッファーにアクセスします。フレームバッファードライバを Solaris コンソールフレームバッファードライバとして使用するには、そのドライバが Solaris カーネル端末エミュレータとの互換性を備えている必要があります。ターゲットプラットフォームは、フレームバッファードライバを変更して Solaris カーネル端末エミュレータとの互換性を確保する必要があるかどうかを判定するための、もっとも重要な要因です。
x86 プラットフォーム – x86 コンソールフレームバッファードライバは、すでにコンソールのフレームバッファーインタフェースをサポートしているため、コンソールフレームバッファードライバを変更する必要はありません。
SPARC プラットフォーム – コンソールフレームバッファードライバが Solaris カーネル端末エミュレータと対話できるようにするには、そのドライバはこの付録で説明されているインタフェースを使用するべきです。
x86 プラットフォームでは、Solaris カーネル端末エミュレータモジュール (tem) は VGA テキストモードを排他的に使用して vgatext モジュールと対話します。vgatext モジュールは、業界標準の VGA テキストモードを使用して、x86 と互換性のあるフレームバッファーデバイスと対話します。vgatext モジュールは、すでにコンソールのフレームバッファーインタフェースをサポートしているため、x86 フレームバッファードライバはカーネルの tem モジュールと互換性があります。x86 フレームバッファードライバに特殊なインタフェースを追加する必要はありません。
この付録の残りの部分は、SPARC プラットフォームにのみ適用されます。
SPARC フレームバッファードライバは通常、VGA テキストモードでは動作しません。SPARC フレームバッファードライバは通常、表示されるテキストとイメージを示すピクセルパターンを送信する必要があります。カーネルの tem が、画面へのデータの描画、スクロールの実行、およびテキストカーソルの表示を容易にする特定のインタフェースをサポートするには、SPARC ドライバが必要です。ドライバが tem から送信されたデータを実際に画面に描画する方法は、デバイスによって異なります。ドライバは通常、ハードウェアとビデオモードに従って、データをビデオメモリーに描画します。
Solaris OS には、カーネル端末エミュレータが互換性のあるコンソールフレームバッファーを直接操作できるインタフェースが用意されています。ドライバを変換してカーネル端末エミュレータとの互換性を確保する利点は、次のとおりです。
パフォーマンス (特に、スクロール) の大幅な向上
ANSI 文字列色の機能の拡張
システムコンソールのストリームがシリアルポートから出力されている場合でも、コンソールフレームバッファー上でログインセッションを開始する機能
SPARC コンソールフレームバッファードライバに、カーネル端末エミュレータとの互換性を確保する必要はありません。コンソールフレームバッファードライバにカーネル端末エミュレータとの互換性がない場合、システムは、OpenBoot PROM 内の FCode 端末エミュレータを使用します。
コンソールフレームバッファーは、EEPROM の screen 環境変数によって識別されます。システムは、フレームバッファードライバが tem-support DDI プロパティーをエクスポートするかどうかをチェックすることによって、コンソールフレームバッファーにカーネル端末エミュレータモジュールとの互換性があるかどうかを判定します。tem-support プロパティーがエクスポートされる場合、システムは、システムブート時のコンソールの設定中にフレームバッファードライバに VIS_DEVINIT 入出力制御 (ioctl) コマンドを発行します。tem-support DDI プロパティーがエクスポートされ、かつ VIS_DEVINIT ioctl コマンドが成功して tem に互換性があるバージョン番号を返した場合、システムは、そのフレームバッファードライバをカーネル端末エミュレータ経由で利用するようにシステムコンソールを設定します。入出力制御のドライバエントリポイントについては、ioctl(9E) のマニュアルページを参照してください。
カーネル端末エミュレータをサポートする SPARC ドライバは、tem-support DDI プロパティーをエクスポートします。このプロパティーは、そのドライバがカーネル端末エミュレータをサポートすることを示します。フレームバッファードライバが tem-support DDI プロパティーをエクスポートする場合、そのドライバは、コンソールの設定中のブートプロセス内の早い段階で処理されます。フレームバッファードライバが tem-support プロパティーをエクスポートしない場合、そのドライバは、ブートプロセス内の十分早い段階では処理されない可能性があります。
1 に設定されていると、この DDI プロパティーは、このドライバがコンソールのカーネルフレームバッファーインタフェースと互換性があることを示します。
カーネル端末エミュレータモジュールは、次の 2 つの主要なインタフェースを介してコンソールフレームバッファードライバと相互に作用します。
通常のシステム動作中に ioctl インタフェースを介して
スタンドアロンモード中に、ポーリングされた入出力インタフェースを介して
詳細については、次の節で説明します。