Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 11 Nov 2014 08:56:47 +0000
From:      David Chisnall <theraven@FreeBSD.org>
To:        Allan Jude <allanjude@FreeBSD.org>
Cc:        freebsd-current@freebsd.org
Subject:   Re: Changing timezone without reboot/restarting each service?
Message-ID:  <96024C48-850E-4511-94E5-C39E5A8AA77F@FreeBSD.org>
In-Reply-To: <5461841F.9080208@freebsd.org>
References:  <5460B143.3010004@FreeBSD.org> <1415676518.1517572.189478341.09FB6AE5@webmail.messagingengine.com> <5461841F.9080208@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On 11 Nov 2014, at 03:35, Allan Jude <allanjude@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




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?96024C48-850E-4511-94E5-C39E5A8AA77F>