提交 ae951e72 编写于 作者: J Jiri Denemark

Add virDomainDefFindDevice for looking up a device by its alias

上级 1f71de59
...@@ -18314,3 +18314,44 @@ virDomainDiskDefGenSecurityLabelDef(const char *model) ...@@ -18314,3 +18314,44 @@ virDomainDiskDefGenSecurityLabelDef(const char *model)
return seclabel; return seclabel;
} }
typedef struct {
const char *devAlias;
virDomainDeviceDefPtr dev;
} virDomainDefFindDeviceCallbackData;
static int
virDomainDefFindDeviceCallback(virDomainDefPtr def ATTRIBUTE_UNUSED,
virDomainDeviceDefPtr dev,
virDomainDeviceInfoPtr info,
void *opaque)
{
virDomainDefFindDeviceCallbackData *data = opaque;
if (STREQ_NULLABLE(info->alias, data->devAlias)) {
*data->dev = *dev;
return -1;
}
return 0;
}
int
virDomainDefFindDevice(virDomainDefPtr def,
const char *devAlias,
virDomainDeviceDefPtr dev)
{
virDomainDefFindDeviceCallbackData data = { devAlias, dev };
dev->type = VIR_DOMAIN_DEVICE_NONE;
virDomainDeviceInfoIterateInternal(def, virDomainDefFindDeviceCallback,
true, &data);
if (dev->type == VIR_DOMAIN_DEVICE_NONE) {
virReportError(VIR_ERR_INTERNAL_ERROR,
_("no device found with alias %s"), devAlias);
return -1;
}
return 0;
}
...@@ -2688,4 +2688,8 @@ virDomainDefMaybeAddController(virDomainDefPtr def, ...@@ -2688,4 +2688,8 @@ virDomainDefMaybeAddController(virDomainDefPtr def,
char *virDomainDefGetDefaultEmulator(virDomainDefPtr def, virCapsPtr caps); char *virDomainDefGetDefaultEmulator(virDomainDefPtr def, virCapsPtr caps);
int virDomainDefFindDevice(virDomainDefPtr def,
const char *devAlias,
virDomainDeviceDefPtr dev);
#endif /* __DOMAIN_CONF_H */ #endif /* __DOMAIN_CONF_H */
...@@ -154,6 +154,7 @@ virDomainDefClearDeviceAliases; ...@@ -154,6 +154,7 @@ virDomainDefClearDeviceAliases;
virDomainDefClearPCIAddresses; virDomainDefClearPCIAddresses;
virDomainDefCompatibleDevice; virDomainDefCompatibleDevice;
virDomainDefCopy; virDomainDefCopy;
virDomainDefFindDevice;
virDomainDefFormat; virDomainDefFormat;
virDomainDefFormatInternal; virDomainDefFormatInternal;
virDomainDefFree; virDomainDefFree;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册