调用 IOV_VALIDATE_PARAM() 的驱动程序的常规控制流程如下所述:
将 arg 参数发送到 pci_param_get_ioctl() 接口并获取指向 pci_param_t 结构的指针。
当 param 验证失败时,向 pv_reason 数组写入一个解释性的字符串。
依次调用 pci_get_plist() 接口和 pci_plist_lookup() 接口来获取设备参数。
在 PF plist 中查找 vfs 名称-值对以获取要针对此配置的验证而配置的 VF 的数量。驱动程序应使用长度至少为 16 位的整数数据类型查找 vfs 名称-值对。使用 pciv_plist_getvf() 接口获取 VF 设备的 plist 参数。
在不实际将参数应用于设备的情况下对参数进行验证。
在找到有效配置时返回 0。
注意 - 上述过程中验证的参数与设备的当前配置毫不相关。它们需要单独进行验证(假定它们可以进一步配置)。如果不单独进行验证,驱动程序应返回 DDI_EINVAL 来指示配置不正确。当发现了无效配置时,驱动程序还应在 iov_param_validate 结构的 pv_reason 字段中提供一个解释性字符串。此字符串会将配置失败的原因告知管理员。 |