Skip to content

Commit

Permalink
service.c: set/clear condition 'done' for run tasks
Browse files Browse the repository at this point in the history
We like to know when a runtask (run/task/sysv)is done, so as to start
the services that depending on it, set a oneshot condition 'done' for
that case and clear it when runtask services enter HALTED state.

Signed-off-by: Ming Liu <liu.ming50@gmail.com>
  • Loading branch information
liuming50 committed Feb 5, 2022
1 parent f930953 commit a669c94
Showing 1 changed file with 15 additions and 0 deletions.
15 changes: 15 additions & 0 deletions src/service.c
Original file line number Diff line number Diff line change
Expand Up @@ -1677,6 +1677,21 @@ static void svc_set_state(svc_t *svc, svc_state_t new)
service_timeout_cancel(svc);
service_timeout_after(svc, svc->killdelay, service_kill);
}

if (svc_is_runtask(svc)) {
char cond[MAX_COND_LEN];

snprintf(done, sizeof(done), "%s/%s/done", svc->type, svc->name);

/* create done condition when entering SVC_DONE_STATE. */
if (*state == SVC_DONE_STATE)
cond_set_oneshot(cond);

/* clear done condition when entering SVC_HALTED_STATE. */
if (*state == SVC_HALTED_STATE)
cond_clear(cond);

}
}

/*
Expand Down

0 comments on commit a669c94

Please sign in to comment.