diff options
author | David Oberhollenzer <goliath@infraroot.at> | 2020-05-14 16:20:27 +0200 |
---|---|---|
committer | David Oberhollenzer <goliath@infraroot.at> | 2020-05-14 16:20:27 +0200 |
commit | 79bb09eac54d91bf76268baa50ecebea1ab19708 (patch) | |
tree | 6d9c6e6b74d727bafa482d670ecaa9c310d29aba /initd/config.c | |
parent | 16b22a831c490b8dd1b5f81a4955e6f13f22705d (diff) |
Revert handling of wait type service to using state
Signed-off-by: David Oberhollenzer <goliath@infraroot.at>
Diffstat (limited to 'initd/config.c')
-rw-r--r-- | initd/config.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/initd/config.c b/initd/config.c index d994faa..fa12ab2 100644 --- a/initd/config.c +++ b/initd/config.c @@ -15,6 +15,7 @@ static size_t queue_count[TGT_MAX]; /* current state */ static size_t queue_idx = 0; static int target = TGT_BOOT; +static svc_run_data_t *waiting = NULL; int config_load(void) { @@ -62,6 +63,24 @@ int config_load(void) return 0; } +void config_set_waiting(svc_run_data_t *rt) +{ + assert(waiting == NULL); + waiting = rt; +} + +bool config_is_waiting(void) +{ + if (waiting != NULL) { + if (waiting->state == STATE_RUNNING) + return true; + + waiting = NULL; + } + + return false; +} + svc_run_data_t *config_rt_data_by_pid(pid_t pid) { size_t i; @@ -79,6 +98,9 @@ svc_run_data_t *config_rt_data_by_pid(pid_t pid) svc_run_data_t *config_dequeue(void) { + if (config_is_waiting()) + return NULL; + if (queue_idx >= queue_count[target]) return NULL; @@ -100,6 +122,7 @@ void config_set_target(int tgt) target = tgt; queue_idx = 0; + waiting = NULL; } bool config_should_respawn(void) |