From 8887727f94f7d803cfedd494cee61218c46d2483 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 7 May 2018 20:44:41 +0200 Subject: [PATCH] process-util: add new helper call for adjusting the OOM score And let's make use of it in execute.c --- src/basic/process-util.c | 9 +++++++++ src/basic/process-util.h | 2 ++ 2 files changed, 11 insertions(+) diff --git a/src/basic/process-util.c b/src/basic/process-util.c index 27a593981..43bad9009 100644 --- a/src/basic/process-util.c +++ b/src/basic/process-util.c @@ -1457,6 +1457,15 @@ int fork_agent(const char *name, const int except[], size_t n_except, pid_t *ret _exit(EXIT_FAILURE); } +int set_oom_score_adjust(int value) { + char t[DECIMAL_STR_MAX(int)]; + + sprintf(t, "%i", value); + + return write_string_file("/proc/self/oom_score_adj", t, + WRITE_STRING_FILE_VERIFY_ON_FAILURE|WRITE_STRING_FILE_DISABLE_BUFFER); +} + #if 0 /// UNNEEDED by elogind static const char *const ioprio_class_table[] = { [IOPRIO_CLASS_NONE] = "none", diff --git a/src/basic/process-util.h b/src/basic/process-util.h index e44f136e5..a5f749b4e 100644 --- a/src/basic/process-util.h +++ b/src/basic/process-util.h @@ -191,6 +191,8 @@ static inline int safe_fork(const char *name, ForkFlags flags, pid_t *ret_pid) { int fork_agent(const char *name, const int except[], size_t n_except, pid_t *pid, const char *path, ...); +int set_oom_score_adjust(int value); + #if SIZEOF_PID_T == 4 /* The highest possibly (theoretic) pid_t value on this architecture. */ #define PID_T_MAX ((pid_t) INT32_MAX) -- 2.30.2