mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-26 03:21:44 +03: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
|
||||
virPCIDeviceAddressAsString;
|
||||
virPCIDeviceAddressCopy;
|
||||
virPCIDeviceAddressEqual;
|
||||
virPCIDeviceAddressFree;
|
||||
virPCIDeviceAddressGetIOMMUGroupAddresses;
|
||||
|
@ -1340,6 +1340,20 @@ virPCIDeviceAddressEqual(const virPCIDeviceAddress *addr1,
|
||||
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 *
|
||||
virPCIDeviceAddressAsString(const virPCIDeviceAddress *addr)
|
||||
{
|
||||
|
@ -44,6 +44,7 @@ typedef virZPCIDeviceAddress *virZPCIDeviceAddressPtr;
|
||||
struct _virZPCIDeviceAddress {
|
||||
unsigned int uid; /* exempt from syntax-check */
|
||||
unsigned int fid;
|
||||
/* Don't forget to update virPCIDeviceAddressCopy if needed. */
|
||||
};
|
||||
|
||||
#define VIR_PCI_DEVICE_ADDRESS_FMT "%04x:%02x:%02x.%d"
|
||||
@ -56,6 +57,7 @@ struct _virPCIDeviceAddress {
|
||||
int multi; /* virTristateSwitch */
|
||||
int extFlags; /* enum virPCIDeviceAddressExtensionFlags */
|
||||
virZPCIDeviceAddress zpci;
|
||||
/* Don't forget to update virPCIDeviceAddressCopy if needed. */
|
||||
};
|
||||
|
||||
typedef enum {
|
||||
@ -236,6 +238,8 @@ bool virPCIDeviceAddressIsEmpty(const virPCIDeviceAddress *addr);
|
||||
|
||||
bool virPCIDeviceAddressEqual(const virPCIDeviceAddress *addr1,
|
||||
const virPCIDeviceAddress *addr2);
|
||||
void virPCIDeviceAddressCopy(virPCIDeviceAddressPtr dst,
|
||||
const virPCIDeviceAddress *src);
|
||||
|
||||
char *virPCIDeviceAddressAsString(const virPCIDeviceAddress *addr)
|
||||
ATTRIBUTE_NONNULL(1);
|
||||
|
Loading…
Reference in New Issue
Block a user