Date: Thu, 14 Jan 1999 09:00:46 +0200 (SAT) From: Robert Nordier <rnordier@nordier.com> To: jbg@masterplan.org (Jason George) Cc: freebsd-bugs@FreeBSD.ORG Subject: Re: Year 2000 Compliance Message-ID: <199901140700.JAA02866@ceia.nordier.com> In-Reply-To: <199901140547.WAA11845@gongshow.masterplan.org> from Jason George at "Jan 14, 99 05:47:48 am"
index | next in thread | previous in thread | raw e-mail
Jason George wrote:
> I decided to try a rollover on the non-compliant Compaq. I had never
> done this before, figuring there was no point. I was quite surprised in
> my results. The Compaq, while running 2.2.8+, rolled over correctly!
>
> y2k# date
> Fri Dec 31 23:53:22 MST 1999
> y2k# date
> Sat Jan 1 00:00:03 MST 2000
> y2k#
>
> A reboot into the BIOS screen yields a 01/01/00 CMOS date, a reboot
> under DOS yields a 01/01/80 system date, and a reboot into FreeBSD
> yields 01/01/2000.
>
>
> Is this just luck? Am I playing with fire here? Have I stumbled onto a
> new possible source for cheap NATD packet filters for the new millenium?
> :-)
It's not luck. FreeBSD doesn't rely on the BIOS but reads the PC
real-time clock (RTC) directly. The RTC keeps track on the year
(00-99), though not the century (which is simply stored in CMOS and
not updated by the hardware). Because the "century" value is
unreliable -- and isn't really needed to answer the question "What's
today's date?" -- it's usually ignored.
See src/sys/i386/isa/clock.c:
#ifdef USE_RTC_CENTURY
year = readrtc(RTC_YEAR) + readrtc(RTC_CENTURY) * 100;
#else
year = readrtc(RTC_YEAR) + 1900;
if (year < 1970)
year += 100;
#endif
if (year < 1970)
goto wrong_time;
--
Robert Nordier
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message
help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199901140700.JAA02866>
