summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libcgroup.h7
-rw-r--r--wrapper.c36
2 files changed, 34 insertions, 9 deletions
diff --git a/libcgroup.h b/libcgroup.h
index 508fe48..80cdfa0 100644
--- a/libcgroup.h
+++ b/libcgroup.h
@@ -170,8 +170,7 @@ struct cgroup *cgroup_get_cgroup(struct cgroup *cgroup);
/* The wrappers for filling libcg structures */
-struct cgroup *cgroup_new_cgroup(const char *name, uid_t tasks_uid,
- gid_t tasks_gid, uid_t control_uid, gid_t control_gid);
+struct cgroup *cgroup_new_cgroup(const char *name);
struct cgroup_controller *cgroup_add_controller(struct cgroup *cgroup,
const char *name);
void cgroup_free(struct cgroup **cgroup);
@@ -186,6 +185,10 @@ int cgroup_add_value_bool(struct cgroup_controller *controller,
int cgroup_compare_cgroup(struct cgroup *cgroup_a, struct cgroup *cgroup_b);
int cgroup_compare_controllers(struct cgroup_controller *cgca,
struct cgroup_controller *cgcb);
+int cgroup_set_uid_gid(struct cgroup *cgroup, uid_t tasks_uid, gid_t tasks_gid,
+ uid_t control_uid, gid_t control_gid);
+int cgroup_get_uid_gid(struct cgroup *cgroup, uid_t *tasks_uid,
+ gid_t *tasks_gid, uid_t *control_uid, gid_t *control_gid);
__END_DECLS
diff --git a/wrapper.c b/wrapper.c
index 5aaabe7..62c257f 100644
--- a/wrapper.c
+++ b/wrapper.c
@@ -22,8 +22,7 @@
#include <string.h>
#include <unistd.h>
-struct cgroup *cgroup_new_cgroup(const char *name, uid_t tasks_uid,
- gid_t tasks_gid, uid_t control_uid, gid_t control_gid)
+struct cgroup *cgroup_new_cgroup(const char *name)
{
struct cgroup *cgroup = (struct cgroup *)
malloc(sizeof(struct cgroup));
@@ -32,11 +31,6 @@ struct cgroup *cgroup_new_cgroup(const char *name, uid_t tasks_uid,
return NULL;
strncpy(cgroup->name, name, sizeof(cgroup->name));
- cgroup->tasks_uid = tasks_uid;
- cgroup->tasks_gid = tasks_gid;
- cgroup->control_uid = control_uid;
- cgroup->control_gid = control_gid;
- cgroup->index = 0;
return cgroup;
}
@@ -291,3 +285,31 @@ int cgroup_compare_cgroup(struct cgroup *cgroup_a, struct cgroup *cgroup_b)
}
return 0;
}
+
+int cgroup_set_uid_gid(struct cgroup *cgroup, uid_t tasks_uid, gid_t tasks_gid,
+ uid_t control_uid, gid_t control_gid)
+{
+ if (!cgroup)
+ return ECGINVAL;
+
+ cgroup->tasks_uid = tasks_uid;
+ cgroup->tasks_gid = tasks_gid;
+ cgroup->control_uid = control_uid;
+ cgroup->control_gid = control_gid;
+
+ return 0;
+}
+
+int cgroup_get_uid_gid(struct cgroup *cgroup, uid_t *tasks_uid,
+ gid_t *tasks_gid, uid_t *control_uid, gid_t *control_gid)
+{
+ if (!cgroup)
+ return ECGINVAL;
+
+ *tasks_uid = cgroup->tasks_uid;
+ *tasks_gid = cgroup->tasks_gid;
+ *control_uid = cgroup->control_uid;
+ *control_gid = cgroup->control_uid;
+
+ return 0;
+}