#define _GNU_SOURCE
-#include <errno.h>
#include <libcgroup.h>
#include <libcgroup-internal.h>
+
#include <inttypes.h>
-#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
+#include <stdio.h>
+#include <errno.h>
static void init_cgroup(struct cgroup *cgroup)
{
- cgroup->task_fperm = cgroup->control_fperm = cgroup->control_dperm = NO_PERMS;
+ cgroup->task_fperm = cgroup->control_fperm =
+ cgroup->control_dperm = NO_PERMS;
cgroup->control_gid = cgroup->control_uid = cgroup->tasks_gid =
cgroup->tasks_uid = NO_UID_GID;
}
struct cgroup *cgroup_new_cgroup(const char *name)
{
struct cgroup *cgroup = calloc(1, sizeof(struct cgroup));
+
if (!cgroup)
return NULL;
}
struct cgroup_controller *cgroup_add_controller(struct cgroup *cgroup,
- const char *name)
+ const char *name)
{
- int i, ret;
struct cgroup_controller *controller;
+ int i, ret;
if (!cgroup)
return NULL;
*/
for (i = 0; i < cgroup->index; i++) {
if (strncmp(name, cgroup->controller[i]->name,
- sizeof(cgroup->controller[i]->name)) == 0)
+ sizeof(cgroup->controller[i]->name)) == 0)
return NULL;
}
int cgroup_add_all_controllers(struct cgroup *cgroup)
{
- int ret;
- void *handle;
- struct controller_data info;
struct cgroup_controller *cgc;
+ struct controller_data info;
+ void *handle;
+ int ret;
/* go through the controller list */
ret = cgroup_get_all_controller_begin(&handle, &info);
while (ret == 0) {
if (info.hierarchy == 0) {
- /* the controller is not attached to any hierarchy
- skip it */
+ /*
+ * the controller is not attached to any hierarchy
+ * skip it.
+ */
goto next;
}
if (!cgroup)
return;
- for (i = 0; i < cgroup->index; i++) {
+ for (i = 0; i < cgroup->index; i++)
cgroup_free_controller(cgroup->controller[i]);
- }
+
cgroup->index = 0;
}
}
int cgroup_add_value_string(struct cgroup_controller *controller,
- const char *name, const char *value)
+ const char *name, const char *value)
{
int i;
struct control_value *cntl_value;
if (value) {
if (strlen(value) >= sizeof(cntl_value->value)) {
- fprintf(stderr, "value exceeds the maximum of %ld characters\n",
+ fprintf(stderr,
+ "value exceeds the maximum of %ld characters\n",
sizeof(cntl_value->value) - 1);
free(cntl_value);
return ECGCONFIGPARSEFAIL;
}
int cgroup_add_value_int64(struct cgroup_controller *controller,
- const char *name, int64_t value)
+ const char *name, int64_t value)
{
- int ret;
char *val;
+ int ret;
ret = asprintf(&val, "%"PRId64, value);
if (ret < 0) {
}
int cgroup_add_value_uint64(struct cgroup_controller *controller,
- const char *name, u_int64_t value)
+ const char *name, u_int64_t value)
{
- int ret;
char *val;
+ int ret;
ret = asprintf(&val, "%" PRIu64, value);
if (ret < 0) {
}
int cgroup_add_value_bool(struct cgroup_controller *controller,
- const char *name, bool value)
+ const char *name, bool value)
{
- int ret;
char *val;
+ int ret;
if (value)
val = strdup("1");
}
int cgroup_compare_controllers(struct cgroup_controller *cgca,
- struct cgroup_controller *cgcb)
+ struct cgroup_controller *cgcb)
{
int i;
if (cgroup_compare_controllers(cgca, cgcb))
return ECGCONTROLLERNOTEQUAL;
}
+
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)
+ uid_t control_uid, gid_t control_gid)
{
if (!cgroup)
return ECGINVAL;
}
struct cgroup_controller *cgroup_get_controller(struct cgroup *cgroup,
- const char *name)
+ const char *name)
{
int i;
struct cgroup_controller *cgc;
}
int cgroup_get_value_string(struct cgroup_controller *controller,
- const char *name, char **value)
+ const char *name, char **value)
{
int i;
}
int cgroup_set_value_string(struct cgroup_controller *controller,
- const char *name, const char *value)
+ const char *name, const char *value)
{
int i;
for (i = 0; i < controller->index; i++) {
struct control_value *val = controller->values[i];
+
if (!strcmp(val->name, name)) {
strncpy(val->value, value, CG_VALUE_MAX);
val->value[sizeof(val->value)-1] = '\0';
}
int cgroup_get_value_int64(struct cgroup_controller *controller,
- const char *name, int64_t *value)
+ const char *name, int64_t *value)
{
int i;
}
int cgroup_set_value_int64(struct cgroup_controller *controller,
- const char *name, int64_t value)
+ const char *name, int64_t value)
{
- int i;
int ret;
+ int i;
if (!controller)
return ECGINVAL;
if (!strcmp(val->name, name)) {
ret = snprintf(val->value,
- sizeof(val->value), "%" PRId64, value);
+ sizeof(val->value), "%" PRId64, value);
if (ret >= sizeof(val->value))
return ECGINVAL;
}
int cgroup_get_value_uint64(struct cgroup_controller *controller,
- const char *name, u_int64_t *value)
+ const char *name, u_int64_t *value)
{
int i;
for (i = 0; i < controller->index; i++) {
struct control_value *val = controller->values[i];
- if (!strcmp(val->name, name)) {
+ if (!strcmp(val->name, name)) {
if (sscanf(val->value, "%" SCNu64, value) != 1)
return ECGINVAL;
}
int cgroup_set_value_uint64(struct cgroup_controller *controller,
- const char *name, u_int64_t value)
+ const char *name, u_int64_t value)
{
- int i;
int ret;
+ int i;
if (!controller)
return ECGINVAL;
struct control_value *val = controller->values[i];
if (!strcmp(val->name, name)) {
- ret = snprintf(val->value,
- sizeof(val->value), "%" PRIu64, value);
+ ret = snprintf(val->value, sizeof(val->value),
+ "%" PRIu64, value);
if (ret >= sizeof(val->value))
return ECGINVAL;
}
int cgroup_get_value_bool(struct cgroup_controller *controller,
- const char *name, bool *value)
+ const char *name, bool *value)
{
int i;
}
int cgroup_set_value_bool(struct cgroup_controller *controller,
- const char *name, bool value)
+ const char *name, bool value)
{
- int i;
int ret;
+ int i;
if (!controller)
return ECGINVAL;
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;
+ struct cgroup *src_cgroup;
char con[FILENAME_MAX];
int ret;
goto scgroup_err;
}
- /* add pairs name-value to
- relevant controllers of this cgroup */
+ /*
+ * add pairs name-value to
+ * relevant controllers of this cgroup.
+ */
for (i = 0; i < nv_number; i++) {
if ((strchr(name_value[i].name, '.')) == NULL) {
strncpy(con, name_value[i].name, FILENAME_MAX - 1);
strtok(con, ".");
- /* find out whether we have to add the controller or
- cgroup already contains it */
+ /*
+ * find out whether we have to add the controller or
+ * cgroup already contains it.
+ */
cgc = cgroup_get_controller(src_cgroup, con);
if (!cgc) {
/* add relevant controller */
cgc = cgroup_add_controller(src_cgroup, con);
if (!cgc) {
fprintf(stderr, "controller %s can't be add\n",
- con);
+ con);
goto scgroup_err;
}
}