Add "slow_start" keyword to init

This keyword will cause init to wait a few seconds before exec'ing
the target binary.  Maybe only useful for hacks and debugging.

Change-Id: I85caa0bcbc0be7e48bd21eb9e31e039c0740c8d5
diff --git a/init/init.c b/init/init.c
index 7aef387..ea7687d 100755
--- a/init/init.c
+++ b/init/init.c
@@ -196,6 +196,10 @@
         char tmp[32];
         int fd, sz;
 
+        if (svc->flags & SVC_SLOW_START) {
+            sleep(5);
+        }
+
         if (properties_inited()) {
             get_property_workspace(&fd, &sz);
             sprintf(tmp, "%d,%d", dup(fd), sz);
diff --git a/init/init.h b/init/init.h
index 8691335..9a202b7 100644
--- a/init/init.h
+++ b/init/init.h
@@ -69,6 +69,7 @@
 #define SVC_RESTARTING  0x08  /* waiting to restart */
 #define SVC_CONSOLE     0x10  /* requires console */
 #define SVC_CRITICAL    0x20  /* will reboot into recovery if keeps crashing */
+#define SVC_SLOW_START  0x40  /* wait a few seconds before starting */
 
 #define NR_SVC_SUPP_GIDS 12    /* twelve supplementary groups */
 
diff --git a/init/init_parser.c b/init/init_parser.c
index d136c28..1b7522c 100644
--- a/init/init_parser.c
+++ b/init/init_parser.c
@@ -131,6 +131,7 @@
         if (!strcmp(s, "etkey")) return K_setkey;
         if (!strcmp(s, "etprop")) return K_setprop;
         if (!strcmp(s, "etrlimit")) return K_setrlimit;
+        if (!strcmp(s, "low_start")) return K_slow_start;
         if (!strcmp(s, "ocket")) return K_socket;
         if (!strcmp(s, "tart")) return K_start;
         if (!strcmp(s, "top")) return K_stop;
@@ -564,6 +565,9 @@
     case K_critical:
         svc->flags |= SVC_CRITICAL;
         break;
+    case K_slow_start:
+        svc->flags |= SVC_SLOW_START;
+        break;
     case K_setenv: { /* name value */
         struct svcenvinfo *ei;
         if (nargs < 2) {
diff --git a/init/keywords.h b/init/keywords.h
index 25315d8..8710523 100644
--- a/init/keywords.h
+++ b/init/keywords.h
@@ -62,6 +62,7 @@
     KEYWORD(setkey,      COMMAND, 0, do_setkey)
     KEYWORD(setprop,     COMMAND, 2, do_setprop)
     KEYWORD(setrlimit,   COMMAND, 3, do_setrlimit)
+    KEYWORD(slow_start,  OPTION,  0, 0)
     KEYWORD(socket,      OPTION,  0, 0)
     KEYWORD(start,       COMMAND, 1, do_start)
     KEYWORD(stop,        COMMAND, 1, do_stop)