9119d9
From e64cbebf99fab42662b0e72a44f3a5bdef69bf8d Mon Sep 17 00:00:00 2001
9119d9
Message-Id: <e64cbebf99fab42662b0e72a44f3a5bdef69bf8d@dist-git>
9119d9
From: Martin Kletzander <mkletzan@redhat.com>
9119d9
Date: Thu, 15 Jan 2015 15:03:44 +0100
9119d9
Subject: [PATCH] util: Add function virCgroupHasEmptyTasks
9119d9
9119d9
https://bugzilla.redhat.com/show_bug.cgi?id=1161540
9119d9
9119d9
That function helps checking whether there's a task in that cgroup.
9119d9
9119d9
Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
9119d9
(cherry picked from commit 1a80b97ddfb096a21af60d63a42d1af280fb6886)
9119d9
Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
9119d9
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
9119d9
---
9119d9
 src/libvirt_private.syms |  1 +
9119d9
 src/util/vircgroup.c     | 23 +++++++++++++++++++++++
9119d9
 src/util/vircgroup.h     |  4 +++-
9119d9
 3 files changed, 27 insertions(+), 1 deletion(-)
9119d9
9119d9
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
9119d9
index cf3c842..62f4f08 100644
9119d9
--- a/src/libvirt_private.syms
9119d9
+++ b/src/libvirt_private.syms
9119d9
@@ -1087,6 +1087,7 @@ virCgroupGetMemSwapHardLimit;
9119d9
 virCgroupGetMemSwapUsage;
9119d9
 virCgroupGetPercpuStats;
9119d9
 virCgroupHasController;
9119d9
+virCgroupHasEmptyTasks;
9119d9
 virCgroupIsolateMount;
9119d9
 virCgroupKill;
9119d9
 virCgroupKillPainfully;
9119d9
diff --git a/src/util/vircgroup.c b/src/util/vircgroup.c
9119d9
index 152ef96..dbe7ee7 100644
9119d9
--- a/src/util/vircgroup.c
9119d9
+++ b/src/util/vircgroup.c
9119d9
@@ -3915,6 +3915,20 @@ virCgroupSupportsCpuBW(virCgroupPtr cgroup)
9119d9
     return ret;
9119d9
 }
9119d9
 
9119d9
+int
9119d9
+virCgroupHasEmptyTasks(virCgroupPtr cgroup, int controller)
9119d9
+{
9119d9
+    int ret = -1;
9119d9
+    char *content = NULL;
9119d9
+
9119d9
+    ret = virCgroupGetValueStr(cgroup, controller, "tasks", &content);
9119d9
+
9119d9
+    if (ret == 0 && content[0] == '\0')
9119d9
+        ret = 1;
9119d9
+
9119d9
+    VIR_FREE(content);
9119d9
+    return ret;
9119d9
+}
9119d9
 
9119d9
 #else /* !VIR_CGROUP_SUPPORTED */
9119d9
 
9119d9
@@ -4633,4 +4647,13 @@ virCgroupSetOwner(virCgroupPtr cgroup ATTRIBUTE_UNUSED,
9119d9
     return -1;
9119d9
 }
9119d9
 
9119d9
+int
9119d9
+virCgroupHasEmptyTasks(virCgroupPtr cgroup ATTRIBUTE_UNUSED,
9119d9
+                       int controller ATTRIBUTE_UNUSED)
9119d9
+{
9119d9
+    virReportSystemError(ENOSYS, "%s",
9119d9
+                         _("Control groups not supported on this platform"));
9119d9
+    return -1;
9119d9
+}
9119d9
+
9119d9
 #endif /* !VIR_CGROUP_SUPPORTED */
9119d9
diff --git a/src/util/vircgroup.h b/src/util/vircgroup.h
9119d9
index 19e82d1..3dbae12 100644
9119d9
--- a/src/util/vircgroup.h
9119d9
+++ b/src/util/vircgroup.h
9119d9
@@ -1,7 +1,7 @@
9119d9
 /*
9119d9
  * vircgroup.h: methods for managing control cgroups
9119d9
  *
9119d9
- * Copyright (C) 2011-2013 Red Hat, Inc.
9119d9
+ * Copyright (C) 2011-2014 Red Hat, Inc.
9119d9
  * Copyright IBM Corp. 2008
9119d9
  *
9119d9
  * This library is free software; you can redistribute it and/or
9119d9
@@ -265,4 +265,6 @@ int virCgroupSetOwner(virCgroupPtr cgroup,
9119d9
                       gid_t gid,
9119d9
                       int controllers);
9119d9
 
9119d9
+int virCgroupHasEmptyTasks(virCgroupPtr cgroup, int controller);
9119d9
+
9119d9
 #endif /* __VIR_CGROUP_H__ */
9119d9
-- 
9119d9
2.2.1
9119d9