diff --git a/src/libsystemd/sd-event/event-source.h b/src/libsystemd/sd-event/event-source.h index 62d07187a2..189d3b48df 100644 --- a/src/libsystemd/sd-event/event-source.h +++ b/src/libsystemd/sd-event/event-source.h @@ -72,6 +72,9 @@ struct sd_event_source { LIST_FIELDS(sd_event_source, sources); + unsigned earliest_index; + unsigned latest_index; + union { struct { sd_event_io_handler_t callback; @@ -84,8 +87,6 @@ struct sd_event_source { struct { sd_event_time_handler_t callback; usec_t next, accuracy; - unsigned earliest_index; - unsigned latest_index; } time; struct { sd_event_signal_handler_t callback; diff --git a/src/libsystemd/sd-event/sd-event.c b/src/libsystemd/sd-event/sd-event.c index 3bca85eceb..39f13cb409 100644 --- a/src/libsystemd/sd-event/sd-event.c +++ b/src/libsystemd/sd-event/sd-event.c @@ -718,8 +718,8 @@ static void event_source_time_prioq_reshuffle(sd_event_source *s) { /* Called whenever the event source's timer ordering properties changed, i.e. time, accuracy, * pending, enable state. Makes sure the two prioq's are ordered properly again. */ assert_se(d = event_get_clock_data(s->event, s->type)); - prioq_reshuffle(d->earliest, s, &s->time.earliest_index); - prioq_reshuffle(d->latest, s, &s->time.latest_index); + prioq_reshuffle(d->earliest, s, &s->earliest_index); + prioq_reshuffle(d->latest, s, &s->latest_index); d->needs_rearm = true; } @@ -730,9 +730,9 @@ static void event_source_time_prioq_remove( assert(s); assert(d); - prioq_remove(d->earliest, s, &s->time.earliest_index); - prioq_remove(d->latest, s, &s->time.latest_index); - s->time.earliest_index = s->time.latest_index = PRIOQ_IDX_NULL; + prioq_remove(d->earliest, s, &s->earliest_index); + prioq_remove(d->latest, s, &s->latest_index); + s->earliest_index = s->latest_index = PRIOQ_IDX_NULL; d->needs_rearm = true; } @@ -1127,14 +1127,14 @@ static int event_source_time_prioq_put( assert(s); assert(d); - r = prioq_put(d->earliest, s, &s->time.earliest_index); + r = prioq_put(d->earliest, s, &s->earliest_index); if (r < 0) return r; - r = prioq_put(d->latest, s, &s->time.latest_index); + r = prioq_put(d->latest, s, &s->latest_index); if (r < 0) { - assert_se(prioq_remove(d->earliest, s, &s->time.earliest_index) > 0); - s->time.earliest_index = PRIOQ_IDX_NULL; + assert_se(prioq_remove(d->earliest, s, &s->earliest_index) > 0); + s->earliest_index = PRIOQ_IDX_NULL; return r; } @@ -1185,7 +1185,7 @@ _public_ int sd_event_add_time( s->time.next = usec; s->time.accuracy = accuracy == 0 ? DEFAULT_ACCURACY_USEC : accuracy; s->time.callback = callback; - s->time.earliest_index = s->time.latest_index = PRIOQ_IDX_NULL; + s->earliest_index = s->latest_index = PRIOQ_IDX_NULL; s->userdata = userdata; s->enabled = SD_EVENT_ONESHOT;