init fails to compile for !CONFIG_FEATURE_KILL_REMOVED

Bernhard Reutner-Fischer rep.dot.nop at gmail.com
Sat Feb 14 13:02:21 UTC 2009


Hi,

When CONFIG_FEATURE_KILL_REMOVED is off then we end up with

$ egrep "(INIT|KILL)" .config
CONFIG_INIT=y
CONFIG_FEATURE_USE_INITTAB=y
# CONFIG_FEATURE_KILL_REMOVED is not set
CONFIG_FEATURE_KILL_DELAY=
CONFIG_FEATURE_INIT_SCTTY=y
CONFIG_FEATURE_INIT_SYSLOG=y
CONFIG_FEATURE_INIT_COREDUMPS=y
CONFIG_FEATURE_INITRD=y
CONFIG_KILL=y
CONFIG_KILLALL=y
CONFIG_KILLALL5=y
CONFIG_PKILL=y

That KILL_DELAY does no good for this spot:

Index: init/init.c
===================================================================
--- init/init.c	(revision 25330)
+++ init/init.c	(working copy)
- improve helptext
@@ -788,10 +788,13 @@ static void reload_inittab(void)
 		for (a = init_action_list; a; a = a->next)
 			if (a->action_type == ONCE && a->pid != 0)
 				kill(a->pid, SIGTERM);
-		if (CONFIG_FEATURE_KILL_DELAY) {
+		if (ENABLE_FEATURE_KILL_DELAY) {
 			/* NB: parent will wait in NOMMU case */
 			if ((BB_MMU ? fork() : vfork()) == 0) { /* child */
-				sleep(CONFIG_FEATURE_KILL_DELAY);
+#if !ENABLE_FEATURE_KILL_REMOVED && ENABLE_FEATURE_KILL_DELAY
+#define CONFIG_FEATURE_KILL_DELAY_SECS 0 /* logic goof w/ kconfig */
+#endif
+				sleep(CONFIG_FEATURE_KILL_DELAY_SECS);
 				for (a = init_action_list; a; a = a->next)
 					if (a->action_type == ONCE && a->pid != 0)
 						kill(a->pid, SIGKILL);

This should work but doesn't sound too clean. Suggestions?


More information about the busybox mailing list