summaryrefslogtreecommitdiffstats
path: root/src/wrapper.c
diff options
context:
space:
mode:
authorIvana Varekova <varekova@redhat.com>2009-07-15 10:28:56 +0200
committerDhaval Giani <dhaval@linux.vnet.ibm.com>2009-08-06 11:51:34 +0530
commitcbe2321ec0e87095c5f2081fbc4a85bd5becfbb6 (patch)
tree5fec1c52a1b5909a1ac79a011c876c9dfeee79f4 /src/wrapper.c
parentb75a9fcfab5cd2ae88a55934e22c77cbd6810a14 (diff)
downloadlibcg-cbe2321ec0e87095c5f2081fbc4a85bd5becfbb6.tar.gz
libcg-cbe2321ec0e87095c5f2081fbc4a85bd5becfbb6.tar.xz
libcg-cbe2321ec0e87095c5f2081fbc4a85bd5becfbb6.zip
removes copy_name_value_from_rules to wrapper
move copy_name_value_from_rules procedure to wrapper.c file and add the header to libcgroup-internal.h Signed-off-by: Ivana Varekova <varekova@redhat.com> Acked-by: Dhaval Giani <dhaval@linux.vnet.ibm.com> Signed-off-by: Dhaval Giani <dhaval@linux.vnet.ibm.com>
Diffstat (limited to 'src/wrapper.c')
-rw-r--r--src/wrapper.c55
1 files changed, 55 insertions, 0 deletions
diff --git a/src/wrapper.c b/src/wrapper.c
index 1ee1665..c82ffbf 100644
--- a/src/wrapper.c
+++ b/src/wrapper.c
@@ -557,3 +557,58 @@ int cgroup_set_value_bool(struct cgroup_controller *controller,
return cgroup_add_value_bool(controller, name, value);
}
+
+struct cgroup *create_cgroup_from_name_value_pairs(const char *name,
+ struct control_value *name_value, int nv_number)
+{
+ struct cgroup *src_cgroup;
+ struct cgroup_controller *cgc;
+ char con[FILENAME_MAX];
+
+ int ret;
+ int i;
+
+ /* create source cgroup */
+ src_cgroup = cgroup_new_cgroup(name);
+ if (!src_cgroup) {
+ fprintf(stderr, "can't create cgroup: %s\n",
+ cgroup_strerror(ECGFAIL));
+ goto scgroup_err;
+ }
+
+ /* add pairs name-value to
+ relevant controllers of this cgroup */
+ for (i = 0; i < nv_number; i++) {
+
+ if ((strchr(name_value[i].name, '.')) == NULL) {
+ fprintf(stderr, "wrong -r parameter (%s=%s)\n",
+ name_value[i].name, name_value[i].value);
+ goto scgroup_err;
+ }
+
+ strncpy(con, name_value[i].name, FILENAME_MAX);
+ strtok(con, ".");
+
+ /* add relevant controller */
+ cgc = cgroup_add_controller(src_cgroup, con);
+ if (!cgc) {
+ fprintf(stderr, "controller %s can't be add\n",
+ con);
+ goto scgroup_err;
+ }
+
+ /* add name-value pair to this controller */
+ ret = cgroup_add_value_string(cgc,
+ name_value[i].name, name_value[i].value);
+ if (ret) {
+ fprintf(stderr, "name-value pair %s=%s can't be set\n",
+ name_value[i].name, name_value[i].value);
+ goto scgroup_err;
+ }
+ }
+
+ return src_cgroup;
+scgroup_err:
+ cgroup_free(&src_cgroup);
+ return NULL;
+}