From 79bb09eac54d91bf76268baa50ecebea1ab19708 Mon Sep 17 00:00:00 2001 From: David Oberhollenzer Date: Thu, 14 May 2020 16:20:27 +0200 Subject: Revert handling of wait type service to using state Signed-off-by: David Oberhollenzer --- initd/config.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'initd/config.c') 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) -- cgit v1.2.3