summaryrefslogtreecommitdiffstats
path: root/src/evmgr.h
diff options
context:
space:
mode:
authorJosé Bollo <jose.bollo@iot.bzh>2019-05-28 09:37:11 +0200
committerJosé Bollo <jose.bollo@iot.bzh>2019-05-29 08:58:56 +0000
commitf9c743046f94769c25ffc5bfd8d190c53cc4d613 (patch)
tree1a1acec49d5638a1e33e2ba0484b3465f6dd3de2 /src/evmgr.h
parent02fe255525d3805350676445b5c8854afa46cbe4 (diff)
jobs: Fix infinite wait lock
The binder was sometime locked until an external event comes. This was discovered during stressing startup test that don't expect external inputs and that then waits for always without terminating. The issue came from a little hole in the management of the state of evmgr object. By design the evmgr has to be synchronised against concurrent accesses not by itself but by the integration. However, the state of "running" wasn't set in the code protected against concurent accesses. The new function allows the integrator to correctly set the state before releasing protection. Bug-AGL: SPEC-2459 Signed-off-by: José Bollo <jose.bollo@iot.bzh> Change-Id: Id75fd97c06d69666ced912a0a61380573dab31af
Diffstat (limited to 'src/evmgr.h')
-rw-r--r--src/evmgr.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/evmgr.h b/src/evmgr.h
index c78ea33f..2dde16b3 100644
--- a/src/evmgr.h
+++ b/src/evmgr.h
@@ -20,6 +20,7 @@
struct evmgr;
+extern void evmgr_prepare_run(struct evmgr *evmgr);
extern void evmgr_run(struct evmgr *evmgr);
extern void evmgr_job_run(int signum, struct evmgr *evmgr);
extern int evmgr_can_run(struct evmgr *evmgr);