JavaScript is required to for searching.
ナビゲーションリンクをスキップ
印刷ビューの終了
デバイスドライバの記述     Oracle Solaris 10 8/11 Information Library (日本語)
search filter icon
search icon

ドキュメントの情報

はじめに

パート I Solaris プラットフォーム用デバイスドライバの設計

1.  Solaris デバイスドライバの概要

2.  Solaris カーネルとデバイスツリー

3.  マルチスレッド

4.  プロパティー

5.  イベントの管理とタスクのキュー

6.  ドライバの自動設定

7.  デバイスアクセス: プログラム式入出力

8.  割り込みハンドラ

9.  ダイレクトメモリーアクセス (DMA)

10.  デバイスメモリーおよびカーネルメモリーのマッピング

11.  デバイスコンテキスト管理

12.  電源管理

13.  Solaris ドライバの強化

14.  階層化ドライバインタフェース (LDI)

パート II 特定の種類のデバイスドライバの設計

15.  文字デバイスのドライバ

16.  ブロックデバイスのドライバ

17.  SCSI ターゲットドライバ

18.  SCSI ホストバスアダプタドライバ

19.  ネットワークデバイスのドライバ

20.  USB ドライバ

パート III デバイスドライバの構築

21.  ドライバのコンパイル、ロード、パッケージ化、およびテスト

22.  デバイスドライバのデバッグ、テスト、およびチューニング

23.  推奨されるコーティング方法

パート IV 付録

A.  ハードウェアの概要

SPARC プロセッサの問題

SPARC のデータ割り当て

SPARC 構造体のメンバー割り当て

SPARC のバイト順序

SPARC のレジスタウィンドウ

SPARC の乗算命令と除算命令

x86 プロセッサの問題

x86 のバイト順序

x86 アーキテクチャーのマニュアル

エンディアン

ストアバッファー

システムのメモリーモデル

トータルストアオーダリング (TSO)

パーシャルストアオーダリング (PSO)

バスアーキテクチャー

デバイスの識別

サポートされている割り込みタイプ

バスの仕様

PCI ローカルバス

PCI アドレスドメイン

PCI 構成アドレス空間

PCI 構成基底アドレスレジスタ

PCI メモリーアドレス空間

PCI I/O アドレス空間

PCI ハードウェア構成ファイル

PCI Express

SBus

SBus の物理アドレス空間

物理 SBus アドレス

SBus のハードウェア構成ファイル

デバイスの問題

タイミングクリティカルセクション

遅延

内部順序付けロジック

割り込みの問題

SPARC マシンの PROM

Open Boot PROM 3

Forth コマンド

PROM デバイスツリーの調査

デバイスのマッピング

読み取りと書き込み

B.  Solaris DDI/DKI サービスの概要

C.  64 ビットデバイスドライバの準備

D.  コンソールフレームバッファードライバ

索引

エンディアン

マルチプラットフォーム、複数命令セットアーキテクチャーの互換性の目標を達成するために、ホストバス依存性がドライバから削除されました。依存性に関して最初に取り組むべき問題は、プロセッサのエンディアン、つまりバイト順序でした。たとえば、x86 プロセッサファミリはリトルエンディアンですが、SPARC アーキテクチャーはビッグエンディアンです。

バスアーキテクチャーにも、プロセッサと同じエンディアンのタイプがあります。たとえば、PCI ローカルバスはリトルエンディアン、SBus はビッグエンディアン、ISA バスはリトルエンディアン、などです。

プロセッサとバスの間の互換性を維持するために、DDI 準拠のドライバはエンディアンに関して中立である必要があります。ドライバは、実行時検査や、ソースコードの #ifdef _LITTLE_ENDIAN などのプリプロセッサ指令によって、エンディアンを管理できますが、長期的な保守がわずらわしくなる可能性があります。場合によっては、DDI フレームワークでソフトウェアを利用してバイトスワッピングを実行します。また、メモリー管理ユニット (MMU) の場合のようにハードウェアのページレベルスワッピングによって、または特別なマシン命令によって、バイトスワッピングを実行することもできます。DDI フレームワークでは、ハードウェアの機能を活用してパフォーマンスを向上させることができます。

図 A-1 ホストバス依存性に必要なバイト順序

image:図は、エンディアンを反転するバイトスワッピングを示しています。

互換性のあるドライバは、エンディアンに関して中立であるとともに、プロセッサのデータ順序から独立している必要もあります。ほとんどの環境では、ドライバが命令する順序でデータを転送する必要があります。ただし、次の図に示すように、データをマージしたり、バッチ処理したり、順序を変更したりして、データ転送を合理化できることもあります。たとえば、データマージを適用して、フレームバッファーでグラフィックス表示を高速化できます。ドライバは、転送時にほかの最適なデータ転送機構を使用するように DDI フレームワークに指示することもできます。

図 A-2 データ順序のホストバス依存性

image:図は、CPU によるバイトの順序変更を示しています。