From: Lennart Poettering Date: Mon, 7 May 2018 18:44:41 +0000 (+0200) Subject: process-util: add new helper call for adjusting the OOM score X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=8887727f94f7d803cfedd494cee61218c46d2483;p=elogind.git process-util: add new helper call for adjusting the OOM score And let's make use of it in execute.c --- 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)