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.  ドライバの自動設定

ドライバのロードとアンロード

ドライバに必要なデータ構造体

modlinkage 構造体

modldrv 構造体

dev_ops 構造体

cb_ops 構造体

ロード可能なドライバインタフェース

_init() の例

_fini() の例

_info() の例

デバイス設定の概念

デバイスインスタンスとインスタンス番号

マイナーノードとマイナー番号

probe() エントリポイント

attach() エントリポイント

ドライバのソフト状態管理

ロック変数と条件変数の初期化

マイナーデバイスノードの作成

遅延接続

detach() エントリポイント

getinfo() エントリポイント

デバイス ID の使用

デバイス ID の登録

デバイスによって提供された ID の登録

組み立てられた ID の登録

デバイス ID の登録解除

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.  ハードウェアの概要

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

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

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

索引

ドライバのロードとアンロード

システムは、ドライバのバイナリモジュールを、自動設定のためのカーネルモジュールディレクトリの drv サブディレクトリからロードします。「モジュールディレクトリへのドライバのコピー」を参照してください。

モジュールが、解決されたすべてのシンボルとともにメモリーに読み取られたあと、システムはそのモジュールの _init(9E) エントリポイントを呼び出します。_init() 関数は、そのモジュールを実際にロードする mod_install(9F) を呼び出します。


注 - mod_install() の呼び出し中、ほかのスレッドは、mod_install() が呼び出されるとすぐに attach(9E) を呼び出すことができます。プログラミングの観点からは、mod_install() が呼び出される前に、_init() によるすべての初期化が実行される必要があります。mod_install() が失敗した (つまり、ゼロ以外の値が返された) 場合は、その初期化をバックアウトする必要があります。


_init() が正常に完了すると、そのドライバはシステムに正常に登録されています。この時点では、そのドライバはどのデバイスもアクティブに管理していません。デバイス管理は、デバイス設定の一部として実行されます。

システムは、システムメモリーを節約するため、またはユーザーからの明示的な要求によってドライバのバイナリモジュールをアンロードします。ドライバのコードとデータをメモリーから削除する前に、そのドライバの _fini(9E) エントリポイントが呼び出されます。ドライバがアンロードされるのは、_fini() が成功を返した場合だけです。

次の図は、デバイスドライバの構造的な概要を示しています。陰付きの領域は、ドライバのデータ構造体とエントリポイントを強調しています。陰付きの領域の上半分には、ドライバのロードとアンロードをサポートするデータ構造体とエントリポイントが含まれています。下半分は、ドライバの設定に関連しています。

図 6-1 モジュールのロードと自動設定のエントリポイント

image:この図は、自動設定とモジュールのロードで使用される構造体とエントリポイントを示しています。