mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-25 15:15:25 +00:00
virpci: Introduce virPCIDeviceAddressCopy
This helper is cleaner than plain memcpy() because one doesn't have to look into virPCIDeviceAddress struct to see if it contains any strings / pointers. Signed-off-by: Michal Privoznik <mprivozn@redhat.com> ACKed-by: Peter Krempa <pkrempa@redhat.com> Reviewed-by: Cole Robinson <crobinso@redhat.com>
This commit is contained in:
parent
ec4ad1a5f5
commit
4fac30d988
@ -2706,6 +2706,7 @@ virObjectUnref;
|
|||||||
|
|
||||||
# util/virpci.h
|
# util/virpci.h
|
||||||
virPCIDeviceAddressAsString;
|
virPCIDeviceAddressAsString;
|
||||||
|
virPCIDeviceAddressCopy;
|
||||||
virPCIDeviceAddressEqual;
|
virPCIDeviceAddressEqual;
|
||||||
virPCIDeviceAddressFree;
|
virPCIDeviceAddressFree;
|
||||||
virPCIDeviceAddressGetIOMMUGroupAddresses;
|
virPCIDeviceAddressGetIOMMUGroupAddresses;
|
||||||
|
@ -1340,6 +1340,20 @@ virPCIDeviceAddressEqual(const virPCIDeviceAddress *addr1,
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* virPCIDeviceAddressCopy:
|
||||||
|
* @dst: where to store address
|
||||||
|
* @src: source address to copy
|
||||||
|
*
|
||||||
|
* Creates a deep copy of given @src address and stores it into
|
||||||
|
* @dst which has to be pre-allocated by caller.
|
||||||
|
*/
|
||||||
|
void virPCIDeviceAddressCopy(virPCIDeviceAddressPtr dst,
|
||||||
|
const virPCIDeviceAddress *src)
|
||||||
|
{
|
||||||
|
memcpy(dst, src, sizeof(*src));
|
||||||
|
}
|
||||||
|
|
||||||
char *
|
char *
|
||||||
virPCIDeviceAddressAsString(const virPCIDeviceAddress *addr)
|
virPCIDeviceAddressAsString(const virPCIDeviceAddress *addr)
|
||||||
{
|
{
|
||||||
|
@ -44,6 +44,7 @@ typedef virZPCIDeviceAddress *virZPCIDeviceAddressPtr;
|
|||||||
struct _virZPCIDeviceAddress {
|
struct _virZPCIDeviceAddress {
|
||||||
unsigned int uid; /* exempt from syntax-check */
|
unsigned int uid; /* exempt from syntax-check */
|
||||||
unsigned int fid;
|
unsigned int fid;
|
||||||
|
/* Don't forget to update virPCIDeviceAddressCopy if needed. */
|
||||||
};
|
};
|
||||||
|
|
||||||
#define VIR_PCI_DEVICE_ADDRESS_FMT "%04x:%02x:%02x.%d"
|
#define VIR_PCI_DEVICE_ADDRESS_FMT "%04x:%02x:%02x.%d"
|
||||||
@ -56,6 +57,7 @@ struct _virPCIDeviceAddress {
|
|||||||
int multi; /* virTristateSwitch */
|
int multi; /* virTristateSwitch */
|
||||||
int extFlags; /* enum virPCIDeviceAddressExtensionFlags */
|
int extFlags; /* enum virPCIDeviceAddressExtensionFlags */
|
||||||
virZPCIDeviceAddress zpci;
|
virZPCIDeviceAddress zpci;
|
||||||
|
/* Don't forget to update virPCIDeviceAddressCopy if needed. */
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
@ -236,6 +238,8 @@ bool virPCIDeviceAddressIsEmpty(const virPCIDeviceAddress *addr);
|
|||||||
|
|
||||||
bool virPCIDeviceAddressEqual(const virPCIDeviceAddress *addr1,
|
bool virPCIDeviceAddressEqual(const virPCIDeviceAddress *addr1,
|
||||||
const virPCIDeviceAddress *addr2);
|
const virPCIDeviceAddress *addr2);
|
||||||
|
void virPCIDeviceAddressCopy(virPCIDeviceAddressPtr dst,
|
||||||
|
const virPCIDeviceAddress *src);
|
||||||
|
|
||||||
char *virPCIDeviceAddressAsString(const virPCIDeviceAddress *addr)
|
char *virPCIDeviceAddressAsString(const virPCIDeviceAddress *addr)
|
||||||
ATTRIBUTE_NONNULL(1);
|
ATTRIBUTE_NONNULL(1);
|
||||||
|
Loading…
Reference in New Issue
Block a user