Go to main content
Oracle® Solaris 11.3 デバイスドライバの記述

印刷ビューの終了

更新: 2016 年 11 月
 
 

ドライバコードの配置

    デバイスドライバのコードは通常、次のファイルに分割されます。

  • ヘッダーファイル (.h ファイル)

  • ソースファイル (.c ファイル)

  • オプション構成ファイル (driver.conf ファイル)

ヘッダーファイル

    ヘッダーファイルには次の定義が記述されています。

  • デバイス固有のデータ構造体 (デバイスレジスタを表す構造など)

  • ドライバによって定義された、状態情報を維持管理するためのデータ構造体

  • 定義済みの定数 (デバイスレジスタのビットを表す定数など)

  • マクロ (マイナーデバイス番号とインスタンス番号の間の静的マッピングを定義するマクロなど)

状態構造体など、ヘッダーファイルの定義の一部は、デバイスドライバでのみ必要になることがあります。この情報はデバイスドライバ自体によってのみ含められる private ヘッダーファイルに入れる必要があります。

入出力制御コマンドなど、アプリケーションが必要とすることがある情報はすべて、public ヘッダーファイルに含める必要があります。これらのファイルはドライバと、デバイスに関する情報を必要とするすべてのアプリケーションによって含められます。

private ファイルと public ファイルの命名に関する標準はありませんが、private ヘッダーファイルの場合は xximpl.h とし、public ヘッダーファイルの場合は xxio.h とするのが命名規則の 1 つです。

ソースファイル

    デバイスドライバの C ソースファイル (.c ファイル) は次のことを行います。

  • データ宣言と、ドライバのエントリポイントのコードを格納します。

  • ドライバに必要な #include 文を格納します。

  • extern 参照を宣言します。

  • ローカルデータを宣言します。

  • cb_ops 構造体と dev_ops 構造体を設定します。

  • モジュール構成のセクション、つまり modlinkage(9S) 構造体と modldrv(9S) 構造体を宣言して初期化します

  • その他に必要なすべての宣言を行います。

  • ドライバのエントリポイントを定義します。

構成ファイル

一般に、ドライバの構成ファイルでは、ドライバが必要とするすべてのプロパティーが定義されます。ドライバ構成ファイルのエントリは、存在するかどうかをドライバが調べる可能性があるデバイスインスタンスを指定します。ドライバのグローバルプロパティーはドライバの設定ファイル内で設定できます。詳細については、driver.conf(4) のマニュアルページを参照してください。

ドライバ構成ファイルは、自己識別型ではないデバイスのために必要です。

自己識別デバイス (SID) については、ドライバ構成ファイルをオプションです。自己識別デバイスの場合、SID ノードにプロパティーを追加するために構成ファイルを使用できます。

    次のプロパティーは、ドライバ設定ファイルで設定されないプロパティーの例です。

  • 周辺機器用の SBus バスを使用するドライバは通常、SBus カードからプロパティー情報を取得します。追加のプロパティーが必要な場合、 sbus (4) で定義されているプロパティーをドライバ構成ファイルに含めることができます。

  • PCI バスのプロパティーは通常、PCI 構成スペースから派生できます。private ドライバのプロパティーが必要な場合は、pci(4) で定義されているプロパティーをドライバ構成ファイルに含めることができます。

  • ISA バス上のドライバは、isa(4) で定義されている追加のプロパティーを使用できます。