That function helps checking whether there's a task in that cgroup.
Signed-off-by: Martin Kletzander <mkletzan(a)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