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>