Before calling todr_gettime, fill in tv.tv_sec. At least one port (vax)

needs that functionality.
This commit is contained in:
matt 2006-09-05 19:32:17 +00:00
parent ee74a1421a
commit 7cdae31eb1

View File

@ -1,4 +1,4 @@
/* $NetBSD: kern_todr.c,v 1.4 2006/09/03 17:13:04 gdamore Exp $ */ /* $NetBSD: kern_todr.c,v 1.5 2006/09/05 19:32:17 matt Exp $ */
/* /*
* Copyright (c) 1992, 1993 * Copyright (c) 1992, 1993
@ -76,7 +76,7 @@
* @(#)clock.c 8.1 (Berkeley) 6/10/93 * @(#)clock.c 8.1 (Berkeley) 6/10/93
*/ */
#include <sys/cdefs.h> #include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: kern_todr.c,v 1.4 2006/09/03 17:13:04 gdamore Exp $"); __KERNEL_RCSID(0, "$NetBSD: kern_todr.c,v 1.5 2006/09/05 19:32:17 matt Exp $");
#include <sys/param.h> #include <sys/param.h>
@ -112,7 +112,7 @@ static int timeset = 0;
void void
inittodr(time_t base) inittodr(time_t base)
{ {
int badbase = 0, waszero = base == 0, goodtime = 0, badrtc = 0; int badbase = 0, waszero = (base == 0), goodtime = 0, badrtc = 0;
#ifdef __HAVE_TIMECOUNTER #ifdef __HAVE_TIMECOUNTER
struct timespec ts; struct timespec ts;
#endif #endif
@ -138,6 +138,12 @@ inittodr(time_t base)
badbase = 1; badbase = 1;
} }
/*
* Some ports need to be supplied base in order to fabricate a time_t.
*/
tv.tv_sec = base;
tv.tv_usec = 0;
if ((todr_handle == NULL) || if ((todr_handle == NULL) ||
(todr_gettime(todr_handle, &tv) != 0) || (todr_gettime(todr_handle, &tv) != 0) ||
(tv.tv_sec < (5 * SECYR))) { (tv.tv_sec < (5 * SECYR))) {
@ -199,9 +205,7 @@ inittodr(time_t base)
if (waszero || goodtime) if (waszero || goodtime)
return; return;
printf("WARNING: CHECK AND RESET THE DATE!\n"); printf("WARNING: CHECK AND RESET THE DATE!\n");
} }
/* /*