X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fjobs.c;h=217c5391e2b915a6302085b1d1528e3a7f7d49bf;hb=c330ecf92fef81fdb0471715326b8bc6b4d52bc6;hp=f30904a827ec97b5c68a67e067a3bfb89503ac17;hpb=d7e4faba5d1744160d538edd74bc4bdd8a173b1a;p=src%2Fapp-framework-binder.git diff --git a/src/jobs.c b/src/jobs.c index f30904a8..217c5391 100644 --- a/src/jobs.c +++ b/src/jobs.c @@ -34,6 +34,7 @@ #include "jobs.h" #include "sig-monitor.h" #include "verbose.h" +#include "systemd.h" #define EVENT_TIMEOUT_TOP ((uint64_t)-1) #define EVENT_TIMEOUT_CHILD ((uint64_t)10000) @@ -783,16 +784,15 @@ static struct sd_event *get_sd_event_locked() goto error1; } /* create the systemd event loop */ - rc = sd_event_new(&evloop.sdev); - if (rc < 0) { - ERROR("can't make new event loop"); + evloop.sdev = systemd_get_event_loop(); + if (!evloop.sdev) { + ERROR("can't make event loop"); goto error2; } /* put the eventfd in the event loop */ rc = sd_event_add_io(evloop.sdev, NULL, evloop.efd, EPOLLIN, on_evloop_efd, NULL); if (rc < 0) { ERROR("can't register eventfd"); - sd_event_unref(evloop.sdev); evloop.sdev = NULL; error2: close(evloop.efd); @@ -808,12 +808,10 @@ error1: } /** - * Gets a sd_event item for the current thread. - * @return a sd_event or NULL in case of error + * Ensure that the current running thread can control the event loop. */ -struct sd_event *jobs_get_sd_event() +void jobs_acquire_event_manager() { - struct sd_event *result; struct thread lt; /* ensure an existing thread environment */ @@ -824,7 +822,7 @@ struct sd_event *jobs_get_sd_event() /* process */ pthread_mutex_lock(&mutex); - result = get_sd_event_locked(); + get_sd_event_locked(); pthread_mutex_unlock(&mutex); /* release the faked thread environment if needed */ @@ -843,8 +841,6 @@ struct sd_event *jobs_get_sd_event() evloop_release(); current_thread = NULL; } - - return result; } /**