次の各セクションでは、ioctl を実装する前に PF ドライバで定義および初期化しておくべきデータ構造体を示します。
iov_param_ver_info 構造体は次のように定義されています。
#define IOV_IOCTL (('I' << 24) | ('O' << 16) | ('V' << 8)) #define IOV_GET_VER_INFO (IOV_IOCTL | 0) #define IOV_GET_PARAM_INFO (IOV_IOCTL | 1) #define IOV_VALIDATE_PARAM (IOV_IOCTL | 2) #define IOV_PARAM_DESC_VERSION 1
iov_param_ver_info 構造体には次のフィールドが含まれています。
typedef struct iov_param_ver_info { uint32_t version; uint32_t num_params; } iov_param_ver_info_t;
ここでは:
バージョン情報
パラメータの数
iov_param_validate 構造体は次のように定義されています。
#define IOV_IOCTL (('I' << 24) | ('O' << 16) | ('V' << 8)) #define IOV_GET_VER_INFO (IOV_IOCTL | 0) #define IOV_GET_PARAM_INFO (IOV_IOCTL | 1) #define IOV_VALIDATE_PARAM (IOV_IOCTL | 2) #define IOV_PARAM_DESC_VERSION 1
iov_param_validate には次のフィールドが含まれています。
typedef struct iov_param_validate { char pv_reason[MAX_REASON_LEN + 1]; int32_t pv_buflen; /* encoded buffer containing params */ char pv_buf[1]; /* size of buf is pv_buflen */ } iov_param_validate_t;
ここでは:
ioctl コールが失敗した場合の失敗理由を説明する ASCII 文字列。
バッファー pv_buf の長さ
パラメータを含むバッファー
iov_param_desc 構造体は次のように定義されています。
#define IOV_IOCTL (('I' << 24) | ('O' << 16) | ('V' << 8)) #define IOV_GET_VER_INFO (IOV_IOCTL | 0) #define IOV_GET_PARAM_INFO (IOV_IOCTL | 1) #define IOV_VALIDATE_PARAM (IOV_IOCTL | 2) #define IOV_PARAM_DESC_VERSION 1
構造体 iov_param_desc には次のフィールドが含まれています。
typedef struct iov_param_desc { char pd_name[MAX_PARAM_NAME_SIZE]; char pd_desc[MAX_PARAM_DESC_SIZE]; int32_t pd_flag; /* applicable for PF or VF or both */ int32_t pd_data_type; /* integer, string, plist */ /* Following 3 are applicable for integer data types */ uint64_t pd_default_value; uint64_t pd_min64; uint64_t pd_max64; char pd_default_string [MAX_PARAM_DEFAULT_STRING_SIZE]; } iov_param_desc_t;
ここでは:
ldm (1M) コマンド内または pci.conf ファイル内で、パラメータに値を割り当てるために使用されます。
パラメータの簡易説明。
パラメータの適用対象が、PF のみ、VF のみ、PF と VF の両方のいずれであるかを示します。
ldm() コマンドや pci.conf ファイルでパラメータが指定されていない場合にドライバによって割り当てられる値。
整数パラメータの値の最小範囲を指定します。
整数パラメータの値の最大範囲を指定します。
パラメータが文字列の場合に使用されるデフォルト文字列を指定します。