4819ff0358b6317c195fd4b1768e03d09c871070Lennart Poettering/***
4819ff0358b6317c195fd4b1768e03d09c871070Lennart Poettering This file is part of systemd.
4819ff0358b6317c195fd4b1768e03d09c871070Lennart Poettering
4819ff0358b6317c195fd4b1768e03d09c871070Lennart Poettering Copyright 2012 Lennart Poettering
4819ff0358b6317c195fd4b1768e03d09c871070Lennart Poettering
4819ff0358b6317c195fd4b1768e03d09c871070Lennart Poettering systemd is free software; you can redistribute it and/or modify it
4819ff0358b6317c195fd4b1768e03d09c871070Lennart Poettering under the terms of the GNU Lesser General Public License as published by
4819ff0358b6317c195fd4b1768e03d09c871070Lennart Poettering the Free Software Foundation; either version 2.1 of the License, or
4819ff0358b6317c195fd4b1768e03d09c871070Lennart Poettering (at your option) any later version.
4819ff0358b6317c195fd4b1768e03d09c871070Lennart Poettering
4819ff0358b6317c195fd4b1768e03d09c871070Lennart Poettering systemd is distributed in the hope that it will be useful, but
4819ff0358b6317c195fd4b1768e03d09c871070Lennart Poettering WITHOUT ANY WARRANTY; without even the implied warranty of
4819ff0358b6317c195fd4b1768e03d09c871070Lennart Poettering MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
4819ff0358b6317c195fd4b1768e03d09c871070Lennart Poettering Lesser General Public License for more details.
4819ff0358b6317c195fd4b1768e03d09c871070Lennart Poettering
4819ff0358b6317c195fd4b1768e03d09c871070Lennart Poettering You should have received a copy of the GNU Lesser General Public License
4819ff0358b6317c195fd4b1768e03d09c871070Lennart Poettering along with systemd; If not, see <http://www.gnu.org/licenses/>.
4819ff0358b6317c195fd4b1768e03d09c871070Lennart Poettering***/
4819ff0358b6317c195fd4b1768e03d09c871070Lennart Poettering
24882e06c135584f16f31ba8a00fecde8b7f6fadLennart Poettering#include "kill.h"
8b43440b7ef4b81c69c31de7ff820dc07a780254Lennart Poettering#include "signal-util.h"
8b43440b7ef4b81c69c31de7ff820dc07a780254Lennart Poettering#include "string-table.h"
8b43440b7ef4b81c69c31de7ff820dc07a780254Lennart Poettering#include "util.h"
4819ff0358b6317c195fd4b1768e03d09c871070Lennart Poettering
4819ff0358b6317c195fd4b1768e03d09c871070Lennart Poetteringvoid kill_context_init(KillContext *c) {
4819ff0358b6317c195fd4b1768e03d09c871070Lennart Poettering assert(c);
4819ff0358b6317c195fd4b1768e03d09c871070Lennart Poettering
4819ff0358b6317c195fd4b1768e03d09c871070Lennart Poettering c->kill_signal = SIGTERM;
4819ff0358b6317c195fd4b1768e03d09c871070Lennart Poettering c->send_sigkill = true;
82659fd7571bda0f3dce9755b89a23c411d53ddaLennart Poettering c->send_sighup = false;
4819ff0358b6317c195fd4b1768e03d09c871070Lennart Poettering}
4819ff0358b6317c195fd4b1768e03d09c871070Lennart Poettering
4819ff0358b6317c195fd4b1768e03d09c871070Lennart Poetteringvoid kill_context_dump(KillContext *c, FILE *f, const char *prefix) {
4819ff0358b6317c195fd4b1768e03d09c871070Lennart Poettering assert(c);
4819ff0358b6317c195fd4b1768e03d09c871070Lennart Poettering
4819ff0358b6317c195fd4b1768e03d09c871070Lennart Poettering if (!prefix)
4819ff0358b6317c195fd4b1768e03d09c871070Lennart Poettering prefix = "";
4819ff0358b6317c195fd4b1768e03d09c871070Lennart Poettering
4819ff0358b6317c195fd4b1768e03d09c871070Lennart Poettering fprintf(f,
4819ff0358b6317c195fd4b1768e03d09c871070Lennart Poettering "%sKillMode: %s\n"
4819ff0358b6317c195fd4b1768e03d09c871070Lennart Poettering "%sKillSignal: SIG%s\n"
82659fd7571bda0f3dce9755b89a23c411d53ddaLennart Poettering "%sSendSIGKILL: %s\n"
82659fd7571bda0f3dce9755b89a23c411d53ddaLennart Poettering "%sSendSIGHUP: %s\n",
4819ff0358b6317c195fd4b1768e03d09c871070Lennart Poettering prefix, kill_mode_to_string(c->kill_mode),
4819ff0358b6317c195fd4b1768e03d09c871070Lennart Poettering prefix, signal_to_string(c->kill_signal),
82659fd7571bda0f3dce9755b89a23c411d53ddaLennart Poettering prefix, yes_no(c->send_sigkill),
82659fd7571bda0f3dce9755b89a23c411d53ddaLennart Poettering prefix, yes_no(c->send_sighup));
4819ff0358b6317c195fd4b1768e03d09c871070Lennart Poettering}
4819ff0358b6317c195fd4b1768e03d09c871070Lennart Poettering
4819ff0358b6317c195fd4b1768e03d09c871070Lennart Poetteringstatic const char* const kill_mode_table[_KILL_MODE_MAX] = {
4819ff0358b6317c195fd4b1768e03d09c871070Lennart Poettering [KILL_CONTROL_GROUP] = "control-group",
4819ff0358b6317c195fd4b1768e03d09c871070Lennart Poettering [KILL_PROCESS] = "process",
58ea275a68cd242ad60161bcb7582614d1d89f13Lennart Poettering [KILL_MIXED] = "mixed",
4819ff0358b6317c195fd4b1768e03d09c871070Lennart Poettering [KILL_NONE] = "none"
4819ff0358b6317c195fd4b1768e03d09c871070Lennart Poettering};
4819ff0358b6317c195fd4b1768e03d09c871070Lennart Poettering
4819ff0358b6317c195fd4b1768e03d09c871070Lennart PoetteringDEFINE_STRING_TABLE_LOOKUP(kill_mode, KillMode);
4819ff0358b6317c195fd4b1768e03d09c871070Lennart Poettering
4819ff0358b6317c195fd4b1768e03d09c871070Lennart Poetteringstatic const char* const kill_who_table[_KILL_WHO_MAX] = {
4819ff0358b6317c195fd4b1768e03d09c871070Lennart Poettering [KILL_MAIN] = "main",
4819ff0358b6317c195fd4b1768e03d09c871070Lennart Poettering [KILL_CONTROL] = "control",
ac5e3a505e49c80b56c971a8fc13bacac961640dJan Synacek [KILL_ALL] = "all",
ac5e3a505e49c80b56c971a8fc13bacac961640dJan Synacek [KILL_MAIN_FAIL] = "main-fail",
ac5e3a505e49c80b56c971a8fc13bacac961640dJan Synacek [KILL_CONTROL_FAIL] = "control-fail",
ac5e3a505e49c80b56c971a8fc13bacac961640dJan Synacek [KILL_ALL_FAIL] = "all-fail"
4819ff0358b6317c195fd4b1768e03d09c871070Lennart Poettering};
4819ff0358b6317c195fd4b1768e03d09c871070Lennart Poettering
4819ff0358b6317c195fd4b1768e03d09c871070Lennart PoetteringDEFINE_STRING_TABLE_LOOKUP(kill_who, KillWho);