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

印刷ビューの終了

更新: 2014 年 9 月
 
 

ddi_device_acc_attr 構造体

この構造体は、デバイスのエンディアン要件とデータ順序要件を記述します。ドライバは、この構造体を初期化し、ddi_regs_map_setup(9F) の引数として渡す必要があります。

typedef struct ddi_device_acc_attr {
    ushort_t    devacc_attr_version;
    uchar_t     devacc_attr_endian_flags;
    uchar_t     devacc_attr_dataorder;
} ddi_device_acc_attr_t;
devacc_attr_ version

DDI_DEVICE_ATTR_V0 を指定します。

devacc_attr_ endian_flags

デバイスのエンディアン特性を記述します。ビット値として指定され、使用可能な値は次のとおりです。

  • DDI_NEVERSWAP_ACC – データのスワップを一切行わない

  • DDI_STRUCTURE_BE_ACC – デバイスのデータ形式がビッグエンディアンである

  • DDI_STRUCTURE_LE_ACC – デバイスのデータ形式がリトルエンディアンである

devacc_attr_dataorder

CPU がデバイスから要求されたデータを参照する際に従うべき順序を記述します。列挙値として指定されます。ただし、データアクセス制限は、厳格度の高いものから順に並べられます。

  • DDI_STRICTORDER_ACC – ホストは、プログラマによって指定された順番で参照を発行する必要があります。このフラグがデフォルトの動作です。

  • DDI_UNORDERED_OK_ACC – ホストは、デバイスメモリーに対するロードや格納の順序を変更できます。

  • DDI_MERGING_OK_ACC – ホストは、個々の格納をマージして連続する場所にまとめることができます。この設定では暗黙的に順序変更も許可されます。

  • DDI_LOADCACHING_OK_ACC – 格納が発生するまで、ホストはデバイスからデータを読み取ることができます。

  • DDI_STORECACHING_OK_ACC – ホストは、デバイスに書き込むデータをキャッシュに格納しておくことができます。このときホストは、デバイスへのデータ書き込みを、将来必要になるまで遅らせることができます。


注 - システムは、ドライバで devacc_attr_dataorder に指定されているよりも厳格に、データへのアクセスを行うことができます。厳格なデータ順序付けからキャッシュ格納へと移る間、ドライバによるデータアクセスに関してホストの制限が小さくなります。