
On 02/28/2012 01:14 PM, Laine Stump wrote:
Three new functions useful in other files:
virDomainHostdevInsert:
Add a new hostdev at the end of the array. This would more sensibly be called virDomainHostdevAppend, but the existing functions for other types of devices are called Insert.
virDomainHostdevRemove:
Eliminates one entry from the hostdevs array, but doesn't free it; patterned after the code at the end of the two qemuDomainDetachHostXXXDevice functions (and also other pre-existing virDomainXXXRemove functions for other device types).
virDomainHostdevFind:
This function is patterned from the search loops at the top of qemuDomainDetachHostPciDevice and qemuDomainDetachHostUsbDevice, and will be used to re-factor those (and other detach-related) functions. --- New patch for V2.
src/conf/domain_conf.c | 94 ++++++++++++++++++++++++++++++++++++++++++++++ src/conf/domain_conf.h | 5 ++ src/libvirt_private.syms | 3 + 3 files changed, 102 insertions(+), 0 deletions(-)
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 93fd8d7..94ee634 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -6769,6 +6769,100 @@ virDomainChrTargetTypeToString(int deviceType, }
int +virDomainHostdevInsert(virDomainDefPtr def, virDomainHostdevDefPtr hostdev) +{ + if (VIR_REALLOC_N(def->hostdevs, def->nhostdevs + 1) < 0) + return -1; + def->hostdevs[def->nhostdevs++] = hostdev;
Is the double space intended?
+ return 0; +} + +void +virDomainHostdevRemove(virDomainDefPtr def, size_t i) +{ + if (def->nhostdevs > 1) { + memmove(def->hostdevs + i, + def->hostdevs + i + 1, + sizeof(*def->hostdevs) * + (def->nhostdevs - (i + 1))); + def->nhostdevs--; + if (VIR_REALLOC_N(def->hostdevs, def->nhostdevs) < 0) {
I know this is copy and paste, but we could clean this pattern up throughout the file (later) to use VIR_SHRINK_N. ACK. -- Eric Blake eblake@redhat.com +1-919-301-3266 Libvirt virtualization library http://libvirt.org