diff options
author | Dhaval Giani <dhaval@linux.vnet.ibm.com> | 2009-03-26 20:53:17 +0530 |
---|---|---|
committer | Dhaval Giani <dhaval@linux.vnet.ibm.com> | 2009-03-26 20:53:17 +0530 |
commit | bd7e85ee1a7a794c6c447d64306b6df7f1d84eec (patch) | |
tree | aab9de4f611b5a9d9c22ca497d72a10667fb4461 /src/libcgroup-internal.h | |
parent | 04bb98f8bd9751dd8a514b0e3a6c4862ceabeae9 (diff) | |
parent | de11c7f7bb8a79c86e680d169ed414471e5ef7d2 (diff) | |
download | libcg-bd7e85ee1a7a794c6c447d64306b6df7f1d84eec.tar.gz libcg-bd7e85ee1a7a794c6c447d64306b6df7f1d84eec.tar.xz libcg-bd7e85ee1a7a794c6c447d64306b6df7f1d84eec.zip |
Merge branch 'automake' of git://fedorapeople.org/~jsafrane/libcg
Diffstat (limited to 'src/libcgroup-internal.h')
-rw-r--r-- | src/libcgroup-internal.h | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/src/libcgroup-internal.h b/src/libcgroup-internal.h new file mode 100644 index 0000000..001da1a --- /dev/null +++ b/src/libcgroup-internal.h @@ -0,0 +1,105 @@ +/* + * Copyright IBM Corporation. 2008 + * + * Author: Dhaval Giani <dhaval@linux.vnet.ibm.com> + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of version 2.1 of the GNU Lesser General Public License + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it would be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + * + */ +#ifndef __LIBCG_INTERNAL + +#define __LIBCG_INTERNAL + +__BEGIN_DECLS + +#include "config.h" +#include <libcgroup.h> +#include <limits.h> + +#define CGRULES_CONF_FILE "/etc/cgrules.conf" +#define CGRULES_MAX_FIELDS_PER_LINE 3 + +#define CGROUP_BUFFER_LEN (5 * FILENAME_MAX) + +#ifdef CGROUP_DEBUG +#define cgroup_dbg(x...) printf(x) +#else +#define cgroup_dbg(x...) do {} while (0) +#endif + +struct control_value { + char name[FILENAME_MAX]; + char value[CG_VALUE_MAX]; +}; + +struct cgroup_controller { + char name[FILENAME_MAX]; + struct control_value *values[CG_NV_MAX]; + int index; +}; + +struct cgroup { + char name[FILENAME_MAX]; + struct cgroup_controller *controller[CG_CONTROLLER_MAX]; + int index; + uid_t tasks_uid; + gid_t tasks_gid; + uid_t control_uid; + gid_t control_gid; +}; + + +struct cg_mount_table_s { + char name[FILENAME_MAX]; + char path[FILENAME_MAX]; + int index; +}; + +struct cgroup_rules_data { + pid_t pid; /* pid of the process which needs to change group */ + + /* Details of user under consideration for destination cgroup */ + struct passwd *pw; + /* Gid of the process */ + gid_t gid; +}; + +/* A rule that maps UID/GID to a cgroup */ +struct cgroup_rule { + uid_t uid; + gid_t gid; + char name[LOGIN_NAME_MAX]; + char destination[FILENAME_MAX]; + char *controllers[MAX_MNT_ELEMENTS]; + struct cgroup_rule *next; +}; + +/* Container for a list of rules */ +struct cgroup_rule_list { + struct cgroup_rule *head; + struct cgroup_rule *tail; + int len; +}; + + +/* Internal API */ +char *cg_build_path(char *name, char *path, char *type); + +/* + * config related API + */ +int cgroup_config_insert_cgroup(char *cg_name); +int cgroup_config_parse_controller_options(char *controller, char *name_value); +int cgroup_config_group_task_perm(char *perm_type, char *value); +int cgroup_config_group_admin_perm(char *perm_type, char *value); +int cgroup_config_insert_into_mount_table(char *name, char *mount_point); +void cgroup_config_cleanup_mount_table(void); +__END_DECLS + +#endif |