[libvirt] [PATCH 1/6] util: Add function virCgroupHasEmptyTasks

Martin Kletzander mkletzan at redhat.com
Mon Dec 15 07:58:47 UTC 2014


That function helps checking whether there's a task in that cgroup.

Signed-off-by: Martin Kletzander <mkletzan at redhat.com>
---
 src/libvirt_private.syms |  1 +
 src/util/vircgroup.c     | 23 +++++++++++++++++++++++
 src/util/vircgroup.h     |  4 +++-
 3 files changed, 27 insertions(+), 1 deletion(-)

diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
index 6df2784..60979f8 100644
--- a/src/libvirt_private.syms
+++ b/src/libvirt_private.syms
@@ -1096,6 +1096,7 @@ virCgroupGetMemSwapHardLimit;
 virCgroupGetMemSwapUsage;
 virCgroupGetPercpuStats;
 virCgroupHasController;
+virCgroupHasEmptyTasks;
 virCgroupIsolateMount;
 virCgroupKill;
 virCgroupKillPainfully;
diff --git a/src/util/vircgroup.c b/src/util/vircgroup.c
index 3995477..4857ef3 100644
--- a/src/util/vircgroup.c
+++ b/src/util/vircgroup.c
@@ -3926,6 +3926,20 @@ virCgroupSupportsCpuBW(virCgroupPtr cgroup)
     return ret;
 }

+int
+virCgroupHasEmptyTasks(virCgroupPtr cgroup, int controller)
+{
+    int ret = -1;
+    char *content = NULL;
+
+    ret = virCgroupGetValueStr(cgroup, controller, "tasks", &content);
+
+    if (ret == 0 && content[0] == '\0')
+        ret = 1;
+
+    VIR_FREE(content);
+    return ret;
+}

 #else /* !VIR_CGROUP_SUPPORTED */

@@ -4655,4 +4669,13 @@ virCgroupSetOwner(virCgroupPtr cgroup ATTRIBUTE_UNUSED,
     return -1;
 }

+int
+virCgroupHasEmptyTasks(virCgroupPtr cgroup ATTRIBUTE_UNUSED,
+                       int controller ATTRIBUTE_UNUSED)
+{
+    virReportSystemError(ENOSYS, "%s",
+                         _("Control groups not supported on this platform"));
+    return -1;
+}
+
 #endif /* !VIR_CGROUP_SUPPORTED */
diff --git a/src/util/vircgroup.h b/src/util/vircgroup.h
index 7718a07..f07c1a7 100644
--- a/src/util/vircgroup.h
+++ b/src/util/vircgroup.h
@@ -1,7 +1,7 @@
 /*
  * vircgroup.h: methods for managing control cgroups
  *
- * Copyright (C) 2011-2013 Red Hat, Inc.
+ * Copyright (C) 2011-2014 Red Hat, Inc.
  * Copyright IBM Corp. 2008
  *
  * This library is free software; you can redistribute it and/or
@@ -270,4 +270,6 @@ int virCgroupSetOwner(virCgroupPtr cgroup,
                       gid_t gid,
                       int controllers);

+int virCgroupHasEmptyTasks(virCgroupPtr cgroup, int controller);
+
 #endif /* __VIR_CGROUP_H__ */
-- 
2.2.0




More information about the libvir-list mailing list