mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-07 17:28:15 +00:00
conf: Introduce virDomainDeviceGetInfo API
The offset of virDomainDeviceInfo structure within a device definition varies with device type and some types do not contain the info structure at all. This new API makes it easier to access the info structure from a generic virDomainDeviceDef structure. Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
This commit is contained in:
parent
1c13166134
commit
563a12b346
@ -2565,6 +2565,53 @@ int virDomainDeviceAddressIsValid(virDomainDeviceInfoPtr info,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
virDomainDeviceInfoPtr
|
||||||
|
virDomainDeviceGetInfo(virDomainDeviceDefPtr device)
|
||||||
|
{
|
||||||
|
switch ((virDomainDeviceType) device->type) {
|
||||||
|
case VIR_DOMAIN_DEVICE_DISK:
|
||||||
|
return &device->data.disk->info;
|
||||||
|
case VIR_DOMAIN_DEVICE_FS:
|
||||||
|
return &device->data.fs->info;
|
||||||
|
case VIR_DOMAIN_DEVICE_NET:
|
||||||
|
return &device->data.net->info;
|
||||||
|
case VIR_DOMAIN_DEVICE_INPUT:
|
||||||
|
return &device->data.input->info;
|
||||||
|
case VIR_DOMAIN_DEVICE_SOUND:
|
||||||
|
return &device->data.sound->info;
|
||||||
|
case VIR_DOMAIN_DEVICE_VIDEO:
|
||||||
|
return &device->data.video->info;
|
||||||
|
case VIR_DOMAIN_DEVICE_HOSTDEV:
|
||||||
|
return device->data.hostdev->info;
|
||||||
|
case VIR_DOMAIN_DEVICE_WATCHDOG:
|
||||||
|
return &device->data.watchdog->info;
|
||||||
|
case VIR_DOMAIN_DEVICE_CONTROLLER:
|
||||||
|
return &device->data.controller->info;
|
||||||
|
case VIR_DOMAIN_DEVICE_HUB:
|
||||||
|
return &device->data.hub->info;
|
||||||
|
case VIR_DOMAIN_DEVICE_REDIRDEV:
|
||||||
|
return &device->data.redirdev->info;
|
||||||
|
case VIR_DOMAIN_DEVICE_SMARTCARD:
|
||||||
|
return &device->data.smartcard->info;
|
||||||
|
case VIR_DOMAIN_DEVICE_CHR:
|
||||||
|
return &device->data.chr->info;
|
||||||
|
case VIR_DOMAIN_DEVICE_MEMBALLOON:
|
||||||
|
return &device->data.memballoon->info;
|
||||||
|
case VIR_DOMAIN_DEVICE_NVRAM:
|
||||||
|
return &device->data.nvram->info;
|
||||||
|
case VIR_DOMAIN_DEVICE_RNG:
|
||||||
|
return &device->data.rng->info;
|
||||||
|
|
||||||
|
/* The following devices do not contain virDomainDeviceInfo */
|
||||||
|
case VIR_DOMAIN_DEVICE_LEASE:
|
||||||
|
case VIR_DOMAIN_DEVICE_GRAPHICS:
|
||||||
|
case VIR_DOMAIN_DEVICE_LAST:
|
||||||
|
case VIR_DOMAIN_DEVICE_NONE:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
virDomainDeviceInfoIsSet(virDomainDeviceInfoPtr info, unsigned int flags)
|
virDomainDeviceInfoIsSet(virDomainDeviceInfoPtr info, unsigned int flags)
|
||||||
{
|
{
|
||||||
|
@ -2291,6 +2291,7 @@ virDomainDeviceDefPtr virDomainDeviceDefCopy(virDomainDeviceDefPtr src,
|
|||||||
virDomainXMLOptionPtr xmlopt);
|
virDomainXMLOptionPtr xmlopt);
|
||||||
int virDomainDeviceAddressIsValid(virDomainDeviceInfoPtr info,
|
int virDomainDeviceAddressIsValid(virDomainDeviceInfoPtr info,
|
||||||
int type);
|
int type);
|
||||||
|
virDomainDeviceInfoPtr virDomainDeviceGetInfo(virDomainDeviceDefPtr device);
|
||||||
int virDomainDeviceInfoCopy(virDomainDeviceInfoPtr dst,
|
int virDomainDeviceInfoCopy(virDomainDeviceInfoPtr dst,
|
||||||
virDomainDeviceInfoPtr src);
|
virDomainDeviceInfoPtr src);
|
||||||
void virDomainDeviceInfoClear(virDomainDeviceInfoPtr info);
|
void virDomainDeviceInfoClear(virDomainDeviceInfoPtr info);
|
||||||
|
@ -178,6 +178,7 @@ virDomainDeviceDefCopy;
|
|||||||
virDomainDeviceDefFree;
|
virDomainDeviceDefFree;
|
||||||
virDomainDeviceDefParse;
|
virDomainDeviceDefParse;
|
||||||
virDomainDeviceFindControllerModel;
|
virDomainDeviceFindControllerModel;
|
||||||
|
virDomainDeviceGetInfo;
|
||||||
virDomainDeviceInfoCopy;
|
virDomainDeviceInfoCopy;
|
||||||
virDomainDeviceInfoIterate;
|
virDomainDeviceInfoIterate;
|
||||||
virDomainDeviceTypeToString;
|
virDomainDeviceTypeToString;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user