X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fjobs.c;h=d469c101052c9f4f3a3418bd4c53801a046267fd;hb=d05f95deefca2836b9f4904711a7fda1c52cd85b;hp=4b753fa1ffdb9508576da20120acf93367855296;hpb=fe4d14b25cc4ca9aa10948fd014205eef4e2a3b1;p=src%2Fapp-framework-binder.git 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