mirror of
https://github.com/systemd/systemd.git
synced 2025-03-31 14:50:15 +03:00
initctl: check for kexec_loaded when reboot is requested through initctl
This commit is contained in:
parent
240fc26e03
commit
65457142f1
@ -93,6 +93,8 @@ static const char *translate_runlevel(int runlevel, bool *isolate) {
|
||||
for (i = 0; i < ELEMENTSOF(table); i++)
|
||||
if (table[i].runlevel == runlevel) {
|
||||
*isolate = table[i].isolate;
|
||||
if (runlevel == '6' && kexec_loaded())
|
||||
return SPECIAL_KEXEC_TARGET;
|
||||
return table[i].special;
|
||||
}
|
||||
|
||||
|
@ -4427,18 +4427,6 @@ static int parse_time_spec(const char *t, usec_t *_u) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
static bool kexec_loaded(void) {
|
||||
bool loaded = false;
|
||||
char *s;
|
||||
|
||||
if (read_one_line_file("/sys/kernel/kexec_loaded", &s) >= 0) {
|
||||
if (s[0] == '1')
|
||||
loaded = true;
|
||||
free(s);
|
||||
}
|
||||
return loaded;
|
||||
}
|
||||
|
||||
static int shutdown_parse_argv(int argc, char *argv[]) {
|
||||
|
||||
enum {
|
||||
|
12
src/util.c
12
src/util.c
@ -5852,3 +5852,15 @@ static const char *const signal_table[] = {
|
||||
};
|
||||
|
||||
DEFINE_STRING_TABLE_LOOKUP(signal, int);
|
||||
|
||||
bool kexec_loaded(void) {
|
||||
bool loaded = false;
|
||||
char *s;
|
||||
|
||||
if (read_one_line_file("/sys/kernel/kexec_loaded", &s) >= 0) {
|
||||
if (s[0] == '1')
|
||||
loaded = true;
|
||||
free(s);
|
||||
}
|
||||
return loaded;
|
||||
}
|
||||
|
@ -504,4 +504,6 @@ int signal_from_string_try_harder(const char *s);
|
||||
extern int saved_argc;
|
||||
extern char **saved_argv;
|
||||
|
||||
bool kexec_loaded(void);
|
||||
|
||||
#endif
|
||||
|
Loading…
x
Reference in New Issue
Block a user