Go to main content
Oracle® Solaris 11.3 デバイスドライバの記述

印刷ビューの終了

更新: 2016 年 11 月
 
 

コンソールの視覚的な入出力インタフェース

カーネル端末エミュレータは、次の 2 つのインタフェースを介してコンソールフレームバッファードライバと相互に作用します。通常のシステム動作中 (システムのブートが成功したあと)、カーネル端末エミュレータとコンソールフレームバッファードライバの間の通信は ioctl インタフェースを介して行われます。スタンドアロンモード中 (システムブートの前またはデバッグ中)、カーネル端末エミュレータとコンソールフレームバッファードライバの間の通信は、ポーリングされた入出力インタフェースを介して行われます。カーネル端末エミュレータとコンソールフレームバッファードライバの間のすべての動作は、カーネル端末エミュレータにビデオモードの変更を通知するためにコンソールフレームバッファードライバによって使用されるコールバック関数を除き、カーネル端末エミュレータによって開始されます。

コンソールの視覚的な入出力インタフェースについては、visual_io(7I) のマニュアルページに詳細が説明されています。ビデオモード変更コールバック関数の詳細については、ビデオモード変更コールバックインタフェースを参照してください。

入出力制御インタフェース

通常のシステム動作中、カーネル端末エミュレータは、次の表に示されている ioctl インタフェースを介してコンソールフレームバッファードライバと通信します。

ioctl の名前
対応するデータ構造体
説明
VIS_DEVINIT
vis_devinit
端末エミュレータモジュールとフレームバッファーの間のセッションを初期化します。VIS_DEVINITを参照してください。
VIS_DEVFINI
該当なし
端末エミュレータモジュールとフレームバッファーの間のセッションを終了します。VIS_DEFINIを参照してください。
VIS_CONSDISPLAY
vis_consdisplay
ピクセルを矩形として表示します。VIS_CONSDISPLAYを参照してください。
VIS_CONSCOPY
vis_conscopy
ピクセルの矩形をコピーします (スクロール)。VIS_CONSCOPYを参照してください。
VIS_CONSCURSOR
vis_conscursor
テキストカーソルの表示/非表示を切り替えますVIS_CONSCURSORを参照してください。
VIS_PUTCMAP
vis_cmap
端末エミュレータモジュールのカラーマップをフレームバッファードライバに送信します。VIS_PUTCMAPを参照してください。
VIS_GETCMAP
vis_cmap
端末エミュレータモジュールのカラーマップをフレームバッファーから読み取ります。VIS_GETCMAPを参照してください。

ポーリングされた入出力インタフェース

ポーリングされた入出力インタフェースは、VIS_CONSDISPLAY、VIS_CONSCOPY、および VIS_CONSCURSOR ioctl インタフェースと同じ機能を提供します。ポーリングされた入出力インタフェースは、オペレーティングシステムが休止状態にあり、かつスタンドアロンモードにある場合にのみ呼び出されます。詳細については、コンソールフレームバッファードライバでのポーリングされた入出力の実装を参照してください。

スタンドアロンモード中、カーネル端末エミュレータは、次の表に示されているポーリングされた入出力インタフェースを介してコンソールフレームバッファードライバと通信します。

ポーリングされた入出力関数
対応するデータ構造体
説明
(*display)()
vis_consdisplay
ピクセルを矩形として表示します。
(*copy)()
vis_conscopy
ピクセルの矩形をコピーします (スクロール)。
(*cursor)()
vis_conscursor
テキストカーソルの表示/非表示を切り替えます

ビデオモード変更コールバックインタフェース

コンソールフレームバッファードライバとカーネル端末エミュレータは、常にビデオモードに関して一致している必要があります。ビデオモードには、コンソール画面の高さ、幅、およびピクセルの深さが含まれます。ビデオモードにはまた、カーネル端末エミュレータとコンソールフレームバッファーの間の通信が VGA テキストモードまたはピクセルモードのどちらになっているかも含まれます。

コンソールフレームバッファードライバがカーネル端末エミュレータにビデオモードの変更を通知するために、コンソールフレームバッファードライバは、次の表で説明されている (*modechg_cb)() カーネル端末エミュレータコールバック関数のアドレスで初期化されます。

コールバック関数
対応するデータ構造体
説明
(*modechg_cb)()
vis_modechg_arg
vis_devinit
端末エミュレータモジュールとドライバのビデオモード (画面の高さ、幅、およびピクセルの深さ) との同期を維持します。