Oracle® Solaris 11.2 デバイスドライバの記述

印刷ビューの終了

更新: 2014 年 9 月
 
 

USB クライアントドライバ

USBA 2.0 フレームワーク はデバイスドライバそのものではありません。この章では、Figure 20–1Figure 20–2 に示されているクライアントドライバについて説明します。クライアントドライバは、外部ストレージデバイスやプリンタ、ヒューマンインタフェースデバイスなど、さまざまな種類の USB デバイスと対話します。ハブドライバとは、ネクサスドライバでもあるクライアントドライバのことです。ハブドライバは、自身のポート上のデバイスを列挙し、それらのデバイスの devinfo ノードを作成したあと、クライアントドライバを接続します。この章では、ハブドライバの記述方法については説明しません。

USB ドライバは、その他のすべての Oracle Solaris ドライバと同じ構造を持っています。USB ドライバは、ブロックドライバ、文字ドライバ、STREAMS ドライバのいずれかになります。USB ドライバは、呼び出し規則に従うほか、Oracle Solaris OS セクション 9 のマニュアルページで説明されているデータ構造体とルーチンを使用します。Intro(9E)Intro(9F)、およびIntro(9S)を参照してください。

USB ドライバとほかの Oracle Solaris ドライバとの違いは、USB ドライバでは、デバイスに直接アクセスする代わりに USBA 2.0 フレームワーク 関数を呼び出してデバイスにアクセスする点にあります。USBA 2.0 フレームワーク は標準の Oracle Solaris DDI ルーチンを補足します。次の図を参照してください。

図 20-2  ドライバとコントローラのインタフェース

image:図は、DDI 関数と USBAI 関数、さまざまなバージョンの USBA フレームワーク、およびさまざまなタイプのホストコントローラを示しています。

Figure 20–2 は、インタフェースをFigure 20–1 よりも詳しく示したものです。Figure 20–2 は、クライアントドライバから DDI 関数を呼び出せるのとまったく同様に、USBA がクライアントドライバから呼び出し可能なカーネルサブシステムであることを示しています。

必ずしもすべてのシステムが、Figure 20–2 に示されたすべてのホストコントローラインタフェースを持つわけではありません。OHCI (オープンホストコントローラインタフェース) ハードウェアがもっとも普及しているのは、SPARC システムと他社製 USB PCI カードです。UHCI (ユニバーサルホストコントローラインタフェース) ハードウェアがもっとも普及しているのは、x86 システムです。ただし、OHCI、UHCI のどちらのハードウェアも任意のシステム上で使用できます。EHCI (拡張ホストコントローラインタフェース) ハードウェアが存在する場合、その EHCI ハードウェアは OHCI または UHCI と同じカード上に存在し、同じポートを共有します。

ホストコントローラ、ホストコントローラドライバ、および HCDI がトランスポート層を形成し、そのトランスポート層が USBA によって制御されます。OHCI、EHCI、または UHCI への呼び出しを直接行うことはできません。これらのインタフェースへの呼び出しは、プラットフォームに依存しない USBA インタフェース経由で間接的に行います。