From: Christian Brauner Date: Tue, 2 Feb 2021 17:08:14 +0000 (+0100) Subject: cgroups: move functions after methods X-Git-Tag: lxc-5.0.0~305^2~25 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=be835470f3cc75c4d729dbb09bc7e83baf359896;p=thirdparty%2Flxc.git cgroups: move functions after methods This makes it more obvious that they are separate. Signed-off-by: Christian Brauner --- diff --git a/src/lxc/cgroups/cgfsng.c b/src/lxc/cgroups/cgfsng.c index 5e9343f63..327b10f72 100644 --- a/src/lxc/cgroups/cgfsng.c +++ b/src/lxc/cgroups/cgfsng.c @@ -2500,31 +2500,6 @@ __cgfsng_ops static bool cgfsng_attach(struct cgroup_ops *ops, return true; } -int cgroup_get(struct lxc_conf *conf, - const char *name, const char *lxcpath, - const char *filename, char *buf, size_t len) -{ - __do_close int unified_fd = -EBADF; - ssize_t ret; - - if (!conf || is_empty_string(filename) || is_empty_string(name) || - is_empty_string(lxcpath)) - return ret_errno(EINVAL); - - if ((buf && !len) || (len && !buf)) - return ret_errno(EINVAL); - - unified_fd = lxc_cmd_get_cgroup2_fd(name, lxcpath); - if (unified_fd < 0) - return ret_errno(ENOCGROUP2); - - ret = lxc_read_try_buf_at(unified_fd, filename, buf, len); - if (ret < 0) - SYSERROR("Failed to read cgroup value"); - - return ret; -} - /* Called externally (i.e. from 'lxc-cgroup') to query cgroup limits. Here we * don't have a cgroup_data set up, so we ask the running container through the * commands API for the cgroup path. @@ -2675,35 +2650,6 @@ static int device_cgroup_rule_parse(struct device_item *device, const char *key, return device_cgroup_parse_access(device, ++val); } -int cgroup_set(struct lxc_conf *conf, const char *name, const char *lxcpath, - const char *filename, const char *value) -{ - __do_close int unified_fd = -EBADF; - ssize_t ret; - - if (!conf || is_empty_string(filename) || is_empty_string(value) || - is_empty_string(name) || is_empty_string(lxcpath)) - return ret_errno(EINVAL); - - unified_fd = lxc_cmd_get_cgroup2_fd(name, lxcpath); - if (unified_fd < 0) - return ret_errno(ENOCGROUP2); - - if (strncmp(filename, "devices.", STRLITERALLEN("devices.")) == 0) { - struct device_item device = {}; - - ret = device_cgroup_rule_parse(&device, filename, value); - if (ret < 0) - return log_error_errno(-1, EINVAL, "Failed to parse device string %s=%s", filename, value); - - ret = lxc_cmd_add_bpf_device_cgroup(name, lxcpath, &device); - } else { - ret = lxc_writeat(unified_fd, filename, value, strlen(value)); - } - - return ret; -} - /* Called externally (i.e. from 'lxc-cgroup') to set new cgroup limits. Here we * don't have a cgroup_data set up, so we ask the running container through the * commands API for the cgroup path. @@ -3554,3 +3500,57 @@ struct cgroup_ops *cgfsng_ops_init(struct lxc_conf *conf) return move_ptr(cgfsng_ops); } + +int cgroup_get(struct lxc_conf *conf, + const char *name, const char *lxcpath, + const char *filename, char *buf, size_t len) +{ + __do_close int unified_fd = -EBADF; + ssize_t ret; + + if (!conf || is_empty_string(filename) || is_empty_string(name) || + is_empty_string(lxcpath)) + return ret_errno(EINVAL); + + if ((buf && !len) || (len && !buf)) + return ret_errno(EINVAL); + + unified_fd = lxc_cmd_get_cgroup2_fd(name, lxcpath); + if (unified_fd < 0) + return ret_errno(ENOCGROUP2); + + ret = lxc_read_try_buf_at(unified_fd, filename, buf, len); + if (ret < 0) + SYSERROR("Failed to read cgroup value"); + + return ret; +} + +int cgroup_set(struct lxc_conf *conf, const char *name, const char *lxcpath, + const char *filename, const char *value) +{ + __do_close int unified_fd = -EBADF; + ssize_t ret; + + if (!conf || is_empty_string(filename) || is_empty_string(value) || + is_empty_string(name) || is_empty_string(lxcpath)) + return ret_errno(EINVAL); + + unified_fd = lxc_cmd_get_cgroup2_fd(name, lxcpath); + if (unified_fd < 0) + return ret_errno(ENOCGROUP2); + + if (strncmp(filename, "devices.", STRLITERALLEN("devices.")) == 0) { + struct device_item device = {}; + + ret = device_cgroup_rule_parse(&device, filename, value); + if (ret < 0) + return log_error_errno(-1, EINVAL, "Failed to parse device string %s=%s", filename, value); + + ret = lxc_cmd_add_bpf_device_cgroup(name, lxcpath, &device); + } else { + ret = lxc_writeat(unified_fd, filename, value, strlen(value)); + } + + return ret; +}