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.  ドライバのコンパイル、ロード、パッケージ化、およびテスト

ドライバ開発の概要

ドライバコードの配置

ヘッダーファイル

ソースファイル

設定ファイル

ドライバインストールの準備

ドライバのコンパイルとリンク

モジュールの依存関係

ハードウェア設定ファイルの記述

ドライバのインストール、更新、および削除

モジュールディレクトリへのドライバのコピー

add_drv を使用したドライバのインストール

ドライバ情報の更新

ドライバの削除

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

ドライバのパッケージ化

パッケージのインストール後処理

パッケージの削除前処理

デバイステストの条件

設定のテスト

機能テスト

エラー処理

ロードとアンロードのテスト

ストレス、パフォーマンス、および相互運用性のテスト

DDI/DKI コンプライアンスのテスト

インストールとパッケージ化のテスト

特定の種類のドライバのテスト

テープドライバ

ディスクドライバ

非同期通信ドライバ

ネットワークドライバ

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

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

パート IV 付録

A.  ハードウェアの概要

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

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

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

索引

ドライバのインストール、更新、および削除

ドライバを使用する前に、ドライバが存在することをシステムに通知する必要があります。add_drv(1M) ユーティリティーを使用して、デバイスドライバを正しくインストールする必要があります。ドライバがインストールされたら、add_drv コマンドを使用せずに、メモリーからそのドライバをロードおよびアンロードできます。

モジュールディレクトリへのドライバのコピー

デバイスドライバモジュールのパスは次の 3 つの条件によって決まります。

デバイスドライバは次の場所に置かれます。

/platform/`uname -i`/kernel/drv

特定のプラットフォームでのみ実行される 32 ビットドライバが格納されます。

/platform/`uname -i`/kernel/drv/sparcv9

特定の SPARC ベースのプラットフォームでのみ実行される 64 ビットドライバが格納されます。

/platform/`uname -i`/kernel/drv/amd64

特定の x86 ベースのプラットフォームでのみ実行される 64 ビットドライバが格納されます。

/platform/`uname -m`/kernel/drv

特定ファミリのプラットフォームでのみ実行される 32 ビットドライバが格納されます。

/platform/`uname -m`/kernel/drv/sparcv9

特定ファミリの SPARC ベースのプラットフォームでのみ実行される 64 ビットドライバが格納されます。

/platform/`uname -m`/kernel/drv/amd64

特定ファミリの x86 ベースのプラットフォームでのみ実行される 64 ビットドライバが格納されます。

/usr/kernel/drv

プラットフォームに依存しない 32 ビットドライバが格納されます。

/usr/kernel/drv/sparcv9

プラットフォームに依存しない、SPARC ベースのシステムの 64 ビットドライバが格納されます。

/usr/kernel/drv/amd64

プラットフォームに依存しない、x86 ベースのシステムの 64 ビットドライバが格納されます。

32 ビットドライバをインストールするには、モジュールパスの drv ディレクトリにドライバと設定ファイルをコピーする必要があります。たとえば、ドライバを /usr/kernel/drv にコピーするには、次のように入力します。

$ su
# cp xx /usr/kernel/drv
# cp xx.conf /usr/kernel/drv

SPARC ドライバをインストールするには、モジュールパスの drv/sparcv9 ディレクトリにドライバをコピーします。ドライバ設定ファイルは、モジュールパスの drv ディレクトリにコピーします。たとえば、ドライバを /usr/kernel/drv にコピーするには、次のように入力します。

$ su
# cp xx /usr/kernel/drv/sparcv9
# cp xx.conf /usr/kernel/drv

64 ビット x86 ドライバをインストールするには、モジュールパスの drv/amd64 ディレクトリにドライバをコピーします。ドライバ設定ファイルは、モジュールパスの drv ディレクトリにコピーします。たとえば、ドライバを /usr/kernel/drv にコピーするには、次のように入力します。

$ su
# cp xx /usr/kernel/drv/amd64
# cp xx.conf /usr/kernel/drv

注 - すべてのドライバ設定ファイル (.conf ファイル) はモジュールパスの drv ディレクトリに入れる必要があります。.conf ファイルを drv ディレクトリのサブディレクトリ内に入れることはできません。


add_drv を使用したドライバのインストール

ドライバをシステムにインストールするには、add_drv(1M) コマンドを使用します。ドライバが正しくインストールされると、 add_drvdevfsadm(1M) を実行し、/dev ディレクトリ内に論理名が作成されます。

# add_drv xx

この場合、デバイスが自身を xx だと識別します。デバイスの特殊ファイルにはデフォルトの所有権とアクセス権があります (0600 root sys)。add_drv コマンドでは、デバイスの追加の名前 (別名) を指定することもできます。別名を追加すること、およびファイルのアクセス許可を明示的に設定することについては、add_drv(1M) のマニュアルページを参照してください。


注 - add_drv コマンドを使用して STREAMS モジュールをインストールしないでください。詳細については、『STREAMS Programming Guide 』を参照してください。


ドライバが、ディスク、テープ、ポートなどの端末デバイスを表さないマイナーノードを作成する場合、devfsadm/dev 内に論理デバイス名を作成するように /etc/devlink.tab を変更できます。別の方法として、ドライバのインストール時に実行されるプログラムで論理名を作成できます。

ドライバ情報の更新

インストールされているデバイスドライバに対する変更をシステムに通知するには、update_drv(1M) コマンドを使用します。デフォルトでは、システムはドライバ設定ファイルを再度読み込み、ドライバのバイナリモジュールを再ロードます。

ドライバの削除

ドライバをシステムから削除するには、rem_drv(1M) コマンドを使用し、次にモジュールパスから、ドライバモジュールと設定ファイルを削除します。add_drv(1M) を使用してドライバを再インストールするまで、ドライバを再使用することはできません。SCSI HBA ドライバの削除を有効にするにはリブートする必要があります。