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

ドキュメントの情報

はじめに

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

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

2.  Oracle 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.  Oracle Solaris ドライバの強化

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

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

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

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

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

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

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

20.  USB ドライバ

21.  SR-IOV ドライバ

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

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

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

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

パート IV 付録

A.  ハードウェアの概要

B.  Oracle Solaris DDI/DKI サービスのサマリー

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

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

E.  pci.conf ファイル

索引

ドキュメントの品質向上のためのご意見をください
簡潔すぎた
読みづらかった、または難し過ぎた
重要な情報が欠けていた
内容が間違っていた
翻訳版が必要
その他
Your rating has been updated
貴重なご意見を有り難うございました!

あなたの貴重なご意見はより良いドキュメント作成の手助けとなります 内容の品質向上と追加コメントのためのアンケートに参加されますか?

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

システムは、ドライバのバイナリモジュールを、自動構成のためのカーネルモジュールディレクトリの 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:この図は、自動構成とモジュールのロードで使用される構造体とエントリポイントを示しています。