diff options
author | Dhaval Giani <dhaval@linux.vnet.ibm.com> | 2008-08-12 08:16:43 +0000 |
---|---|---|
committer | Dhaval Giani <dhaval@linux.vnet.ibm.com> | 2008-08-12 08:16:43 +0000 |
commit | 2e920dd947b8f6a58d89a93bd0326e513b335487 (patch) | |
tree | 5fe7de3588929084b95f365e34cf8a4a1d52a7a0 | |
parent | 0bf95e05d806339a9a79fb2ed20e8a6703eb6cd4 (diff) | |
download | libcg-2e920dd947b8f6a58d89a93bd0326e513b335487.tar.gz libcg-2e920dd947b8f6a58d89a93bd0326e513b335487.tar.xz libcg-2e920dd947b8f6a58d89a93bd0326e513b335487.zip |
libcgroup: Add API to get the cgroup from name (Breaks existing API)
This patch breaks API. There are no known users at the moment so
it is fine.
cgroup_new_cgroup now takes in only a name argument. The uids and
gids are set by a new API, cgroup_?et_uid_gid()
Signed-off-by: Dhaval Giani <dhaval@linux.vnet.ibm.com>
Acked-by: Vivek Goyal <vgoyal@redhat.com>
git-svn-id: https://libcg.svn.sourceforge.net/svnroot/libcg/trunk@125 4f4bb910-9a46-0410-90c8-c897d4f1cd53
-rw-r--r-- | libcgroup.h | 7 | ||||
-rw-r--r-- | wrapper.c | 36 |
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 @@ -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; +} |