]> xenbits.xensource.com Git - libvirt.git/commitdiff
updates of some vcpupin related functions
authorHu Tao <hutao@cn.fujitsu.com>
Tue, 21 Aug 2012 09:18:29 +0000 (17:18 +0800)
committerDaniel Veillard <veillard@redhat.com>
Wed, 22 Aug 2012 07:11:38 +0000 (15:11 +0800)
1. add a new function virDomainVcpuPinDefCopy
2. make virDomainVcpuPinDefFree non-static

src/conf/domain_conf.c
src/conf/domain_conf.h
src/libvirt_private.syms

index 38522fd64c724454cc32ae8e0752f3b069f86301..5533355a87f8f67dd200e17c8cceaa121cddd34a 100644 (file)
@@ -1511,7 +1511,39 @@ virDomainClockDefClear(virDomainClockDefPtr def)
     VIR_FREE(def->timers);
 }
 
-static void
+virDomainVcpuPinDefPtr *
+virDomainVcpuPinDefCopy(virDomainVcpuPinDefPtr *src, int nvcpupin)
+{
+    int i = 0;
+    virDomainVcpuPinDefPtr *ret;
+
+    if (VIR_ALLOC_N(ret, nvcpupin) < 0) {
+        goto no_memory;
+    }
+
+    for (i = 0; i < nvcpupin; i++) {
+        if (VIR_ALLOC(ret[i]) < 0)
+            goto no_memory;
+        if (VIR_ALLOC_N(ret[i]->cpumask, VIR_DOMAIN_CPUMASK_LEN) < 0)
+            goto no_memory;
+        ret[i]->vcpuid = src[i]->vcpuid;
+        memcpy(ret[i]->cpumask, src[i]->cpumask, VIR_DOMAIN_CPUMASK_LEN);
+    }
+
+    return ret;
+
+no_memory:
+    while (i >= 0) {
+        VIR_FREE(ret[i]->cpumask);
+        VIR_FREE(ret[i]);
+    }
+    VIR_FREE(ret);
+    virReportOOMError();
+
+    return NULL;
+}
+
+void
 virDomainVcpuPinDefFree(virDomainVcpuPinDefPtr *def,
                         int nvcpupin)
 {
index bf2585a69e23b2da71f31e368d35e9b42bf18510..9002222369460d8f88bbc832980ac5bd6616a2c5 100644 (file)
@@ -1536,6 +1536,11 @@ struct _virDomainVcpuPinDef {
     char *cpumask;
 };
 
+void virDomainVcpuPinDefFree(virDomainVcpuPinDefPtr *def, int nvcpupin);
+
+virDomainVcpuPinDefPtr *virDomainVcpuPinDefCopy(virDomainVcpuPinDefPtr *src,
+                                                int nvcpupin);
+
 int virDomainVcpuPinIsDuplicate(virDomainVcpuPinDefPtr *def,
                                 int nvcpupin,
                                 int vcpu);
index b48fff0be016fea129e18274ab80ac664032a62d..9d0e7531907e98005d074b99c9b4f4ea69ae1c59 100644 (file)
@@ -506,6 +506,8 @@ virDomainTimerTickpolicyTypeToString;
 virDomainTimerTrackTypeFromString;
 virDomainTimerTrackTypeToString;
 virDomainVcpuPinAdd;
+virDomainVcpuPinDefCopy;
+virDomainVcpuPinDefFree;
 virDomainVcpuPinDel;
 virDomainVcpuPinFindByVcpu;
 virDomainVcpuPinIsDuplicate;