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(a)redhat.com +1-919-301-3266
Libvirt virtualization library
http://libvirt.org