From 0e89a543be97465e13cab467dbd09a09040fe593 Mon Sep 17 00:00:00 2001 From: Laine Stump Date: Mon, 24 Jun 2013 21:27:52 -0400 Subject: [PATCH] pci: virPCIDeviceListAddCopy API Make a copy of the device and add the copy to the list. (virPCIDeviceListAdd() adds the original object to the list instead). --- src/libvirt_private.syms | 1 + src/util/virpci.c | 17 +++++++++++++++++ src/util/virpci.h | 1 + 3 files changed, 19 insertions(+) diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 4c5f5a33e5..795e011bde 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -1709,6 +1709,7 @@ virPCIDeviceGetUnbindFromStub; virPCIDeviceGetUsedBy; virPCIDeviceIsAssignable; virPCIDeviceListAdd; +virPCIDeviceListAddCopy; virPCIDeviceListCount; virPCIDeviceListDel; virPCIDeviceListFind; diff --git a/src/util/virpci.c b/src/util/virpci.c index 2d18e6625b..a64e41070f 100644 --- a/src/util/virpci.c +++ b/src/util/virpci.c @@ -1705,6 +1705,23 @@ virPCIDeviceListAdd(virPCIDeviceListPtr list, return 0; } + +/* virPCIDeviceListAddCopy - add a *copy* of the device to this list */ +int +virPCIDeviceListAddCopy(virPCIDeviceListPtr list, virPCIDevicePtr dev) +{ + virPCIDevicePtr copy = virPCIDeviceCopy(dev); + + if (!copy) + return -1; + if (virPCIDeviceListAdd(list, copy) < 0) { + virPCIDeviceFree(copy); + return -1; + } + return 0; +} + + virPCIDevicePtr virPCIDeviceListGet(virPCIDeviceListPtr list, int idx) diff --git a/src/util/virpci.h b/src/util/virpci.h index fe474e2c48..b56b89b7b3 100644 --- a/src/util/virpci.h +++ b/src/util/virpci.h @@ -83,6 +83,7 @@ void virPCIDeviceReattachInit(virPCIDevice *dev); virPCIDeviceListPtr virPCIDeviceListNew(void); int virPCIDeviceListAdd(virPCIDeviceListPtr list, virPCIDevicePtr dev); +int virPCIDeviceListAddCopy(virPCIDeviceListPtr list, virPCIDevicePtr dev); virPCIDevicePtr virPCIDeviceListGet(virPCIDeviceListPtr list, int idx); int virPCIDeviceListCount(virPCIDeviceListPtr list);