aboutsummaryrefslogtreecommitdiffstats
path: root/src/jobs.h
diff options
context:
space:
mode:
authorJosé Bollo <jose.bollo@iot.bzh>2017-03-30 13:33:11 +0200
committerJosé Bollo <jose.bollo@iot.bzh>2017-03-30 13:33:11 +0200
commit89c44a872117fb8f64d38cbccf8f36776f2623f6 (patch)
tree89b26e67440c1f6f77fc6c1fcdeccf3b1ea1fb37 /src/jobs.h
parent391ada39d89f9f90d186aed8e1d825be9c17a328 (diff)
Fix concurrency issues on event manager
Having only one event manager is not possible in multithreading due to the way that systemd has to manage timer events. We observed that timers were not armed when set in a thread because event was polling in an other thread. This patch provides more than one event manager and at most as many as the number of threads avalaible to start. Change-Id: Iaeab353b7bc79ce61361ab73c7b197a9e69a6109 Signed-off-by: José Bollo <jose.bollo@iot.bzh>
Diffstat (limited to 'src/jobs.h')
-rw-r--r--src/jobs.h5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/jobs.h b/src/jobs.h
index 3c0746ce..0eceef3d 100644
--- a/src/jobs.h
+++ b/src/jobs.h
@@ -17,6 +17,8 @@
#pragma once
+struct sd_event;
+
extern int jobs_queue0(
void *group,
int timeout,
@@ -65,8 +67,7 @@ extern int jobs_invoke3(
void *arg2,
void *arg3);
-extern int jobs_add_events(void *key, int timeout, void (*events)(int, void*), void *closure);
-extern int jobs_del_events(void *key);
+extern struct sd_event *jobs_get_sd_event();
extern int jobs_init(int allowed_count, int start_count, int waiter_count);
extern int jobs_add_me();