libvirt/cgshares.patch

119 lines
3.0 KiB
Diff

Add get/set of cpu.shares to cgroup implementation
This brings get/set of U64 out of the #if 0, which looks messier than it is.
diff -r d18631472325 src/cgroup.c
--- a/src/cgroup.c Tue Oct 07 08:19:56 2008 -0700
+++ b/src/cgroup.c Tue Oct 07 08:20:56 2008 -0700
@@ -224,26 +224,6 @@
return rc;
}
-#if 0
-/* This is included for completeness, but not yet used */
-
-static int virCgroupSetValueI64(virCgroupPtr group,
- const char *key,
- int64_t value)
-{
- char *strval = NULL;
- int rc;
-
- if (asprintf(&strval, "%" PRIi64, value) == -1)
- return -ENOMEM;
-
- rc = virCgroupSetValueStr(group, key, strval);
-
- VIR_FREE(strval);
-
- return rc;
-}
-
static int virCgroupGetValueStr(virCgroupPtr group,
const char *key,
char **value)
@@ -293,20 +273,21 @@
return rc;
}
-static int virCgroupGetValueU64(virCgroupPtr group,
+#if 0
+/* This is included for completeness, but not yet used */
+
+static int virCgroupSetValueI64(virCgroupPtr group,
const char *key,
- uint64_t *value)
+ int64_t value)
{
char *strval = NULL;
- int rc = 0;
+ int rc;
- rc = virCgroupGetValueStr(group, key, &strval);
- if (rc != 0)
- goto out;
+ if (asprintf(&strval, "%" PRIi64, value) == -1)
+ return -ENOMEM;
- if (sscanf(strval, "%" SCNu64, value) != 1)
- rc = -EINVAL;
-out:
+ rc = virCgroupSetValueStr(group, key, strval);
+
VIR_FREE(strval);
return rc;
@@ -331,6 +312,25 @@
return rc;
}
#endif
+
+static int virCgroupGetValueU64(virCgroupPtr group,
+ const char *key,
+ uint64_t *value)
+{
+ char *strval = NULL;
+ int rc = 0;
+
+ rc = virCgroupGetValueStr(group, key, &strval);
+ if (rc != 0)
+ goto out;
+
+ if (sscanf(strval, "%" SCNu64, value) != 1)
+ rc = -EINVAL;
+out:
+ VIR_FREE(strval);
+
+ return rc;
+}
static int _virCgroupInherit(const char *path,
const char *key)
@@ -760,3 +760,13 @@
return rc;
}
+
+int virCgroupSetCpuShares(virCgroupPtr group, unsigned long shares)
+{
+ return virCgroupSetValueU64(group, "cpu.shares", (uint64_t)shares);
+}
+
+int virCgroupGetCpuShares(virCgroupPtr group, unsigned long *shares)
+{
+ return virCgroupGetValueU64(group, "cpu.shares", (uint64_t *)shares);
+}
diff -r d18631472325 src/cgroup.h
--- a/src/cgroup.h Tue Oct 07 08:19:56 2008 -0700
+++ b/src/cgroup.h Tue Oct 07 08:20:56 2008 -0700
@@ -36,6 +36,9 @@
int major,
int minor);
+int virCgroupSetCpuShares(virCgroupPtr group, unsigned long shares);
+int virCgroupGetCpuShares(virCgroupPtr group, unsigned long *shares);
+
int virCgroupRemove(virCgroupPtr group);
void virCgroupFree(virCgroupPtr *group);