diff options
author | José Bollo <jose.bollo@iot.bzh> | 2017-03-30 13:33:11 +0200 |
---|---|---|
committer | José Bollo <jose.bollo@iot.bzh> | 2017-03-30 13:33:11 +0200 |
commit | 89c44a872117fb8f64d38cbccf8f36776f2623f6 (patch) | |
tree | 89b26e67440c1f6f77fc6c1fcdeccf3b1ea1fb37 /src/jobs.h | |
parent | 391ada39d89f9f90d186aed8e1d825be9c17a328 (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.h | 5 |
1 files changed, 3 insertions, 2 deletions
@@ -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(); |