[libvirt] [PATCH 1/6] Don't require domain obj in qemuDomainGetPercpuStats

Ján Tomko jtomko at redhat.com
Fri Apr 4 08:25:35 UTC 2014


All we need is the virCgroupPtr and number of vcpupids.
This will allow the function to be moved to util/vircgroup.c.
---
 src/qemu/qemu_driver.c | 22 +++++++++++-----------
 1 file changed, 11 insertions(+), 11 deletions(-)

diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index 1d08951..da976b3 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -15992,22 +15992,22 @@ qemuDomainGetMetadata(virDomainPtr dom,
  *   s3 = t03 + t13
  */
 static int
-getSumVcpuPercpuStats(virDomainObjPtr vm,
+getSumVcpuPercpuStats(virCgroupPtr group,
+                      unsigned int nvcpupids,
                       unsigned long long *sum_cpu_time,
                       unsigned int num)
 {
     int ret = -1;
     size_t i;
     char *buf = NULL;
-    qemuDomainObjPrivatePtr priv = vm->privateData;
     virCgroupPtr group_vcpu = NULL;
 
-    for (i = 0; i < priv->nvcpupids; i++) {
+    for (i = 0; i < nvcpupids; i++) {
         char *pos;
         unsigned long long tmp;
         size_t j;
 
-        if (virCgroupNewVcpu(priv->cgroup, i, false, &group_vcpu) < 0)
+        if (virCgroupNewVcpu(group, i, false, &group_vcpu) < 0)
             goto cleanup;
 
         if (virCgroupGetCpuacctPercpuUsage(group_vcpu, &buf) < 0)
@@ -16035,11 +16035,12 @@ getSumVcpuPercpuStats(virDomainObjPtr vm,
 }
 
 static int
-qemuDomainGetPercpuStats(virDomainObjPtr vm,
+qemuDomainGetPercpuStats(virCgroupPtr group,
                          virTypedParameterPtr params,
                          unsigned int nparams,
                          int start_cpu,
-                         unsigned int ncpus)
+                         unsigned int ncpus,
+                         unsigned int nvcpupids)
 {
     int rv = -1;
     size_t i;
@@ -16049,7 +16050,6 @@ qemuDomainGetPercpuStats(virDomainObjPtr vm,
     unsigned long long *sum_cpu_time = NULL;
     unsigned long long *sum_cpu_pos;
     unsigned int n = 0;
-    qemuDomainObjPrivatePtr priv = vm->privateData;
     virTypedParameterPtr ent;
     int param_idx;
     unsigned long long cpu_time;
@@ -16076,7 +16076,7 @@ qemuDomainGetPercpuStats(virDomainObjPtr vm,
     }
 
     /* we get percpu cputime accounting info. */
-    if (virCgroupGetCpuacctPercpuUsage(priv->cgroup, &buf))
+    if (virCgroupGetCpuacctPercpuUsage(group, &buf))
         goto cleanup;
     pos = buf;
 
@@ -16113,7 +16113,7 @@ qemuDomainGetPercpuStats(virDomainObjPtr vm,
 
     if (VIR_ALLOC_N(sum_cpu_time, n) < 0)
         goto cleanup;
-    if (getSumVcpuPercpuStats(vm, sum_cpu_time, n) < 0)
+    if (getSumVcpuPercpuStats(group, nvcpupids, sum_cpu_time, n) < 0)
         goto cleanup;
 
     sum_cpu_pos = sum_cpu_time;
@@ -16177,8 +16177,8 @@ qemuDomainGetCPUStats(virDomainPtr domain,
         ret = virCgroupGetDomainTotalCpuStats(priv->cgroup,
                                               params, nparams);
     else
-        ret = qemuDomainGetPercpuStats(vm, params, nparams,
-                                       start_cpu, ncpus);
+        ret = qemuDomainGetPercpuStats(priv->cgroup, params, nparams,
+                                       start_cpu, ncpus, priv->nvcpupids);
  cleanup:
     if (vm)
         virObjectUnlock(vm);
-- 
1.8.3.2




More information about the libvir-list mailing list