summaryrefslogtreecommitdiff
path: root/src/basic/cgroup-util.c
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2021-02-13 10:00:31 +0100
committerGitHub <noreply@github.com>2021-02-13 10:00:31 +0100
commitb3c57df0f554176e054c358811324bb629aedd02 (patch)
tree4169fed3eff7f472893019154add9369143e33c6 /src/basic/cgroup-util.c
parent7253850abf6e12e91671083642ecabe22fe99578 (diff)
parentd8a4d64bc37ad21381f584b6c25792995584c7a2 (diff)
downloadsystemd-b3c57df0f554176e054c358811324bb629aedd02.tar.gz
Merge pull request #18401 from anitazha/oomdxattr
oomd: implement avoid/omit support for cgroups
Diffstat (limited to 'src/basic/cgroup-util.c')
-rw-r--r--src/basic/cgroup-util.c41
1 files changed, 41 insertions, 0 deletions
diff --git a/src/basic/cgroup-util.c b/src/basic/cgroup-util.c
index bb20a12294..3c59ca5e10 100644
--- a/src/basic/cgroup-util.c
+++ b/src/basic/cgroup-util.c
@@ -635,6 +635,20 @@ int cg_get_xattr_malloc(const char *controller, const char *path, const char *na
return r;
}
+int cg_get_xattr_bool(const char *controller, const char *path, const char *name) {
+ _cleanup_free_ char *val = NULL;
+ int r;
+
+ assert(path);
+ assert(name);
+
+ r = cg_get_xattr_malloc(controller, path, name, &val);
+ if (r < 0)
+ return r;
+
+ return parse_boolean(val);
+}
+
int cg_remove_xattr(const char *controller, const char *path, const char *name) {
_cleanup_free_ char *fs = NULL;
int r;
@@ -1703,6 +1717,25 @@ int cg_get_attribute_as_bool(const char *controller, const char *path, const cha
return 0;
}
+int cg_get_owner(const char *controller, const char *path, uid_t *ret_uid) {
+ _cleanup_free_ char *f = NULL;
+ struct stat stats;
+ int r;
+
+ assert(ret_uid);
+
+ r = cg_get_path(controller, path, NULL, &f);
+ if (r < 0)
+ return r;
+
+ r = stat(f, &stats);
+ if (r < 0)
+ return -errno;
+
+ *ret_uid = stats.st_uid;
+ return 0;
+}
+
int cg_get_keyed_attribute_full(
const char *controller,
const char *path,
@@ -2185,3 +2218,11 @@ static const char* const managed_oom_mode_table[_MANAGED_OOM_MODE_MAX] = {
};
DEFINE_STRING_TABLE_LOOKUP(managed_oom_mode, ManagedOOMMode);
+
+static const char* const managed_oom_preference_table[_MANAGED_OOM_PREFERENCE_MAX] = {
+ [MANAGED_OOM_PREFERENCE_NONE] = "none",
+ [MANAGED_OOM_PREFERENCE_AVOID] = "avoid",
+ [MANAGED_OOM_PREFERENCE_OMIT] = "omit",
+};
+
+DEFINE_STRING_TABLE_LOOKUP(managed_oom_preference, ManagedOOMPreference);