`timerfd_gettime()` returns the time remaining until the next periodic tick, regardless of how many previous ticks have already fired and remain unread. Replace with `poll()` which correctly checks for pending unread expirations.