diff options
author | John Crispin <blogic@openwrt.org> | 2014-10-06 20:15:24 +0200 |
---|---|---|
committer | John Crispin <blogic@openwrt.org> | 2014-10-06 20:53:55 +0200 |
commit | f45672d80bf2fec4ccb7363de1da6adb9e3f4421 (patch) | |
tree | 7e7a51078ec38557272c099c06f86a3f206ef463 | |
parent | 5ca0a7069a50c6b588657cf648dc53192f2e7a7f (diff) | |
download | unitd-f45672d80bf2fec4ccb7363de1da6adb9e3f4421.tar unitd-f45672d80bf2fec4ccb7363de1da6adb9e3f4421.zip |
make procd wait for ubus to come up
Signed-off-by: John Crispin <blogic@openwrt.org>
-rw-r--r-- | procd.h | 1 | ||||
-rw-r--r-- | state.c | 14 | ||||
-rw-r--r-- | ubus.c | 1 |
3 files changed, 13 insertions, 3 deletions
@@ -35,6 +35,7 @@ void ubus_init_service(struct ubus_context *ctx); void ubus_init_system(struct ubus_context *ctx); void procd_state_next(void); +void procd_state_ubus_connect(void); void procd_shutdown(int event); void procd_early(void); void procd_preinit(void); @@ -27,6 +27,7 @@ enum { STATE_NONE = 0, STATE_EARLY, + STATE_UBUS, STATE_INIT, STATE_RUNNING, STATE_SHUTDOWN, @@ -49,16 +50,17 @@ static void state_enter(void) procd_coldplug(); break; - case STATE_INIT: + case STATE_UBUS: // try to reopen incase the wdt was not available before coldplug watchdog_init(0); LOG("- ubus -\n"); procd_connect_ubus(); - - LOG("- init -\n"); service_init(); service_start_early("ubus", ubus_cmd); + break; + case STATE_INIT: + LOG("- init -\n"); procd_inittab(); procd_inittab_run("respawn"); procd_inittab_run("askconsole"); @@ -118,6 +120,12 @@ void procd_state_next(void) state_enter(); } +void procd_state_ubus_connect(void) +{ + if (state == STATE_UBUS) + procd_state_next(); +} + void procd_shutdown(int event) { if (state >= STATE_SHUTDOWN) @@ -57,6 +57,7 @@ ubus_connect_cb(struct uloop_timeout *timeout) DEBUG(2, "Connected to ubus, id=%08x\n", ctx->local_id); ubus_add_uloop(ctx); + procd_state_ubus_connect(); } void |