From: José Bollo Date: Thu, 18 Jan 2018 10:16:57 +0000 (+0100) Subject: jobs: Split jobs_get_sd_event X-Git-Tag: flounder_5.99.1~95 X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=commitdiff_plain;h=d05f95deefca2836b9f4904711a7fda1c52cd85b;p=src%2Fapp-framework-binder.git jobs: Split jobs_get_sd_event Provide a mutex locked internal function for getting the event loop: get_sd_event_locked Change-Id: I2635f901b3ec0fcf2c52f569f4c57cfd046601af Signed-off-by: José Bollo --- diff --git a/src/jobs.c b/src/jobs.c index 4b753fa1..d469c101 100644 --- a/src/jobs.c +++ b/src/jobs.c @@ -652,14 +652,12 @@ static int on_evloop_efd(sd_event_source *s, int fd, uint32_t revents, void *use * Gets a sd_event item for the current thread. * @return a sd_event or NULL in case of error */ -struct sd_event *jobs_get_sd_event() +static struct sd_event *get_sd_event_locked() { struct evloop *el; uint64_t x; int rc; - pthread_mutex_lock(&mutex); - /* creates the evloop on need */ el = &evloop[0]; if (!el->sdev) { @@ -686,7 +684,6 @@ struct sd_event *jobs_get_sd_event() error2: close(el->efd); error1: - pthread_mutex_unlock(&mutex); return NULL; } } @@ -706,10 +703,24 @@ error1: pthread_cond_wait(&el->cond, &mutex); } - pthread_mutex_unlock(&mutex); return el->sdev; } +/** + * Gets a sd_event item for the current thread. + * @return a sd_event or NULL in case of error + */ +struct sd_event *jobs_get_sd_event() +{ + struct sd_event *result; + + pthread_mutex_lock(&mutex); + result = get_sd_event_locked(); + pthread_mutex_unlock(&mutex); + + return result; +} + /** * Enter the jobs processing loop. * @param allowed_count Maximum count of thread for jobs including this one