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 ホストバスアダプタドライバ

ホストバスアダプタドライバの概要

SCSI インタフェース

SCSA HBA インタフェース

SCSA HBA エントリポイントの概要

SCSA HBA データ構造体

scsi_hba_tran() 構造体

scsi_address 構造体

scsi_device 構造体

scsi_pkt 構造体 (HBA)

ターゲットインスタンスごとのデータ

トランスポート構造体の複製

SCSA HBA 関数

HBA ドライバの依存性と設定に関する問題

宣言と構造体

コマンド別構造体

モジュール初期化用のエントリポイント

_init() エントリポイント (SCSI HBA ドライバ)

_fini() エントリポイント (SCSI HBA ドライバ)

自動設定のエントリポイント

attach() エントリポイント (SCSI HBA ドライバ)

detach() エントリポイント (SCSI HBA ドライバ)

SCSA HBA ドライバのエントリポイント

ターゲットドライバインスタンスの初期化

tran_tgt_init() エントリポイント

tran_tgt_probe() エントリポイント

tran_tgt_free() エントリポイント

資源割り当て

tran_init_pkt() エントリポイント

scsi_pkt(9S) 構造体の割り当てと初期化

DMA 資源の割り当て

データ転送のための DMA 資源の再割り当て

tran_destroy_pkt() エントリポイント

tran_sync_pkt() エントリポイント

tran_dmafree() エントリポイント

コマンドのトランスポート

tran_start() エントリポイント

割り込みハンドラとコマンドの完了

タイムアウトハンドラ

機能管理

tran_getcap() エントリポイント

tran_setcap() エントリポイント

中止およびリセット管理

tran_abort() エントリポイント

tran_reset() エントリポイント

tran_bus_reset() エントリポイント

tran_reset_notify() エントリポイント

動的再構成 (DR)

SCSI HBA ドライバに固有の問題

HBA ドライバのインストール

HBA の設定プロパティー

scsi-reset-delay プロパティー

scsi-options プロパティー

ターゲットごとの scsi-options

x86 ターゲットドライバの設定プロパティー

キューイングのサポート

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

20.  USB ドライバ

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

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

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

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

パート IV 付録

A.  ハードウェアの概要

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

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

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

索引

SCSI インタフェース

SCSA は、ターゲットドライバからホストアダプタドライバに SCSI コマンドを転送するための DDI/DKI プログラミングインタフェースです。SCSA に従うことで、ターゲットドライバは SCSI コマンドとシーケンスのどのような組み合わせでも簡単にターゲットデバイスに渡すことができます。ホストアダプタのハードウェア実装の知識は必要ありません。概念上、SCSA は SCSI コマンドを構築することと、データとともにコマンドを SCSI バスにトランスポートすることを区別しています。SCSA は、次の図に示すように、HBA トランスポート層を通じて、ターゲットドライバと HBA ドライバ間の接続を管理します。

図 18-1 SCSA インタフェース

image:図は、ターゲットドライバと SCSI デバイスの間にあるホストバスアダプタのトランスポート層を示しています。

HBA トランスポート層は、SCSI コマンドの SCSI ターゲットデバイスへのトランスポートを担当するソフトウェアとハードウェアの層です。HBA ドライバは、SCSA 経由で SCSI ターゲットドライバが発行する要求に応えて、資源の割り当て、DMA 管理、およびトランスポートの各サービスを提供します。また、コマンドの実行に必要なホストアダプタハードウェアと SCSI プロトコルの管理も行います。コマンドが完了すると、HBA ドライバはターゲットドライバの SCSI pkt コマンド完了ルーチンを呼び出します。

次の例は、ターゲットドライバから SCSA、さらに HBA ドライバへの転送に重点を置いて、この流れを示しています。この図には、一般的なトランスポートのエントリポイントと関数呼び出しも示されています。

図 18-2 トランスポート層の流れ

image:図は、HBA トランスポート層を経由してコマンドがどのようにトランスポートされるかを示しています。