init: make comment more understandable. no code changes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko 2009-07-19 14:29:18 +02:00
parent 4abfc2642d
commit 3ed181b7ac

View File

@ -960,7 +960,6 @@ int init_main(int argc UNUSED_PARAM, char **argv)
bb_signals_recursive_norestart((1 << SIGHUP), record_signo); bb_signals_recursive_norestart((1 << SIGHUP), record_signo);
/* Now run the looping stuff for the rest of forever. /* Now run the looping stuff for the rest of forever.
* NB: if delayed signal happened, avoid blocking in wait().
*/ */
while (1) { while (1) {
int maybe_WNOHANG; int maybe_WNOHANG;
@ -976,10 +975,11 @@ int init_main(int argc UNUSED_PARAM, char **argv)
maybe_WNOHANG |= check_delayed_sigs(); maybe_WNOHANG |= check_delayed_sigs();
/* Wait for any child process(es) to exit. /* Wait for any child process(es) to exit.
* NB: "delayed" signals will also interrupt this wait(), *
* bb_signals_recursive_norestart() set them up for that. * If check_delayed_sigs above reported that a signal
* This guarantees we won't be stuck here * was caught, wait will be nonblocking. This ensures
* till next orphan dies. * that if SIGHUP has reloaded inittab, respawn and askfirst
* actions will not be delayed until next child death.
*/ */
if (maybe_WNOHANG) if (maybe_WNOHANG)
maybe_WNOHANG = WNOHANG; maybe_WNOHANG = WNOHANG;
@ -987,6 +987,9 @@ int init_main(int argc UNUSED_PARAM, char **argv)
pid_t wpid; pid_t wpid;
struct init_action *a; struct init_action *a;
/* If signals happen _in_ the wait, they interrupt it,
* bb_signals_recursive_norestart set them up that way
*/
wpid = waitpid(-1, NULL, maybe_WNOHANG); wpid = waitpid(-1, NULL, maybe_WNOHANG);
if (wpid <= 0) if (wpid <= 0)
break; break;