ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
デバイスドライバの記述 Oracle Solaris 10 8/11 Information Library (日本語) |
パート I Solaris プラットフォーム用デバイスドライバの設計
64 ビットに対応したデバイスドライバに対する入出力制御のサポート
21. ドライバのコンパイル、ロード、パッケージ化、およびテスト
フレームバッファーなどの一部のデバイスには、メモリーマッピングを介してユーザースレッドから直接アクセス可能なメモリーがあります。これらのデバイスのドライバは通常、read(9E) インタフェースや write(9E) インタフェースをサポートしていません。代わりに、これらのドライバは、devmap(9E) エントリポイントによるメモリーマッピングをサポートしています。たとえば、フレームバッファードライバは、ユーザースレッドでフレームバッファーをマップできるようにするために devmap(9E) エントリポイントを実装する可能性があります。
devmap(9E) エントリポイントは、デバイスメモリーまたはカーネルメモリーをユーザーアプリケーションにエクスポートするために呼び出されます。devmap() 関数は、segmap(9E) の内部にある devmap_setup(9F) から、または ddi_devmap_segmap(9F) に代わって呼び出されます。
segmap(9E) エントリポイントは、mmap(2) システムコールから要求されたメモリーマッピングを設定する役割を担います。多くのメモリーマッピングデバイスに対応するドライバは、独自の segmap(9E) ルーチンを定義する代わりに、ddi_devmap_segmap(9F) をエントリポイントとして使用します。
詳細については、第 10 章デバイスメモリーおよびカーネルメモリーのマッピングおよび 第 11 章デバイスコンテキスト管理を参照してください。