svn commit: r337334 - head/lib/libc/sys

Warner Losh imp at bsdimp.com
Sun Aug 5 15:24:38 UTC 2018


On Sun, Aug 5, 2018, 3:22 PM Ian Lepore <ian at freebsd.org> wrote:

> On Sat, 2018-08-04 at 16:39 -0600, Warner Losh wrote:
> > On Sat, Aug 4, 2018 at 4:24 PM, Rodney W. Grimes <
> > freebsd at pdx.rh.cn85.dnsmgr.net> wrote:
> >
> > >
> > > >
> > > > Author: cem
> > > > Date: Sat Aug  4 22:08:24 2018
> > > > New Revision: 337334
> > > > URL: https://svnweb.freebsd.org/changeset/base/337334
> > > >
> > > > Log:
> > > >   settimeofday(2): Remove stale note about timezone
> > > >
> > > >   Contrary to the removed comment, the kernel does appear to use the
> > > timezone
> > > >
> > > >   argument of settimeofday.  The comment dates to the BSD4.4 import;
> I
> > > assume it
> > > >
> > > >   is just stale.
> > > In what way is the kernel using TZ?   It shouldn't be.
> > > Or is it using the TZ to adjust the passed in time to UTC/GMT,
> > > which I would of thought is done before calling settimeofday.
> >
> > Specifically, for compatibility, we store minutes west of UTC on
> > settimeofday and we retrieve it for settimeofday. Otherwise it's 100%
> > unused by anything else at all in the system. Well, technically, we use
> it
> > for utc_offset, we don't really use that elsewhere (one can find
> references
> > in utc_offset, but usually we set this via adjkerntz, which is actively
> > used in the system). tz_minuteswest likely should just be removed, and
> the
> > argument to settimzeofday should just be completely ignored.
> >
>
> utc_offset is used by all RTC drivers, and by the convenience routines
> that convert times to/from FAT filesystem format (which I assume are
> used by FAT filesystem code, but I haven't checked that). So if the tz
> info passed to settimeofday() ends up in utc_offset, how can we be sure
> nobody is relying on that?
>

Nobody is setting that. No one else still preserves this info. It was
obsoleted in BSD 4.4 with the introduction of the Olsen TZ code. I'd be
highly surprised if some set this given we have no rc knob for it. It's
completely undocumented. The only code that might use it is IBCS, but even
that is doubtful... everybody has transitioned to the documented adjkerntz
interface for that stuff. So while in theory someone might, I really doubt
it given the history and what other systems are doing.

Warner



> One could test it with date -t, nothing does that today. That should be
> > removed also. Likewise date -d.
> >
> > So while hyper technically, one could use this, nobody does, nor has
> since
> > between 4.3 and 4.4 when it was realized that storing the timezone in the
> > kernel was a really stupid idea. That's what the language used in the man
> > page that you removed was trying to say.
> >
> > Warner
> >
> >
> > >
> > > >
> > > > Modified:
> > > >   head/lib/libc/sys/gettimeofday.2
> > > >
> > > > Modified: head/lib/libc/sys/gettimeofday.2
> > > > ============================================================
> > > ==================
> > > >
> > > > --- head/lib/libc/sys/gettimeofday.2  Sat Aug  4 21:57:17 2018
> > > (r337333)
> > > >
> > > > +++ head/lib/libc/sys/gettimeofday.2  Sat Aug  4 22:08:24 2018
> > > (r337334)
> > > >
> > > > @@ -28,7 +28,7 @@
> > > >  .\"     @(#)gettimeofday.2   8.2 (Berkeley) 5/26/95
> > > >  .\" $FreeBSD$
> > > >  .\"
> > > > -.Dd December 27, 2015
> > > > +.Dd August 4, 2018
> > > >  .Dt GETTIMEOFDAY 2
> > > >  .Os
> > > >  .Sh NAME
> > > > @@ -44,11 +44,6 @@
> > > >  .Ft int
> > > >  .Fn settimeofday "const struct timeval *tp" "const struct timezone
> *tzp"
> > > >  .Sh DESCRIPTION
> > > > -.Bf -symbolic
> > > > -Note: timezone is no longer used; this information is kept outside
> > > > -the kernel.
> > > > -.Ef
> > > > -.Pp
> > > >  The system's notion of the current Greenwich time and the current
> time
> > > >  zone is obtained with the
> > > >  .Fn gettimeofday
> > > >
> > > >
> > > --
> > > Rod Grimes
> > > rgrimes at freebsd.org
> > >
> > >
>


More information about the svn-src-head mailing list