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

印刷ビューの終了

更新: 2014 年 9 月
 
 

GLDv2 ネットワークデバイスドライバフレームワーク

GLDv2 は、ローカルエリアネットワーク用のデバイスドライバをサポートする、マルチスレッド化された、ロード可能かつ複製可能なカーネルモジュールです。Oracle Solaris OS のローカルエリアネットワーク (LAN) デバイスドライバは、Data Link Provider Interface (DLPI) を使用してネットワークプロトコルスタックと通信する STREAMS ベースのドライバです。これらのプロトコルスタックは、ネットワークドライバを使用して LAN 上でパケットを送受信します。GLDv2 では、STREAMS および DLPI の機能のうち、Oracle Solaris LAN ドライバのためのほとんどの機能を実装しています。GLDv2 は、多くのネットワークドライバで共有可能な共通コードを提供します。GLDv2 を使用することで、コードの重複が減少し、ネットワークドライバが簡素化されます。

GLDv2 の詳細は、gld(7D) のマニュアルページを参照してください。

STREAMS ドライバについては、Part II, Kernel Interface, in STREAMS Programming Guide に記載されています。特に、STREAMS ガイドの第 9 章「STREAMS Drivers」を参照してください。STREAMS フレームワークはメッセージベースのフレームワークです。STREAMS ドライバ固有のインタフェースには、STREAMS メッセージキュー処理エントリポイントが含まれています。

DLPI は、OSI 参照モデルのデータリンク層のデータリンクサービス (DLS) に対するインタフェースの仕様を定義します。DLPI により、DLS ユーザーは DLS プロバイダのプロトコルについて特別な知識がなくても、仕様に準拠した各種 DLS プロバイダにアクセスして利用できます。DLPI では、M_PROTO および M_PCPROTO タイプの STREAMS メッセージを利用して DLS プロバイダにアクセスする仕様が定められています。DLPI モジュールは、STREAMS ioctl 呼び出しを使用して MAC 下位層にリンクします。Oracle Solaris 固有の DLPI 拡張機能を含む DLPI プロトコルの詳細は、dlpi (7P) のマニュアルページを参照してください。DLPI 全般に関する情報は、DLPI 標準 (http://www.opengroup.org/pubs/catalog/c811.htm) を参照してください。

    GLDv2 を使用して実装される Oracle Solaris ネットワークドライバは、次の 2 つの部分に分けることができます。

  • 汎用コンポーネント。STREAMS および DLPI インタフェースを扱います。

  • デバイス固有コンポーネント。特定のハードウェアデバイスを扱います。

    • misc/gld への依存性とリンクすることにより、GLDv2 モジュールへのドライバの依存性を示します。GLDv2 モジュールの場所は、SPARC システムでは /kernel/misc/sparcv9/gld、64 ビット x86 システムでは /kernel/misc/amd64/gld、32 ビット x86 システムでは /kernel/misc/gld です。

    • GLDv2 への登録: ドライバはその attach (9E) エントリポイントで、ドライバのほかのエントリポイントへのポインタを GLDv2 に知らせます。GLDv2 はこれらのポインタを使用して、 gld(9E) エントリポイントを呼び出します。

    • gld(9F) 関数を呼び出して、データを処理したり、ほかの GLDv2 サービスを利用したりします。gld_mac_info(9S) 構造体は、GLDv2 とデバイス固有ドライバ間のプライマリデータインタフェースです。

GLDv2 ドライバは、完全形式の MAC 層パケットを処理する必要があり、論理リンク制御 (LLC) 処理を実行してはなりません。