diff options
author | Paul Fox <pgf@brightstareng.com> | 2006-06-01 13:17:49 +0000 |
---|---|---|
committer | Paul Fox <pgf@brightstareng.com> | 2006-06-01 13:17:49 +0000 |
commit | d112f8fa5e28fe21cf375d4dc3307dcfbdb3a300 (patch) | |
tree | 1f9fd1a6420c2c3c0461f76ef4e5b497a614c388 | |
parent | 8fc32d9326be21e4f5fb19762ba2bb38081153d5 (diff) | |
download | busybox-w32-d112f8fa5e28fe21cf375d4dc3307dcfbdb3a300.tar.gz busybox-w32-d112f8fa5e28fe21cf375d4dc3307dcfbdb3a300.tar.bz2 busybox-w32-d112f8fa5e28fe21cf375d4dc3307dcfbdb3a300.zip |
make halt and poweroff messages more accurate (i.e., claim "we're about to",
rather than "it's done", and combine with reboot handler to save space.
-rw-r--r-- | init/init.c | 45 |
1 files changed, 21 insertions, 24 deletions
diff --git a/init/init.c b/init/init.c index d072a2209..0290f667a 100644 --- a/init/init.c +++ b/init/init.c | |||
@@ -175,7 +175,7 @@ static const char * const environment[] = { | |||
175 | /* Function prototypes */ | 175 | /* Function prototypes */ |
176 | static void delete_init_action(struct init_action *a); | 176 | static void delete_init_action(struct init_action *a); |
177 | static int waitfor(const struct init_action *a, pid_t pid); | 177 | static int waitfor(const struct init_action *a, pid_t pid); |
178 | static void halt_signal(int sig); | 178 | static void shutdown_signal(int sig); |
179 | 179 | ||
180 | 180 | ||
181 | static void loop_forever(void) | 181 | static void loop_forever(void) |
@@ -395,7 +395,7 @@ static void open_new_terminal(const char *device, char fail) { | |||
395 | if (fail) | 395 | if (fail) |
396 | _exit(1); | 396 | _exit(1); |
397 | /* else */ | 397 | /* else */ |
398 | halt_signal(SIGUSR1); | 398 | shutdown_signal(SIGUSR1); |
399 | } | 399 | } |
400 | } | 400 | } |
401 | 401 | ||
@@ -746,33 +746,30 @@ static void exec_signal(int sig ATTRIBUTE_UNUSED) | |||
746 | } | 746 | } |
747 | } | 747 | } |
748 | 748 | ||
749 | static void halt_signal(int sig ATTRIBUTE_UNUSED) | 749 | static void shutdown_signal(int sig) |
750 | { | 750 | { |
751 | shutdown_system(); | 751 | char *m; |
752 | message(CONSOLE | LOG, "The system is halted."); | 752 | int rb; |
753 | sync(); | ||
754 | 753 | ||
755 | /* allow time for last message to reach serial console */ | ||
756 | sleep(2); | ||
757 | |||
758 | if (sig == SIGUSR2) | ||
759 | init_reboot(RB_POWER_OFF); | ||
760 | else | ||
761 | init_reboot(RB_HALT_SYSTEM); | ||
762 | |||
763 | loop_forever(); | ||
764 | } | ||
765 | |||
766 | static void reboot_signal(int sig ATTRIBUTE_UNUSED) | ||
767 | { | ||
768 | shutdown_system(); | 754 | shutdown_system(); |
769 | message(CONSOLE | LOG, "Please stand by while rebooting the system."); | 755 | |
756 | if (sig == SIGTERM) { | ||
757 | m = "reboot"; | ||
758 | rb = RB_AUTOBOOT; | ||
759 | } else if (sig == SIGUSR2) { | ||
760 | m = "poweroff"; | ||
761 | rb = RB_POWER_OFF; | ||
762 | } else { | ||
763 | m = "halt"; | ||
764 | rb = RB_HALT_SYSTEM; | ||
765 | } | ||
766 | message(CONSOLE | LOG, "Requesting system %s.", m); | ||
770 | sync(); | 767 | sync(); |
771 | 768 | ||
772 | /* allow time for last message to reach serial console */ | 769 | /* allow time for last message to reach serial console */ |
773 | sleep(2); | 770 | sleep(2); |
774 | 771 | ||
775 | init_reboot(RB_AUTOBOOT); | 772 | init_reboot(rb); |
776 | 773 | ||
777 | loop_forever(); | 774 | loop_forever(); |
778 | } | 775 | } |
@@ -1020,10 +1017,10 @@ int init_main(int argc, char **argv) | |||
1020 | * clear all of these in run() */ | 1017 | * clear all of these in run() */ |
1021 | signal(SIGHUP, exec_signal); | 1018 | signal(SIGHUP, exec_signal); |
1022 | signal(SIGQUIT, exec_signal); | 1019 | signal(SIGQUIT, exec_signal); |
1023 | signal(SIGUSR1, halt_signal); | 1020 | signal(SIGUSR1, shutdown_signal); |
1024 | signal(SIGUSR2, halt_signal); | 1021 | signal(SIGUSR2, shutdown_signal); |
1025 | signal(SIGINT, ctrlaltdel_signal); | 1022 | signal(SIGINT, ctrlaltdel_signal); |
1026 | signal(SIGTERM, reboot_signal); | 1023 | signal(SIGTERM, shutdown_signal); |
1027 | signal(SIGCONT, cont_handler); | 1024 | signal(SIGCONT, cont_handler); |
1028 | signal(SIGSTOP, stop_handler); | 1025 | signal(SIGSTOP, stop_handler); |
1029 | signal(SIGTSTP, stop_handler); | 1026 | signal(SIGTSTP, stop_handler); |