Real time clock update notification

From: Bob Richmond
Date: Fri Jan 27 2012 - 18:20:17 EST


Is there any kind of facility for a process that is blocking in any one of the event notification system calls (select/poll/epoll_wait) to be unblocked in the event that the realtime clock has been updated? For instance, say I want to fire off an event at the exact moment that the realtime clock flips to 2pm. I first query the realtime clock via clock_gettime(CLOCK_REALTIME), and know that in 3 hours, it will be 2pm and I want to unblock at that moment. So I block in epoll_wait for 3 hours.

Then ntpd decides that the rtc is way off, and updates the current time to 1:30, and I should now be unblocking 30 minutes from now. However, my process can't know that this occurred and I should requery the rtc to find out how long I need to sleep *now*. It looks like crond (which performs a similar task) just wakes itself up every 60 seconds, which isn't particularly ideal.

If this facility doesn't exist, I'm curious whether something like it would be feasible to introduce with minimal overhead. I'm unsure how often ntpd resets the rtc when clock skew is detected, and my process might be excessively notified whenever the time changes by a few milliseconds.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/