diff --git a/src/event/event_epoll.c b/src/event/event_epoll.c index db8626e3d..97b4bba40 100644 --- a/src/event/event_epoll.c +++ b/src/event/event_epoll.c @@ -419,7 +419,7 @@ _dispatch_timeout_program(uint32_t tidx, uint64_t target, if (target < INT64_MAX) { struct itimerspec its = { .it_value = { - .tv_sec = target / NSEC_PER_SEC, + .tv_sec = (time_t)(target / NSEC_PER_SEC), .tv_nsec = target % NSEC_PER_SEC, } }; dispatch_assume_zero(timerfd_settime(timer->det_fd, TFD_TIMER_ABSTIME, diff --git a/src/source.c b/src/source.c index 6b9750722..3f9caee27 100644 --- a/src/source.c +++ b/src/source.c @@ -2023,7 +2023,7 @@ static inline unsigned long _dispatch_source_timer_data(dispatch_source_t ds, dispatch_unote_t du) { dispatch_timer_source_refs_t dr = du._dt; - unsigned long data, prev, clear_prev = 0; + uint64_t data, prev, clear_prev = 0; os_atomic_rmw_loop2o(ds, ds_pending_data, prev, clear_prev, relaxed, { data = prev >> 1; @@ -2031,7 +2031,7 @@ _dispatch_source_timer_data(dispatch_source_t ds, dispatch_unote_t du) os_atomic_rmw_loop_give_up(goto handle_missed_intervals); } }); - return data; + return (unsigned long)data; handle_missed_intervals: // The timer may be in _dispatch_source_invoke2() already for other @@ -2046,7 +2046,7 @@ _dispatch_source_timer_data(dispatch_source_t ds, dispatch_unote_t du) uint64_t now = _dispatch_time_now(DISPATCH_TIMER_CLOCK(dr->du_ident)); if (now >= dr->dt_timer.target) { OS_COMPILER_CAN_ASSUME(dr->dt_timer.interval < INT64_MAX); - data = _dispatch_source_timer_compute_missed(dr, now, data); + data = _dispatch_source_timer_compute_missed(dr, now, (unsigned long)data); } // When we see the MISSED_MARKER the manager has given up on this timer @@ -2059,7 +2059,7 @@ _dispatch_source_timer_data(dispatch_source_t ds, dispatch_unote_t du) // on the manager and make the changes to `ds_timer` above visible. _dispatch_queue_atomic_flags_clear(ds->_as_dq, DSF_ARMED); os_atomic_store2o(ds, ds_pending_data, 0, relaxed); - return data; + return (unsigned long)data; } static inline void diff --git a/tests/dispatch_starfish.c b/tests/dispatch_starfish.c index 3609f7196..b866252dc 100644 --- a/tests/dispatch_starfish.c +++ b/tests/dispatch_starfish.c @@ -72,7 +72,7 @@ collect(void *context __attribute__((unused))) printf("lap: %zd\n", lap_count_down); printf("count: %lu\n", COUNT); - printf("delta: %lu ns\n", delta); + printf("delta: %lu ns\n", (unsigned long)delta); printf("math: %Lf ns / lap\n", math); for (i = 0; i < COUNT; i++) { diff --git a/tests/dispatch_timer.c b/tests/dispatch_timer.c index aeb91b252..5119b05fd 100644 --- a/tests/dispatch_timer.c +++ b/tests/dispatch_timer.c @@ -63,8 +63,8 @@ test_timer(void) dispatch_source_set_event_handler(s, ^{ if (!finalized) { - test_long_less_than("timer number", j, stop_at); - fprintf(stderr, "timer[%lu]\n", j); + test_long_less_than("timer number", (long)j, stop_at); + fprintf(stderr, "timer[%lu]\n", (unsigned long)j); } dispatch_release(s); });