@@ -219,7 +219,7 @@ static int manager_reset_kill_workers_timer(Manager *manager) {
219219 USEC_PER_SEC ,
220220 on_kill_workers_event ,
221221 manager ,
222- SD_EVENT_PRIORITY_NORMAL ,
222+ EVENT_PRIORITY_WORKER_TIMER ,
223223 "kill-workers-event" ,
224224 /* force_reset = */ false);
225225 if (r < 0 )
@@ -450,13 +450,28 @@ static void worker_attach_event(Worker *worker, Event *event) {
450450 event -> state = EVENT_RUNNING ;
451451 event -> worker = worker ;
452452
453- (void ) sd_event_add_time_relative (e , & event -> timeout_warning_event , CLOCK_MONOTONIC ,
454- udev_warn_timeout (manager -> config .timeout_usec ), USEC_PER_SEC ,
455- on_event_timeout_warning , event );
456-
457- (void ) sd_event_add_time_relative (e , & event -> timeout_event , CLOCK_MONOTONIC ,
458- manager_kill_worker_timeout (manager ), USEC_PER_SEC ,
459- on_event_timeout , event );
453+ (void ) event_reset_time_relative (
454+ e ,
455+ & event -> timeout_warning_event ,
456+ CLOCK_MONOTONIC ,
457+ udev_warn_timeout (manager -> config .timeout_usec ),
458+ USEC_PER_SEC ,
459+ on_event_timeout_warning ,
460+ event ,
461+ EVENT_PRIORITY_WORKER_TIMER ,
462+ "event-timeout-warn" ,
463+ /* force_reset = */ true);
464+
465+ (void ) event_reset_time_relative (
466+ e ,
467+ & event -> timeout_event , CLOCK_MONOTONIC ,
468+ manager_kill_worker_timeout (manager ),
469+ USEC_PER_SEC ,
470+ on_event_timeout ,
471+ event ,
472+ EVENT_PRIORITY_WORKER_TIMER ,
473+ "event-timeout-kill" ,
474+ /* force_reset = */ true);
460475}
461476
462477static int worker_spawn (Manager * manager , Event * event ) {
@@ -740,10 +755,17 @@ static void event_requeue(Event *event) {
740755 if (event -> retry_again_timeout_usec == 0 )
741756 event -> retry_again_timeout_usec = usec_add (now_usec , EVENT_RETRY_TIMEOUT_USEC );
742757
743- r = event_reset_time_relative (event -> manager -> event , & event -> retry_event_source ,
744- CLOCK_MONOTONIC , EVENT_RETRY_INTERVAL_USEC , 0 ,
745- on_event_retry , NULL ,
746- 0 , "retry-event" , true);
758+ r = event_reset_time_relative (
759+ event -> manager -> event ,
760+ & event -> retry_event_source ,
761+ CLOCK_MONOTONIC ,
762+ EVENT_RETRY_INTERVAL_USEC ,
763+ /* accuracy = */ 0 ,
764+ on_event_retry ,
765+ /* userdata = */ NULL ,
766+ EVENT_PRIORITY_RETRY_EVENT ,
767+ "retry-event" ,
768+ /* force_reset = */ true);
747769 if (r < 0 ) {
748770 log_device_warning_errno (
749771 dev , r ,
@@ -1216,6 +1238,37 @@ static int on_post(sd_event_source *s, void *userdata) {
12161238 return 0 ;
12171239}
12181240
1241+ static int manager_setup_signal (
1242+ Manager * manager ,
1243+ sd_event * event ,
1244+ int signal ,
1245+ sd_event_signal_handler_t handler ,
1246+ int64_t priority ,
1247+ const char * description ) {
1248+
1249+ _cleanup_ (sd_event_source_unrefp ) sd_event_source * s = NULL ;
1250+ int r ;
1251+
1252+ assert (manager );
1253+ assert (event );
1254+
1255+ r = sd_event_add_signal (event , & s , signal | SD_EVENT_SIGNAL_PROCMASK , handler , manager );
1256+ if (r < 0 )
1257+ return r ;
1258+
1259+ r = sd_event_source_set_priority (s , priority );
1260+ if (r < 0 )
1261+ return r ;
1262+
1263+ (void ) sd_event_source_set_description (s , description );
1264+
1265+ r = sd_event_source_set_floating (s , true);
1266+ if (r < 0 )
1267+ return r ;
1268+
1269+ return 0 ;
1270+ }
1271+
12191272static int manager_setup_event (Manager * manager ) {
12201273 _cleanup_ (sd_event_unrefp ) sd_event * e = NULL ;
12211274 int r ;
@@ -1229,15 +1282,15 @@ static int manager_setup_event(Manager *manager) {
12291282 if (r < 0 )
12301283 return log_error_errno (r , "Failed to allocate event loop: %m" );
12311284
1232- r = sd_event_add_signal ( e , /* ret_event_source = */ NULL , SIGINT | SD_EVENT_SIGNAL_PROCMASK , on_sigterm , manager );
1285+ r = manager_setup_signal ( manager , e , SIGINT , on_sigterm , EVENT_PRIORITY_SIGTERM , "sigint-event-source" );
12331286 if (r < 0 )
12341287 return log_error_errno (r , "Failed to create SIGINT event source: %m" );
12351288
1236- r = sd_event_add_signal ( e , /* ret_event_source = */ NULL , SIGTERM | SD_EVENT_SIGNAL_PROCMASK , on_sigterm , manager );
1289+ r = manager_setup_signal ( manager , e , SIGTERM , on_sigterm , EVENT_PRIORITY_SIGTERM , "sigterm-event-source" );
12371290 if (r < 0 )
12381291 return log_error_errno (r , "Failed to create SIGTERM event source: %m" );
12391292
1240- r = sd_event_add_signal ( e , /* ret_event_source = */ NULL , SIGHUP | SD_EVENT_SIGNAL_PROCMASK , on_sighup , manager );
1293+ r = manager_setup_signal ( manager , e , SIGHUP , on_sighup , EVENT_PRIORITY_SIGHUP , "sighup-event-source" );
12411294 if (r < 0 )
12421295 return log_error_errno (r , "Failed to create SIGHUP event source: %m" );
12431296
0 commit comments