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

ドキュメントの情報

はじめに

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

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

デバイスドライバの基本

デバイスドライバとは

デバイスドライバのエントリポイントとは

デバイスドライバのエントリポイント

すべてのドライバに共通のエントリポイント

デバイスアクセスのエントリポイント

ロード可能なモジュールのエントリポイント

自動構成のエントリポイント

カーネル統計情報のエントリポイント

電源管理のエントリポイント

システム休止のエントリポイント

共通のエントリポイントのサマリー

ブロックデバイスドライバ用のエントリポイント

文字デバイスドライバ用のエントリポイント

STREAMS デバイスドライバ用のエントリポイント

メモリーマッピングされたデバイス用のエントリポイント

ネットワークデバイスドライバ用のエントリポイント

SCSI HBA ドライバ用のエントリポイント

PC カードドライバ用のエントリポイント

デバイスドライバの設計上の考慮事項

DDI/DKI の機能

デバイス ID

デバイスプロパティー

割り込み処理

コールバック関数

ソフトウェアの状態管理

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

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

階層化ドライバインタフェース

ドライバコンテキスト

エラーの出力

動的メモリー割り当て

ホットプラグによる取り付け

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

3.  マルチスレッド

4.  プロパティー

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

6.  ドライバの自動構成

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
貴重なご意見を有り難うございました!

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

デバイスドライバの基本

このセクションでは、Oracle Solaris プラットフォームでのデバイスドライバとそのエントリポイントについて説明します。

デバイスドライバとは

デバイスドライバとは、ハードウェアデバイスの低レベルの入出力操作を管理するカーネルモジュールのことです。デバイスドライバは、カーネルがデバイスとのインタフェースを取るために呼び出すことのできる標準的なインタフェースで書かれています。また、デバイスドライバをソフトウェア専用にして、RAM ディスク、バス、擬似端末など、ソフトウェアでのみ存在するデバイスをエミュレートすることもできます。

デバイスドライバには、デバイスとの通信に必要なデバイス固有のすべてのコードが含まれています。このコードには、システムの残りの部分へのインタフェースの標準セットが含まれています。このインタフェースは、システムコールインタフェースがアプリケーションプログラムをプラットフォーム固有の詳細から保護するように、カーネルをデバイス固有の詳細から遮蔽します。アプリケーションプログラムやカーネルの残りの部分では、デバイスに対応するためのデバイス固有のコードがたとえあったとしても、ほとんど必要ありません。このような点で、デバイスドライバはシステムの移植性を高め、システムの保守を容易にします。

Oracle Solaris オペレーティングシステム (Oracle Solaris OS) が初期化されると、デバイスは自らを識別し、デバイスの階層であるデバイスツリーに編成されます。実際には、デバイスツリーはカーネルのハードウェアモデルです。ツリー内では、個々のデバイスドライバは子を持たないノードで表されます。このようなノードは、リーフドライバと呼ばれます。ほかのドライバにサービスを提供するドライバはバスネクサスドライバと呼ばれ、子を持つノードで表されます。ブートプロセスの一環として、物理デバイスがツリー内のドライバにマップされるため、必要なときにそれらのドライバを特定できるようになります。Oracle Solaris OS によるデバイスへの対応の仕方についての詳細は、第 2 章Oracle Solaris カーネルとデバイスツリーを参照してください。

デバイスドライバは入出力の処理方法によって分類されます。デバイスドライバは 3 つの大まかなカテゴリに分類されます。

デバイスドライバのエントリポイントとは

エントリポイントとは、なんらかのドライバ機能を利用したり、デバイスを操作したりするために外部エンティティーから呼び出すことができるデバイスドライバ内の関数のことです。各デバイスドライバには、エントリポイントとして関数の標準セットが用意されています。すべてのドライバタイプ用のエントリポイントの一覧については、Intro(9E) のマニュアルページを参照してください。Oracle Solaris カーネルでは、次の一般的なタスク領域でエントリポイントを使用します。

各種デバイスのドライバには、デバイスが実行する処理の種類に応じてさまざまなエントリポイントのセットがあります。たとえば、メモリーマッピングされた文字指向デバイスは devmap(9E) エントリポイントをサポートしますが、ブロックドライバはこのエントリをサポートしません。

ドライバ関数に一意の名前を付けるには、ドライバの名前に基づく接頭辞を使用します。通常、この接頭辞はドライバの名前になります。たとえば、xx_open() はドライバ xxopen(9E) ルーチンを表しています。詳細は、「一意の接頭辞を使用してカーネルシンボルの衝突を回避する」を参照してください。このドキュメントの以降の例では、xx をドライバ接頭辞として使用します。