aboutsummaryrefslogtreecommitdiff
path: root/init/halt.c
diff options
context:
space:
mode:
authorAlexander Shishkin <virtuoso@slind.org>2009-07-27 02:49:35 +0200
committerDenys Vlasenko <vda.linux@googlemail.com>2009-07-27 02:55:02 +0200
commit97af2ff8caa782f623e79408f0dfe608c878d5a6 (patch)
tree7961767258bd73c421f5b219221462efae1a1f0c /init/halt.c
parentd1090c91ccbd75b30f30a70dbbb2e0f7b129f083 (diff)
downloadbusybox-w32-97af2ff8caa782f623e79408f0dfe608c878d5a6.tar.gz
busybox-w32-97af2ff8caa782f623e79408f0dfe608c878d5a6.tar.bz2
busybox-w32-97af2ff8caa782f623e79408f0dfe608c878d5a6.zip
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>
Diffstat (limited to 'init/halt.c')
-rw-r--r--init/halt.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/init/halt.c b/init/halt.c
index 3a23ecabb..c88c333e7 100644
--- a/init/halt.c
+++ b/init/halt.c
@@ -85,6 +85,8 @@ int halt_main(int argc UNUSED_PARAM, char **argv)
85//TODO: I tend to think that signalling linuxrc is wrong 85//TODO: I tend to think that signalling linuxrc is wrong
86// pity original author didn't comment on it... 86// pity original author didn't comment on it...
87 if (ENABLE_FEATURE_INITRD) { 87 if (ENABLE_FEATURE_INITRD) {
88 /* talk to linuxrc */
89 /* bbox init/linuxrc assumed */
88 pid_t *pidlist = find_pid_by_name("linuxrc"); 90 pid_t *pidlist = find_pid_by_name("linuxrc");
89 if (pidlist[0] > 0) 91 if (pidlist[0] > 0)
90 rc = kill(pidlist[0], signals[which]); 92 rc = kill(pidlist[0], signals[which]);
@@ -92,7 +94,21 @@ int halt_main(int argc UNUSED_PARAM, char **argv)
92 free(pidlist); 94 free(pidlist);
93 } 95 }
94 if (rc) { 96 if (rc) {
95 rc = kill(1, signals[which]); 97 /* talk to init */
98 if (!ENABLE_FEATURE_CALL_TELINIT) {
99 /* bbox init assumed */
100 rc = kill(1, signals[which]);
101 } else {
102 /* SysV style init assumed */
103 /* runlevels:
104 * 0 == shutdown
105 * 6 == reboot */
106 rc = execlp(CONFIG_TELINIT_PATH,
107 CONFIG_TELINIT_PATH,
108 which == 2 ? "6" : "0",
109 (char *)NULL
110 );
111 }
96 } 112 }
97 } else { 113 } else {
98 rc = reboot(magic[which]); 114 rc = reboot(magic[which]);