new lxc_cgroup_path_get function

remove the usage of LXCPATH/<name>/nsgroup
in get/set function.

Signed-off-by: Michel Normand <normand@fr.ibm.com>
Signed-off-by: Daniel Lezcano <dlezcano@fr.ibm.com>
This commit is contained in:
Michel Normand 2009-10-09 11:38:39 +02:00 committed by Daniel Lezcano
parent 758437c558
commit a6ddef6149

View File

@ -45,6 +45,8 @@ lxc_log_define(lxc_cgroup, lxc);
#define MTAB "/etc/mtab"
static char nsgroup_path[MAXPATHLEN];
static int get_cgroup_mount(const char *mtab, char *mnt)
{
struct mntent *mntent;
@ -153,12 +155,38 @@ int lxc_unlink_nsgroup(const char *name)
return unlink(nsgroup);
}
static int lxc_cgroup_path_get(char **path, const char *name)
{
char cgroup[MAXPATHLEN];
*path = &nsgroup_path[0];
/*
* report nsgroup_path string if already set
*/
if (**path != 0)
return 0;
if (get_cgroup_mount(MTAB, cgroup)) {
ERROR("cgroup is not mounted");
return -1;
}
snprintf(nsgroup_path, MAXPATHLEN, "%s/%s", cgroup, name);
return 0;
}
int lxc_cgroup_set(const char *name, const char *subsystem, const char *value)
{
int fd, ret = -1;
char *nsgroup;
char path[MAXPATHLEN];
snprintf(path, MAXPATHLEN, LXCPATH "/%s/nsgroup/%s", name, subsystem);
ret = lxc_cgroup_path_get(&nsgroup, name);
if (ret)
return -1;
snprintf(path, MAXPATHLEN, "%s/%s", nsgroup, subsystem);
fd = open(path, O_WRONLY);
if (fd < 0) {
@ -181,9 +209,14 @@ int lxc_cgroup_get(const char *name, const char *subsystem,
char *value, size_t len)
{
int fd, ret = -1;
char *nsgroup;
char path[MAXPATHLEN];
snprintf(path, MAXPATHLEN, LXCPATH "/%s/nsgroup/%s", name, subsystem);
ret = lxc_cgroup_path_get(&nsgroup, name);
if (ret)
return -1;
snprintf(path, MAXPATHLEN, "%s/%s", nsgroup, subsystem);
fd = open(path, O_RDONLY);
if (fd < 0) {