X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fjobs.c;h=952720bd78cd3f1a9cac0f96f9fd6d09c1e25741;hb=afff776f7e27c8be7610cfbd23c4d1be32699ed9;hp=d469c101052c9f4f3a3418bd4c53801a046267fd;hpb=d05f95deefca2836b9f4904711a7fda1c52cd85b;p=src%2Fapp-framework-binder.git diff --git a/src/jobs.c b/src/jobs.c index d469c101..952720bd 100644 --- a/src/jobs.c +++ b/src/jobs.c @@ -29,6 +29,9 @@ #include #include +#ifndef NO_JOBS_WATCHDOG +#include +#endif #include "jobs.h" #include "sig-monitor.h" @@ -729,7 +732,7 @@ struct sd_event *jobs_get_sd_event() * @param start The start routine to activate (can't be NULL) * @return 0 in case of success or -1 in case of error. */ -int jobs_start(int allowed_count, int start_count, int waiter_count, void (*start)(int signum)) +int jobs_start(int allowed_count, int start_count, int waiter_count, void (*start)(int signum, void* arg), void *arg) { int rc, launched; struct thread me; @@ -762,6 +765,12 @@ int jobs_start(int allowed_count, int start_count, int waiter_count, void (*star running = 0; remains = waiter_count; +#ifndef NO_JOBS_WATCHDOG + /* set the watchdog */ + if (sd_watchdog_enabled(0, NULL)) + sd_event_set_watchdog(get_sd_event_locked(), 1); +#endif + /* start at least one thread */ launched = 0; while ((launched + 1) < start_count) { @@ -773,7 +782,7 @@ int jobs_start(int allowed_count, int start_count, int waiter_count, void (*star } /* queue the start job */ - job = job_create(NULL, 0, (job_cb_t)start, NULL); + job = job_create(NULL, 0, start, arg); if (!job) { ERROR("out of memory"); errno = ENOMEM;