mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-08-28 11:31:16 +00:00
virpci: introduce virPCIDeviceExists()
We're going to add logic to handle the case where a previously existing PCI device does not longer exist in the host. The logic was copied from virPCIDeviceNew(), which verifies if a PCI device exists in the host, returning NULL and throwing an error if it doesn't. The NULL is used for other errors as well (product/vendor id read errors, dev id overflow), meaning that we can't re-use virPCIDeviceNew() for the purpose of detecting if the device exists. Reviewed-by: Laine Stump <laine@redhat.com> Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com>
This commit is contained in:
parent
155151a3d0
commit
3acc65e1b0
@ -2924,6 +2924,7 @@ virPCIDeviceAddressIsValid;
|
|||||||
virPCIDeviceAddressParse;
|
virPCIDeviceAddressParse;
|
||||||
virPCIDeviceCopy;
|
virPCIDeviceCopy;
|
||||||
virPCIDeviceDetach;
|
virPCIDeviceDetach;
|
||||||
|
virPCIDeviceExists;
|
||||||
virPCIDeviceFileIterate;
|
virPCIDeviceFileIterate;
|
||||||
virPCIDeviceFree;
|
virPCIDeviceFree;
|
||||||
virPCIDeviceGetAddress;
|
virPCIDeviceGetAddress;
|
||||||
|
@ -1448,6 +1448,16 @@ virPCIDeviceAddressAsString(const virPCIDeviceAddress *addr)
|
|||||||
return str;
|
return str;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool
|
||||||
|
virPCIDeviceExists(const virPCIDeviceAddress *addr)
|
||||||
|
{
|
||||||
|
g_autofree char *devName = virPCIDeviceAddressAsString(addr);
|
||||||
|
g_autofree char *devPath = g_strdup_printf(PCI_SYSFS "devices/%s/config",
|
||||||
|
devName);
|
||||||
|
|
||||||
|
return virFileExists(devPath);
|
||||||
|
}
|
||||||
|
|
||||||
virPCIDevicePtr
|
virPCIDevicePtr
|
||||||
virPCIDeviceNew(const virPCIDeviceAddress *address)
|
virPCIDeviceNew(const virPCIDeviceAddress *address)
|
||||||
{
|
{
|
||||||
|
@ -206,6 +206,7 @@ int virPCIDeviceAddressGetIOMMUGroupAddresses(virPCIDeviceAddressPtr devAddr,
|
|||||||
size_t *nIommuGroupDevices);
|
size_t *nIommuGroupDevices);
|
||||||
int virPCIDeviceAddressGetIOMMUGroupNum(virPCIDeviceAddressPtr addr);
|
int virPCIDeviceAddressGetIOMMUGroupNum(virPCIDeviceAddressPtr addr);
|
||||||
char *virPCIDeviceAddressGetIOMMUGroupDev(const virPCIDeviceAddress *devAddr);
|
char *virPCIDeviceAddressGetIOMMUGroupDev(const virPCIDeviceAddress *devAddr);
|
||||||
|
bool virPCIDeviceExists(const virPCIDeviceAddress *addr);
|
||||||
char *virPCIDeviceGetIOMMUGroupDev(virPCIDevicePtr dev);
|
char *virPCIDeviceGetIOMMUGroupDev(virPCIDevicePtr dev);
|
||||||
|
|
||||||
int virPCIDeviceIsAssignable(virPCIDevicePtr dev,
|
int virPCIDeviceIsAssignable(virPCIDevicePtr dev,
|
||||||
|
Loading…
Reference in New Issue
Block a user