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

印刷ビューの終了

更新: 2014 年 9 月
 
 

構造体ハンドルの宣言と初期化

STRUCT_DECL(9F) STRUCT_INIT (9F) を使用すると、スタック上の ioctl をデコードするためのハンドルと領域を宣言して初期化できます。STRUCT_HANDLE(9F) STRUCT_SET_HANDLE (9F) は、スタック上の領域を割り当てることなくハンドルを宣言して初期化します。構造体が非常に大きいか、またはほかのデータ構造体に含まれている場合は、後者のマクロが役立つことがあります。


注 -  STRUCT_DECL(9F) マクロと STRUCT_HANDLE (9F) マクロはデータ構造体の宣言まで拡張されるため、これらのマクロは C コードでこのような宣言を使用してグループ化されます。

構造体を宣言して初期化するためのマクロは次のとおりです。

STRUCT_DECL(structname , handle)

structname データ構造体のための、handle という名前の構造体ハンドルを宣言します。STRUCT_DECL は、スタック上のネイティブ形式のための領域を割り当てます。ネイティブ形式は、構造体の ILP32 形式より大きいか、または等しいと見なされます。

STRUCT_INIT(handle, umodel)

handle のデータモデルを umodel に初期化します。このマクロは、STRUCT_DECL (9F) を使用して宣言された構造体ハンドルへの何らかのアクセスが行われる前に呼び出す必要があります。

STRUCT_HANDLE(structname , handle)

handle という名前の構造体ハンドルを宣言します。STRUCT_DECL (9F) と対比されます。

STRUCT_SET_HANDLE(handle, umodel, addr)

handle のデータモデルを umodel に初期化し、addr を以降の操作に使用されるバッファーとして設定します。このマクロは、 STRUCT_DECL(9F) を使用して宣言された構造体ハンドルへのアクセスの前に呼び出します。