summaryrefslogtreecommitdiff
path: root/execute.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2010-01-28 02:53:56 +0100
committerLennart Poettering <lennart@poettering.net>2010-01-28 02:53:56 +0100
commitfb33a393e21a15ce3b4ac8c16d947fd9b6e77206 (patch)
tree8e763555a776bf088384ed44145827e007ae8dfc /execute.c
parentd46de8a1a249e179687361dcaeba27e1c586253a (diff)
set nice/oom_adjust only when asked for
Diffstat (limited to 'execute.c')
-rw-r--r--execute.c42
1 files changed, 26 insertions, 16 deletions
diff --git a/execute.c b/execute.c
index ccf951a25a..cbefadfca0 100644
--- a/execute.c
+++ b/execute.c
@@ -263,7 +263,6 @@ int exec_spawn(const ExecCommand *command, const ExecContext *context, int *fds,
if (pid == 0) {
char **e, **f = NULL;
int i, r;
- char t[16];
sigset_t ss;
/* child */
@@ -286,19 +285,24 @@ int exec_spawn(const ExecCommand *command, const ExecContext *context, int *fds,
goto fail;
}
- snprintf(t, sizeof(t), "%i", context->oom_adjust);
- char_array_0(t);
+ if (context->oom_adjust_set) {
+ char t[16];
- if (write_one_line_file("/proc/self/oom_adj", t) < 0) {
- r = EXIT_OOM_ADJUST;
- goto fail;
- }
+ snprintf(t, sizeof(t), "%i", context->oom_adjust);
+ char_array_0(t);
- if (setpriority(PRIO_PROCESS, 0, context->nice) < 0) {
- r = EXIT_NICE;
- goto fail;
+ if (write_one_line_file("/proc/self/oom_adj", t) < 0) {
+ r = EXIT_OOM_ADJUST;
+ goto fail;
+ }
}
+ if (context->nice_set)
+ if (setpriority(PRIO_PROCESS, 0, context->nice) < 0) {
+ r = EXIT_NICE;
+ goto fail;
+ }
+
if (close_fds(fds, n_fds) < 0 ||
shift_fds(fds, n_fds) < 0 ||
flags_fds(fds, n_fds) < 0) {
@@ -428,13 +432,19 @@ void exec_context_dump(ExecContext *c, FILE* f, const char *prefix) {
fprintf(f,
"%sUmask: %04o\n"
- "%sDirectory: %s\n"
- "%sNice: %i\n"
- "%sOOMAdjust: %i\n",
+ "%sDirectory: %s\n",
prefix, c->umask,
- prefix, c->directory ? c->directory : "/",
- prefix, c->nice,
- prefix, c->oom_adjust);
+ prefix, c->directory ? c->directory : "/");
+
+ if (c->nice_set)
+ fprintf(f,
+ "%sNice: %i\n",
+ prefix, c->nice);
+
+ if (c->oom_adjust_set)
+ fprintf(f,
+ "%sOOMAdjust: %i\n",
+ prefix, c->oom_adjust);
}
void exec_status_fill(ExecStatus *s, pid_t pid, int code, int status) {