X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fjobs.c;h=f30904a827ec97b5c68a67e067a3bfb89503ac17;hb=418ba126a955ee38804152c6c905ff200bbc1a92;hp=4a88c3036bc05b86cc840880b6e82d71c7e4d0b0;hpb=2ff91c09a03daaa21a0188fdbcdc62f1fb8874e5;p=src%2Fapp-framework-binder.git diff --git a/src/jobs.c b/src/jobs.c index 4a88c303..f30904a8 100644 --- a/src/jobs.c +++ b/src/jobs.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2016, 2017, 2018 "IoT.bzh" + * Copyright (C) 2016-2019 "IoT.bzh" * Author José Bollo * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -17,12 +17,6 @@ #define _GNU_SOURCE -#if defined(NO_JOBS_WATCHDOG) -# define HAS_WATCHDOG 0 -#else -# define HAS_WATCHDOG 1 -#endif - #include #include #include @@ -36,10 +30,6 @@ #include #include -#include "fdev.h" -#if HAS_WATCHDOG -#include -#endif #include "jobs.h" #include "sig-monitor.h" @@ -71,7 +61,6 @@ struct evloop unsigned state; /**< encoded state */ int efd; /**< event notification */ struct sd_event *sdev; /**< the systemd event loop */ - struct fdev *fdev; /**< handling of events */ struct thread *holder; /**< holder of the evloop */ }; @@ -337,7 +326,7 @@ static void evloop_release() { struct thread *nh, *ct = current_thread; - if (evloop.holder == ct) { + if (ct && evloop.holder == ct) { nh = ct->nholder; evloop.holder = nh; if (nh) @@ -355,6 +344,9 @@ static int evloop_get() if (evloop.holder) return evloop.holder == ct; + if (!evloop.sdev) + return 0; + ct->nholder = NULL; evloop.holder = ct; return 1; @@ -397,6 +389,7 @@ static void evloop_acquire() */ static void thread_enter(volatile struct thread *me) { + evloop_release(); /* initialize description of itself and link it in the list */ me->tid = pthread_self(); me->stop = 0; @@ -888,12 +881,6 @@ int jobs_start(int allowed_count, int start_count, int waiter_count, void (*star running = 0; remains = waiter_count; -#if HAS_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: the current one */ launched = 1; while (launched < start_count) {