@@ -1861,10 +1861,15 @@ _dispatch_timers_get_delay(uint64_t nows[], struct dispatch_timer_s timer[],
18611861
18621862#if HAVE_KEVENT64
18631863# define kevent_set_ext1 (ke ,val ) (ke)->ext[1] = (val)
1864- # define delay_add_wall (delay ,at ) (delay) += (at)
1864+ # define adjust_delay (delay ,at ) (delay) += (at)
18651865#else
18661866# define kevent_set_ext1 (ke ,val ) do { } while (0)
1867- # define delay_add_wall (delay ,at ) do { } while (0)
1867+ # define adjust_delay (delay ,at ) \
1868+ do { \
1869+ delay /= 1000000L ; \
1870+ if ((int64_t )(delay ) <= 0 ) delay = 1 ; /* for some reason time turns negative */ \
1871+ } while (0 )
1872+
18681873#endif
18691874
18701875static bool
@@ -1891,13 +1896,7 @@ _dispatch_timers_program2(uint64_t nows[], _dispatch_kevent_qos_s *ke,
18911896 TAILQ_FIRST (& _dispatch_kevent_timer [tidx ].dk_sources ), qos );
18921897 _dispatch_trace_next_timer_program (delay , qos );
18931898 nowtime = _dispatch_source_timer_now (nows , DISPATCH_TIMER_KIND_WALL );
1894- delay_add_wall (delay ,nowtime );
1895-
1896- //printf("%s: delay %ld nsecs\n",__FUNCTION__,delay);
1897- // convert delay into msecs
1898- delay /= 1000000L ;
1899- if ((int64_t )(delay ) <= 0 ) delay = 1 ; // for some reason time turns negative
1900- //if ((int64_t)(delay) <= 0) printf("%s: delay =%d\n",__FUNCTION__,(int64_t)delay);
1899+ adjust_delay (delay ,nowtime );
19011900
19021901 if (slowpath (_dispatch_timers_force_max_leeway )) {
19031902 ke -> data = (int64_t )(delay + leeway );
0 commit comments