diff options
author | Denis Vlasenko | 2009-01-31 14:22:24 +0000 |
---|---|---|
committer | Denis Vlasenko | 2009-01-31 14:22:24 +0000 |
commit | e35af567900ec2a7abb17e09cc5b5641f7faafe7 (patch) | |
tree | a1a065a9d053e10303720c90eb68b148701ebd8a /init | |
parent | fc2a4fc2ba8022ce2ea6dc0f66ba4ef0be1fa805 (diff) | |
download | busybox-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.in | 1 | ||||
-rw-r--r-- | init/init.c | 18 |
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 */ |