Changing timezone without reboot/restarting each service?

David Chisnall theraven at FreeBSD.org
Tue Nov 11 08:57:09 UTC 2014


On 11 Nov 2014, at 03:35, Allan Jude <allanjude at FreeBSD.org> wrote:

> jkh@ mentioned this specifically when he gave his talk at EuroBSDCon and
> MeetBSD, about how Apple solved this in LaunchD, because apparently
> originally libc DID check /etc/localtime constantly.

Darwin also has the notify(3) interface, which allows one-bit messages to be transmitted either from the kernel to userspace or from userspace to userspace very cheaply.  This is ideal for this sort of 'something you've cached is change, go and do something expensive to fix it' use (time zone has changed, network connectivity has changed, power state has changed).  You can assign notifications to either file descriptors (that can be monitored with kqueue), to signals, or to flags in memory for things where polling is cheaper (as in this case - the libc functions could just check whether a specific flag is set in memory when accessing the time zone info and load a newer one if changed).

David



More information about the freebsd-current mailing list