forked from pool/libvirt
119 lines
3.0 KiB
Diff
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);
|