summaryrefslogtreecommitdiff
path: root/init
diff options
context:
space:
mode:
authorDenis Vlasenko2009-01-31 14:22:24 +0000
committerDenis Vlasenko2009-01-31 14:22:24 +0000
commite35af567900ec2a7abb17e09cc5b5641f7faafe7 (patch)
treea1a065a9d053e10303720c90eb68b148701ebd8a /init
parentfc2a4fc2ba8022ce2ea6dc0f66ba4ef0be1fa805 (diff)
downloadbusybox-e35af567900ec2a7abb17e09cc5b5641f7faafe7.zip
busybox-e35af567900ec2a7abb17e09cc5b5641f7faafe7.tar.gz
modutils-24: use xasprintf and xzalloc where appropriate,
remove unreachanble code build system: correct some dependencies in config system init: convert one #if into if() - for Rob. function old new delta obj_string_patch 136 129 -7 bb_init_module_24 4759 4615 -144 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-151) Total: -151 bytes
Diffstat (limited to 'init')
-rw-r--r--init/Config.in1
-rw-r--r--init/init.c18
2 files changed, 10 insertions, 9 deletions
diff --git a/init/Config.in b/init/Config.in
index 6b5799f..395c9e2 100644
--- a/init/Config.in
+++ b/init/Config.in
@@ -32,6 +32,7 @@ config FEATURE_KILL_DELAY
int "How long to wait between TERM and KILL (0 - send TERM only)" if FEATURE_KILL_REMOVED
range 0 1024
default 0
+ depends on FEATURE_KILL_REMOVED
help
With nonzero setting, init sends TERM, forks, child waits N
seconds, sends KILL and exits. Setting it too high is unwise
diff --git a/init/init.c b/init/init.c
index 59d0709..ed01e71 100644
--- a/init/init.c
+++ b/init/init.c
@@ -780,16 +780,16 @@ static void reload_inittab(void)
for (a = init_action_list; a; a = a->next)
if (a->pid != 0)
kill(a->pid, SIGTERM);
-#if CONFIG_FEATURE_KILL_DELAY
- /* NB: parent will wait in NOMMU case */
- if ((BB_MMU ? fork() : vfork()) == 0) { /* child */
- sleep(CONFIG_FEATURE_KILL_DELAY);
- for (a = init_action_list; a; a = a->next)
- if (a->pid != 0)
- kill(a->pid, SIGKILL);
- _exit(EXIT_SUCCESS);
+ if (CONFIG_FEATURE_KILL_DELAY) {
+ /* NB: parent will wait in NOMMU case */
+ if ((BB_MMU ? fork() : vfork()) == 0) { /* child */
+ sleep(CONFIG_FEATURE_KILL_DELAY);
+ for (a = init_action_list; a; a = a->next)
+ if (a->pid != 0)
+ kill(a->pid, SIGKILL);
+ _exit(EXIT_SUCCESS);
+ }
}
-#endif
}
/* Remove old and unused entries */