halt/reboot/poweroff: add a CONFIG_xxx to act SysV compatibly

Signed-off-by: Alexander Shishkin <virtuoso@slind.org>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Alexander Shishkin
2009-07-27 02:49:35 +02:00
committed by Denys Vlasenko
parent d1090c91cc
commit 97af2ff8ca
2 changed files with 37 additions and 1 deletions

View File

@ -85,6 +85,8 @@ int halt_main(int argc UNUSED_PARAM, char **argv)
//TODO: I tend to think that signalling linuxrc is wrong
// pity original author didn't comment on it...
if (ENABLE_FEATURE_INITRD) {
/* talk to linuxrc */
/* bbox init/linuxrc assumed */
pid_t *pidlist = find_pid_by_name("linuxrc");
if (pidlist[0] > 0)
rc = kill(pidlist[0], signals[which]);
@ -92,7 +94,21 @@ int halt_main(int argc UNUSED_PARAM, char **argv)
free(pidlist);
}
if (rc) {
rc = kill(1, signals[which]);
/* talk to init */
if (!ENABLE_FEATURE_CALL_TELINIT) {
/* bbox init assumed */
rc = kill(1, signals[which]);
} else {
/* SysV style init assumed */
/* runlevels:
* 0 == shutdown
* 6 == reboot */
rc = execlp(CONFIG_TELINIT_PATH,
CONFIG_TELINIT_PATH,
which == 2 ? "6" : "0",
(char *)NULL
);
}
}
} else {
rc = reboot(magic[which]);