この構造体は、デバイスのエンディアン要件とデータ順序要件を記述します。ドライバは、この構造体を初期化し、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;
DDI_DEVICE_ATTR_V0 を指定します。
デバイスのエンディアン特性を記述します。ビット値として指定され、使用可能な値は次のとおりです。
DDI_NEVERSWAP_ACC – データのスワップを一切行わない
DDI_STRUCTURE_BE_ACC – デバイスのデータ形式がビッグエンディアンである
DDI_STRUCTURE_LE_ACC – デバイスのデータ形式がリトルエンディアンである
CPU がデバイスから要求されたデータを参照する際に従うべき順序を記述します。列挙値として指定されます。ただし、データアクセス制限は、厳格度の高いものから順に並べられます。
DDI_STRICTORDER_ACC – ホストは、プログラマによって指定された順番で参照を発行する必要があります。このフラグがデフォルトの動作です。
DDI_UNORDERED_OK_ACC – ホストは、デバイスメモリーに対するロードや格納の順序を変更できます。
DDI_MERGING_OK_ACC – ホストは、個々の格納をマージして連続する場所にまとめることができます。この設定では暗黙的に順序変更も許可されます。
DDI_LOADCACHING_OK_ACC – 格納が発生するまで、ホストはデバイスからデータを読み取ることができます。
DDI_STORECACHING_OK_ACC – ホストは、デバイスに書き込むデータをキャッシュに格納しておくことができます。このときホストは、デバイスへのデータ書き込みを、将来必要になるまで遅らせることができます。