Module Name:    src
Committed By:   christos
Date:           Mon Nov 17 02:15:49 UTC 2014

Modified Files:
        src/sys/arch/atari/dev: clockreg.h
        src/sys/arch/dreamcast/dev/g2: g2rtc.c
        src/sys/arch/hp300/stand/common: clock.c
        src/sys/arch/hpcmips/vr: rtc.c rtcreg.h
        src/sys/arch/mvme68k/stand/libsa: chiptotime.c clock.c
        src/sys/arch/mvmeppc/stand/libsa: clock.c
        src/sys/arch/vax/include: clock.h
        src/sys/arch/vax/vax: clock.c
        src/sys/arch/x68k/stand/libsa: clock.c
        src/sys/dev: clock_subr.c clock_subr.h
        src/sys/dev/dec: mcclock.c
        src/sys/fs/smbfs: smbfs_subr.c
        src/sys/kern: kern_todr.c
        src/sys/sys: Makefile

Log Message:
PR/49207: Kamil Rytarowski: Add sys/clock.h with generic time macros
(derived from clock_subr.h). Keep clock_subr.h with the kernel structures
and functions to reduce diffs, and have clock.h only include standalone
constants and macros.


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/sys/arch/atari/dev/clockreg.h
cvs rdiff -u -r1.6 -r1.7 src/sys/arch/dreamcast/dev/g2/g2rtc.c
cvs rdiff -u -r1.12 -r1.13 src/sys/arch/hp300/stand/common/clock.c
cvs rdiff -u -r1.32 -r1.33 src/sys/arch/hpcmips/vr/rtc.c
cvs rdiff -u -r1.9 -r1.10 src/sys/arch/hpcmips/vr/rtcreg.h
cvs rdiff -u -r1.4 -r1.5 src/sys/arch/mvme68k/stand/libsa/chiptotime.c
cvs rdiff -u -r1.9 -r1.10 src/sys/arch/mvme68k/stand/libsa/clock.c
cvs rdiff -u -r1.3 -r1.4 src/sys/arch/mvmeppc/stand/libsa/clock.c
cvs rdiff -u -r1.8 -r1.9 src/sys/arch/vax/include/clock.h
cvs rdiff -u -r1.56 -r1.57 src/sys/arch/vax/vax/clock.c
cvs rdiff -u -r1.2 -r1.3 src/sys/arch/x68k/stand/libsa/clock.c
cvs rdiff -u -r1.22 -r1.23 src/sys/dev/clock_subr.c src/sys/dev/clock_subr.h
cvs rdiff -u -r1.27 -r1.28 src/sys/dev/dec/mcclock.c
cvs rdiff -u -r1.17 -r1.18 src/sys/fs/smbfs/smbfs_subr.c
cvs rdiff -u -r1.36 -r1.37 src/sys/kern/kern_todr.c
cvs rdiff -u -r1.151 -r1.152 src/sys/sys/Makefile

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/atari/dev/clockreg.h
diff -u src/sys/arch/atari/dev/clockreg.h:1.6 src/sys/arch/atari/dev/clockreg.h:1.7
--- src/sys/arch/atari/dev/clockreg.h:1.6	Tue Oct 20 15:10:10 2009
+++ src/sys/arch/atari/dev/clockreg.h	Sun Nov 16 21:15:48 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: clockreg.h,v 1.6 2009/10/20 19:10:10 snj Exp $	*/
+/*	$NetBSD: clockreg.h,v 1.7 2014/11/17 02:15:48 christos Exp $	*/
 
 /*
  * Copyright (c) 1995 Leo Weppelman.
@@ -56,10 +56,6 @@ struct rtc {
 /*
  * Some useful constants/macros
  */
-#define	is_leap(x)		(!(x % 4) && ((x % 100) || !(x % 1000)))
 #define	range_test(n, l, h)	((n) < (l) || (n) > (h))
-#define	SECS_DAY		86400L
-#define	SECS_HOUR		3600L
 #define	GEMSTARTOFTIME		((machineid & ATARI_CLKBROKEN) ? 1970 : 1968)
-#define	BSDSTARTOFTIME		1970
 #endif /* _CLOCKREG_H */

Index: src/sys/arch/dreamcast/dev/g2/g2rtc.c
diff -u src/sys/arch/dreamcast/dev/g2/g2rtc.c:1.6 src/sys/arch/dreamcast/dev/g2/g2rtc.c:1.7
--- src/sys/arch/dreamcast/dev/g2/g2rtc.c:1.6	Tue Jul 19 11:52:29 2011
+++ src/sys/arch/dreamcast/dev/g2/g2rtc.c	Sun Nov 16 21:15:48 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: g2rtc.c,v 1.6 2011/07/19 15:52:29 dyoung Exp $ */
+/* $NetBSD: g2rtc.c,v 1.7 2014/11/17 02:15:48 christos Exp $ */
 
 /*-
  * Copyright (c) 2002 The NetBSD Foundation, Inc.
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: g2rtc.c,v 1.6 2011/07/19 15:52:29 dyoung Exp $");
+__KERNEL_RCSID(0, "$NetBSD: g2rtc.c,v 1.7 2014/11/17 02:15:48 christos Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -43,7 +43,7 @@ __KERNEL_RCSID(0, "$NetBSD: g2rtc.c,v 1.
 #define G2RTC_REG_SIZE	12
 
 /* Offset by 20 years, 5 of them are leap */
-#define G2RTC_OFFSET	(20 * SECYR + 5 * SECDAY)
+#define G2RTC_OFFSET	(20 * SECS_PER_COMMON_YEAR + 5 * SECS_PER_DAY)
 
 struct g2rtc_softc {
 	device_t sc_dev;

Index: src/sys/arch/hp300/stand/common/clock.c
diff -u src/sys/arch/hp300/stand/common/clock.c:1.12 src/sys/arch/hp300/stand/common/clock.c:1.13
--- src/sys/arch/hp300/stand/common/clock.c:1.12	Sat Apr 19 02:04:58 2014
+++ src/sys/arch/hp300/stand/common/clock.c	Sun Nov 16 21:15:48 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: clock.c,v 1.12 2014/04/19 06:04:58 tsutsui Exp $	*/
+/*	$NetBSD: clock.c,v 1.13 2014/11/17 02:15:48 christos Exp $	*/
 
 /*
  * Copyright (c) 1988 University of Utah.
@@ -49,31 +49,22 @@
 #include <hp300/dev/frodoreg.h>		/* for APCI offsets */
 #include <hp300/dev/intioreg.h>		/* for frodo offsets */
 #include <dev/ic/mc146818reg.h>
+#include <dev/clock_subr.h>
 
 #include <lib/libsa/stand.h>
 #include <lib/libsa/net.h>
 #include <hp300/stand/common/samachdep.h>
 
 #define FEBRUARY        2
-#define STARTOFTIME     1970
-#define SECDAY          (60L * 60L * 24L)
-#define SECYR           (SECDAY * 365)
 
 #define BBC_SET_REG     0xe0
 #define BBC_WRITE_REG   0xc2
 #define BBC_READ_REG    0xc3
 #define NUM_BBC_REGS    12
 
-#define leapyear(year)		((year) % 4 == 0)
 #define range_test(n, l, h)	if ((n) < (l) || (n) > (h)) return false
-#define days_in_year(a)		(leapyear(a) ? 366 : 365)
-#define days_in_month(a)	(month_days[(a) - 1])
 #define bbc_to_decimal(a,b)	(bbc_registers[a] * 10 + bbc_registers[b])
 
-static const int month_days[12] = {
-	31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
-};
-
 static uint8_t bbc_registers[13];
 static struct hil_dev *bbcaddr = BBCADDR;
 
@@ -133,7 +124,7 @@ clock_to_gmt(satime_t *timbuf)
 		year  = bbc_to_decimal(12, 11) + 1900;
 	}
 
-	if (year < STARTOFTIME)
+	if (year < POSIX_BASE_YEAR)
 		year += 100;
 
 #ifdef CLOCK_DEBUG
@@ -147,9 +138,9 @@ clock_to_gmt(satime_t *timbuf)
 
 	tmp = 0;
 
-	for (i = STARTOFTIME; i < year; i++)
-		tmp += days_in_year(i);
-	if (leapyear(year) && month > FEBRUARY)
+	for (i = POSIX_BASE_YEAR; i < year; i++)
+		tmp += days_per_year(i);
+	if (is_leap_year(year) && month > FEBRUARY)
 		tmp++;
 
 	for (i = 1; i < month; i++)

Index: src/sys/arch/hpcmips/vr/rtc.c
diff -u src/sys/arch/hpcmips/vr/rtc.c:1.32 src/sys/arch/hpcmips/vr/rtc.c:1.33
--- src/sys/arch/hpcmips/vr/rtc.c:1.32	Fri Mar 18 11:31:38 2011
+++ src/sys/arch/hpcmips/vr/rtc.c	Sun Nov 16 21:15:48 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: rtc.c,v 1.32 2011/03/18 15:31:38 tsutsui Exp $	*/
+/*	$NetBSD: rtc.c,v 1.33 2014/11/17 02:15:48 christos Exp $	*/
 
 /*-
  * Copyright (c) 1999 Shin Takemura. All rights reserved.
@@ -36,7 +36,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rtc.c,v 1.32 2011/03/18 15:31:38 tsutsui Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rtc.c,v 1.33 2014/11/17 02:15:48 christos Exp $");
 
 #include "opt_vr41xx.h"
 
@@ -203,10 +203,10 @@ vrrtc_attach(device_t parent, device_t s
 	 * be on Jan 1.
 	 */
 	for (year = EPOCHYEAR; year < POSIX_BASE_YEAR; year++) {
-		sc->sc_epoch += LEAPYEAR4(year) ? SECYR + SECDAY : SECYR;
+		sc->sc_epoch += days_per_year(year) * SECS_PER_YEAR;
 	}
 	for (year = POSIX_BASE_YEAR; year < EPOCHYEAR; year++) {
-		sc->sc_epoch -= LEAPYEAR4(year) ? SECYR + SECDAY : SECYR;
+		sc->sc_epoch -= days_per_year(year) * SECS_PER_YEAR;
 	}
 
 	/*

Index: src/sys/arch/hpcmips/vr/rtcreg.h
diff -u src/sys/arch/hpcmips/vr/rtcreg.h:1.9 src/sys/arch/hpcmips/vr/rtcreg.h:1.10
--- src/sys/arch/hpcmips/vr/rtcreg.h:1.9	Fri Sep 15 22:14:57 2006
+++ src/sys/arch/hpcmips/vr/rtcreg.h	Sun Nov 16 21:15:48 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: rtcreg.h,v 1.9 2006/09/16 02:14:57 gdamore Exp $	*/
+/*	$NetBSD: rtcreg.h,v 1.10 2014/11/17 02:15:48 christos Exp $	*/
 
 /*-
  * Copyright (c) 1999 Shin Takemura. All rights reserved.
@@ -42,9 +42,6 @@
 #define EPOCHMONTH	1			/* WINCE epoch month of year */
 #define EPOCHDATE	1			/* WINCE epoch date of month */
 
-#define	LEAPYEAR4(year)	((((year) % 4) == 0 && ((year) % 100) != 0) || ((year%400)) == 0)
-#define	LEAPYEAR2(year)	(((year) % 4) == 0)
-
 /*
  *	RTC (Real Time Clock Unit) Registers definitions.
  *		start 0x0B0000C0 (Vr4102-4121)

Index: src/sys/arch/mvme68k/stand/libsa/chiptotime.c
diff -u src/sys/arch/mvme68k/stand/libsa/chiptotime.c:1.4 src/sys/arch/mvme68k/stand/libsa/chiptotime.c:1.5
--- src/sys/arch/mvme68k/stand/libsa/chiptotime.c:1.4	Sat Jan 12 04:54:32 2008
+++ src/sys/arch/mvme68k/stand/libsa/chiptotime.c	Sun Nov 16 21:15:48 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: chiptotime.c,v 1.4 2008/01/12 09:54:32 tsutsui Exp $ */
+/*	$NetBSD: chiptotime.c,v 1.5 2014/11/17 02:15:48 christos Exp $ */
 
 #include <sys/types.h>
 
@@ -15,9 +15,6 @@
 #define TOBCD(x)        (int)((((unsigned int)(x)) / 10 * 16) +\
 				(((unsigned int)(x)) % 10))
 
-#define SECDAY          (24 * 60 * 60)
-#define SECYR           (SECDAY * 365)
-#define LEAPYEAR(y)     (((y) & 3) == 0)
 #define YEAR0		68
 
 /*
@@ -46,10 +43,11 @@ chiptotime(int sec, int min, int hour, i
 		return (0);
 	days = 0;
 	for (yr = 70; yr < year; yr++)
-		days += LEAPYEAR(yr) ? 366 : 365;
+		days += days_per_year(yr);
 	days += dayyr[mon - 1] + day - 1;
-	if (LEAPYEAR(yr) && mon > 2)
+	if (is_leap_year(yr) && mon > 2)
 		days++;
 	/* now have days since Jan 1, 1970; the rest is easy... */
-	return days * SECDAY + hour * 3600 + min * 60 + sec;
+	return days * SECS_PER_DAY + hour * SECS_PER_HOUR
+	    + min * SECS_PER_MINUTE + sec;
 }

Index: src/sys/arch/mvme68k/stand/libsa/clock.c
diff -u src/sys/arch/mvme68k/stand/libsa/clock.c:1.9 src/sys/arch/mvme68k/stand/libsa/clock.c:1.10
--- src/sys/arch/mvme68k/stand/libsa/clock.c:1.9	Mon Jan 12 06:32:44 2009
+++ src/sys/arch/mvme68k/stand/libsa/clock.c	Sun Nov 16 21:15:48 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: clock.c,v 1.9 2009/01/12 11:32:44 tsutsui Exp $ */
+/*	$NetBSD: clock.c,v 1.10 2014/11/17 02:15:48 christos Exp $ */
 
 #include <sys/types.h>
 #include <machine/prom.h>
@@ -15,9 +15,6 @@
 #define TOBCD(x)        (int)((((unsigned int)(x)) / 10 * 16) +\
 				(((unsigned int)(x)) % 10))
 
-#define SECDAY          (24 * 60 * 60)
-#define SECYR           (SECDAY * 365)
-#define LEAPYEAR(y)     (((y) & 3) == 0)
 #define YEAR0		68
 
 /*
@@ -46,12 +43,13 @@ chiptotime(int sec, int min, int hour, i
 		return (0);
 	days = 0;
 	for (yr = 70; yr < year; yr++)
-		days += LEAPYEAR(yr) ? 366 : 365;
+		days += days_per_year(yr);
 	days += dayyr[mon - 1] + day - 1;
-	if (LEAPYEAR(yr) && mon > 2)
+	if (is_leap_year(yr) && mon > 2)
 		days++;
 	/* now have days since Jan 1, 1970; the rest is easy... */
-	return days * SECDAY + hour * 3600 + min * 60 + sec;
+	return days * SECS_PER_DAY + hour * SECS_PER_HOUR
+	    + min * SECS_PER_MINUTE + sec;
 }
 
 satime_t

Index: src/sys/arch/mvmeppc/stand/libsa/clock.c
diff -u src/sys/arch/mvmeppc/stand/libsa/clock.c:1.3 src/sys/arch/mvmeppc/stand/libsa/clock.c:1.4
--- src/sys/arch/mvmeppc/stand/libsa/clock.c:1.3	Wed Mar 18 06:22:33 2009
+++ src/sys/arch/mvmeppc/stand/libsa/clock.c	Sun Nov 16 21:15:49 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: clock.c,v 1.3 2009/03/18 10:22:33 cegger Exp $	*/
+/*	$NetBSD: clock.c,v 1.4 2014/11/17 02:15:49 christos Exp $	*/
 
 /*
  * This is a slightly modified version of mvme68k's standalone clock.c.
@@ -7,6 +7,7 @@
  */
 
 #include <sys/types.h>
+#include <dev/clock_subr.h>
 
 #include "stand.h"
 #include "net.h"
@@ -16,9 +17,6 @@
 #define FROMBCD(x)      (int)((((unsigned int)(x)) >> 4) * 10 +\
 			      (((unsigned int)(x)) & 0xf))
 
-#define SECDAY          (24 * 60 * 60)
-#define SECYR           (SECDAY * 365)
-#define LEAPYEAR(y)     (((y) & 3) == 0)
 #define YEAR0		68
 
 /*
@@ -47,12 +45,13 @@ chiptotime(int sec, int min, int hour, i
 		return (0);
 	days = 0;
 	for (yr = 70; yr < year; yr++)
-		days += LEAPYEAR(yr) ? 366 : 365;
+		days += days_per_year(yr);
 	days += dayyr[mon - 1] + day - 1;
-	if (LEAPYEAR(yr) && mon > 2)
+	if (is_leap_year(yr) && mon > 2)
 		days++;
 	/* now have days since Jan 1, 1970; the rest is easy... */
-	return (days * SECDAY + hour * 3600 + min * 60 + sec);
+ 	return days * SECS_PER_DAY + hour * SECS_PER_HOUR
+	    + min * SECS_PER_MINUTE + sec;
 }
 
 satime_t

Index: src/sys/arch/vax/include/clock.h
diff -u src/sys/arch/vax/include/clock.h:1.8 src/sys/arch/vax/include/clock.h:1.9
--- src/sys/arch/vax/include/clock.h:1.8	Thu Nov 18 22:31:24 2010
+++ src/sys/arch/vax/include/clock.h	Sun Nov 16 21:15:49 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: clock.h,v 1.8 2010/11/19 03:31:24 uwe Exp $ */
+/*	$NetBSD: clock.h,v 1.9 2014/11/17 02:15:49 christos Exp $ */
 /*
  * Copyright (c) 1996 Ludd, University of Lule}, Sweden.
  * All rights reserved.
@@ -37,14 +37,6 @@
 /*
  * Time constants. These are unlikely to change.
  */
-#define IS_LEAPYEAR(y) ((((y % 4) == 0) && ((y % 100) != 0)) || ((y % 400) == 0))
-
-#define SEC_PER_MIN	(60)
-#define SEC_PER_HOUR	(SEC_PER_MIN * 60)
-#define SEC_PER_DAY	(SEC_PER_HOUR * 24)
-#define DAYSPERYEAR(y)	(IS_LEAPYEAR(y) ? 366 : 365)
-#define SECPERYEAR(y)	(DAYSPERYEAR(y) * SEC_PER_DAY)
-
 #define TODRBASE	(1 << 28) /* Rumours says it comes from VMS */
 
 #define	SEC_OFF		0

Index: src/sys/arch/vax/vax/clock.c
diff -u src/sys/arch/vax/vax/clock.c:1.56 src/sys/arch/vax/vax/clock.c:1.57
--- src/sys/arch/vax/vax/clock.c:1.56	Tue Mar  6 17:50:24 2012
+++ src/sys/arch/vax/vax/clock.c	Sun Nov 16 21:15:49 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: clock.c,v 1.56 2012/03/06 22:50:24 jklos Exp $	 */
+/*	$NetBSD: clock.c,v 1.57 2014/11/17 02:15:49 christos Exp $	 */
 /*
  * Copyright (c) 1995 Ludd, University of Lule}, Sweden.
  * All rights reserved.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: clock.c,v 1.56 2012/03/06 22:50:24 jklos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: clock.c,v 1.57 2014/11/17 02:15:49 christos Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -198,7 +198,7 @@ yeartonum(int y)
 	int n;
 
 	for (n = 0, y -= 1; y > 1969; y--)
-		n += SECPERYEAR(y);
+ 		n += days_per_year(y) * SECS_PER_DAY;
 	return n;
 }
 
@@ -209,7 +209,7 @@ int
 numtoyear(int num)
 {
 	int y = 1970, j;
-	while(num >= (j = SECPERYEAR(y))) {
+	while(num >= (j = days_per_year(y) * SECS_PER_DAY)) {
 		y++;
 		num -= j;
 	}

Index: src/sys/arch/x68k/stand/libsa/clock.c
diff -u src/sys/arch/x68k/stand/libsa/clock.c:1.2 src/sys/arch/x68k/stand/libsa/clock.c:1.3
--- src/sys/arch/x68k/stand/libsa/clock.c:1.2	Thu Nov  1 10:46:26 2012
+++ src/sys/arch/x68k/stand/libsa/clock.c	Sun Nov 16 21:15:49 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: clock.c,v 1.2 2012/11/01 14:46:26 isaki Exp $ */
+/* $NetBSD: clock.c,v 1.3 2014/11/17 02:15:49 christos Exp $ */
 
 /*
  * Copyright (c) 2003 Tetsuya Isaki. All rights reserved.
@@ -33,8 +33,6 @@
 #include "consio.h"	/* XXX: for MFP_TIMERC */
 
 /* x68k's RTC is defunct 2079, so there is no y2100 problem. */
-#define LEAPYEAR(y)	(((y) % 4) == 0)
-#define SECDAY	(24 * 60 * 60)
 
 int rtc_offset;
 
@@ -68,14 +66,15 @@ getsecs(void)
 
 	days = 0;
 	for (y = 1970; y < year; y++)
-		days += 365 + LEAPYEAR(y);
+		days += days_per_year(y);
 	days += yday[mon - 1] + day - 1;
-	if (LEAPYEAR(y) && mon > 2)
+	if (is_leap_year(y) && mon > 2)
 		days++;
 
 	/* now we have days since Jan 1, 1970. the rest is easy... */
-	return (days * SECDAY) + (hour * 3600) + (min * 60) + sec
-		+ (rtc_offset * 60);
+	return days * SECS_PER_DAY) + (hour * SECS_PER_HOUR)
+	    + (min * SECS_PER_MINUTE) + sec
+	    + (rtc_offset * 60);
 }
 
 void

Index: src/sys/dev/clock_subr.c
diff -u src/sys/dev/clock_subr.c:1.22 src/sys/dev/clock_subr.c:1.23
--- src/sys/dev/clock_subr.c:1.22	Sun Sep  7 07:50:23 2014
+++ src/sys/dev/clock_subr.c	Sun Nov 16 21:15:49 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: clock_subr.c,v 1.22 2014/09/07 11:50:23 martin Exp $	*/
+/*	$NetBSD: clock_subr.c,v 1.23 2014/11/17 02:15:49 christos Exp $	*/
 
 /*
  * Copyright (c) 1988 University of Utah.
@@ -50,7 +50,7 @@
 
 #ifdef _KERNEL
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: clock_subr.c,v 1.22 2014/09/07 11:50:23 martin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: clock_subr.c,v 1.23 2014/11/17 02:15:49 christos Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -65,8 +65,6 @@ __KERNEL_RCSID(0, "$NetBSD: clock_subr.c
 
 static inline int leapyear(uint64_t year);
 #define FEBRUARY	2
-#define	days_in_year(a) 	(leapyear(a) ? 366 : 365)
-#define	days_in_month(a) 	(month_days[(a) - 1])
 
 /* for easier alignment:
  * time from the epoch to 2000 (there were 7 leap years): */
@@ -81,37 +79,6 @@ static inline int leapyear(uint64_t year
 /* 400 year intervals include 97 leap years */
 #define	DAYS400YEARS	(365*400+97)
 
-static const int month_days[12] = {
-	31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
-};
-
-/*
- * This inline avoids some unnecessary modulo operations
- * as compared with the usual macro:
- *   ( ((year % 4) == 0 &&
- *      (year % 100) != 0) ||
- *     ((year % 400) == 0) )
- * It is otherwise equivalent.
- */
-static inline int
-leapyear(uint64_t year)
-{
-	int rv = 0;
-
-	if (year < 1969)
-		return EINVAL;
-
-	if ((year & 3) == 0) {
-		rv = 1;
-		if ((year % 100) == 0) {
-			rv = 0;
-			if ((year % 400) == 0)
-				rv = 1;
-		}
-	}
-	return rv;
-}
-
 time_t
 clock_ymdhms_to_secs(struct clock_ymdhms *dt)
 {
@@ -126,13 +93,13 @@ clock_ymdhms_to_secs(struct clock_ymdhms
 	if (year < POSIX_BASE_YEAR)
 		return -1;
 	days = 0;
-	if (leapyear(year) && dt->dt_mon > FEBRUARY)
+	if (is_leap_year(year) && dt->dt_mon > FEBRUARY)
 		days++;
 
 	if (year < 2000) {
 		/* simple way for early years */
 		for (i = POSIX_BASE_YEAR; i < year; i++)
-			days += days_in_year(i);
+			days += days_per_year(i);
 	} else {
 		/* years are properly aligned */
 		days += DAYSTO2000;
@@ -182,8 +149,8 @@ clock_secs_to_ymdhms(time_t secs, struct
 	if (secs < 0)
 		return EINVAL;
 
-	days = secs / SECDAY;
-	rsec = secs % SECDAY;
+	days = secs / SECS_PER_DAY;
+	rsec = secs % SECS_PER_DAY;
 
 	/* Day of week (Note: 1/1/1970 was a Thursday) */
 	dt->dt_wday = (days + 4) % 7;
@@ -204,20 +171,20 @@ clock_secs_to_ymdhms(time_t secs, struct
 		days -= i*DAYS4YEARS;
 		dt->dt_year += i*4;
 
-		for (i = dt->dt_year; days >= days_in_year(i); i++)
-			days -= days_in_year(i);
+		for (i = dt->dt_year; days >= days_per_year(i); i++)
+			days -= days_per_year(i);
 		dt->dt_year = i;
 	} else {
 		/* Subtract out whole years, counting them in i. */
-		for (i = POSIX_BASE_YEAR; days >= days_in_year(i); i++)
-			days -= days_in_year(i);
+		for (i = POSIX_BASE_YEAR; days >= days_per_year(i); i++)
+			days -= days_per_year(i);
 		dt->dt_year = i;
 	}
 
 	/* Subtract out whole months, counting them in i. */
 	for (leap = 0, i = 1; days >= days_in_month(i)+leap; i++) {
 		days -= days_in_month(i)+leap;
-		if (i == 1 && leapyear(dt->dt_year))
+		if (i == 1 && is_leap_year(dt->dt_year))
 			leap = 1;
 		else
 			leap = 0;
Index: src/sys/dev/clock_subr.h
diff -u src/sys/dev/clock_subr.h:1.22 src/sys/dev/clock_subr.h:1.23
--- src/sys/dev/clock_subr.h:1.22	Sun Sep  7 07:50:23 2014
+++ src/sys/dev/clock_subr.h	Sun Nov 16 21:15:49 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: clock_subr.h,v 1.22 2014/09/07 11:50:23 martin Exp $	*/
+/*	$NetBSD: clock_subr.h,v 1.23 2014/11/17 02:15:49 christos Exp $	*/
 
 /*-
  * Copyright (c) 1996 The NetBSD Foundation, Inc.
@@ -32,17 +32,19 @@
 #ifndef _DEV_CLOCK_SUBR_H_
 #define _DEV_CLOCK_SUBR_H_
 
+#include <sys/clock.h>
+
 /*
  * "POSIX time" to/from "YY/MM/DD/hh/mm/ss"
  */
 struct clock_ymdhms {
 	uint64_t dt_year;
-	u_char dt_mon;
-	u_char dt_day;
-	u_char dt_wday;	/* Day of week */
-	u_char dt_hour;
-	u_char dt_min;
-	u_char dt_sec;
+	uint8_t dt_mon;
+	uint8_t dt_day;
+	uint8_t dt_wday;	/* Day of week */
+	uint8_t dt_hour;
+	uint8_t dt_min;
+	uint8_t dt_sec;
 };
 
 time_t	clock_ymdhms_to_secs(struct clock_ymdhms *);
@@ -54,13 +56,6 @@ int	clock_secs_to_ymdhms(time_t, struct 
 #define	FROMBCD(x)	bcdtobin((x))
 #define	TOBCD(x)	bintobcd((x))
 
-/* Some handy constants. */
-#define SECDAY		(24 * 60 * 60)
-#define SECYR		(SECDAY * 365)
-
-/* Traditional POSIX base year */
-#define	POSIX_BASE_YEAR	1970
-
 /*
  * Interface to time-of-day clock devices.
  *

Index: src/sys/dev/dec/mcclock.c
diff -u src/sys/dev/dec/mcclock.c:1.27 src/sys/dev/dec/mcclock.c:1.28
--- src/sys/dev/dec/mcclock.c:1.27	Fri Jun  3 21:43:56 2011
+++ src/sys/dev/dec/mcclock.c	Sun Nov 16 21:15:49 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: mcclock.c,v 1.27 2011/06/04 01:43:56 tsutsui Exp $ */
+/* $NetBSD: mcclock.c,v 1.28 2014/11/17 02:15:49 christos Exp $ */
 
 /*
  * Copyright (c) 1994, 1995, 1996 Carnegie-Mellon University.
@@ -28,7 +28,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: mcclock.c,v 1.27 2011/06/04 01:43:56 tsutsui Exp $");
+__KERNEL_RCSID(0, "$NetBSD: mcclock.c,v 1.28 2014/11/17 02:15:49 christos Exp $");
 
 #include <sys/param.h>
 #include <sys/kernel.h>
@@ -168,13 +168,13 @@ mcclock_get(todr_chip_handle_t tch, stru
 	dt.dt_mon = regs[MC_MONTH];
 	dt.dt_year = 1972;
 
-	yearsecs = clock_ymdhms_to_secs(&dt) - (72 - 70) * SECYR;
+	yearsecs = clock_ymdhms_to_secs(&dt) - (72 - 70) * SECS_PER_COMMON_YEAR;
 
 	/*
 	 * Take the actual year from the filesystem if possible;
 	 * allow for 2 days of clock loss and 363 days of clock gain.
 	 */
-	dt.dt_year = 1972; /* or MINYEAR or base/SECYR+1970 ... */
+	dt.dt_year = 1972; /* or MINYEAR or base/SECS_PER_COMMON_YEAR+1970... */
 	dt.dt_mon = 1;
 	dt.dt_day = 1;
 	dt.dt_hour = 0;
@@ -182,7 +182,7 @@ mcclock_get(todr_chip_handle_t tch, stru
 	dt.dt_sec = 0;
 	for(;;) {
 		tvp->tv_sec = yearsecs + clock_ymdhms_to_secs(&dt);
-		if (tvp->tv_sec > tch->base_time - 2 * SECDAY)
+		if (tvp->tv_sec > tch->base_time - 2 * SECS_PER_DAY)
 			break;
 		dt.dt_year++;
 	}
@@ -214,7 +214,7 @@ mcclock_set(todr_chip_handle_t tch, stru
 	dt.dt_sec = 0;
 	yearsecs = tvp->tv_sec - clock_ymdhms_to_secs(&dt);
 
-#define first72 ((72 - 70) * SECYR)
+#define first72 ((72 - 70) * SECS_PER_COMMON_YEAR)
 	clock_secs_to_ymdhms(first72 + yearsecs, &dt);
 
 #ifdef DEBUG

Index: src/sys/fs/smbfs/smbfs_subr.c
diff -u src/sys/fs/smbfs/smbfs_subr.c:1.17 src/sys/fs/smbfs/smbfs_subr.c:1.18
--- src/sys/fs/smbfs/smbfs_subr.c:1.17	Sat Nov 15 13:52:44 2014
+++ src/sys/fs/smbfs/smbfs_subr.c	Sun Nov 16 21:15:49 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: smbfs_subr.c,v 1.17 2014/11/15 18:52:44 nakayama Exp $	*/
+/*	$NetBSD: smbfs_subr.c,v 1.18 2014/11/17 02:15:49 christos Exp $	*/
 
 /*
  * Copyright (c) 2000-2001, Boris Popov
@@ -35,7 +35,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: smbfs_subr.c,v 1.17 2014/11/15 18:52:44 nakayama Exp $");
+__KERNEL_RCSID(0, "$NetBSD: smbfs_subr.c,v 1.18 2014/11/17 02:15:49 christos Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -176,12 +176,12 @@ smb_time_unix2dos(struct timespec *tsp, 
 		if (days != lastday) {
 			lastday = days;
 			for (year = 1970;; year++) {
-				inc = year & 0x03 ? 365 : 366;
+ 				inc = days_per_year(year);
 				if (days < inc)
 					break;
 				days -= inc;
 			}
-			months = year & 0x03 ? regyear : leapyear;
+ 			months = is_leap_year(year) ? leapyear : regyear;
 			for (month = 0; days >= months[month]; month++)
 				;
 			if (month > 0)

Index: src/sys/kern/kern_todr.c
diff -u src/sys/kern/kern_todr.c:1.36 src/sys/kern/kern_todr.c:1.37
--- src/sys/kern/kern_todr.c:1.36	Sun Oct 12 12:23:20 2014
+++ src/sys/kern/kern_todr.c	Sun Nov 16 21:15:49 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: kern_todr.c,v 1.36 2014/10/12 16:23:20 jmcneill Exp $	*/
+/*	$NetBSD: kern_todr.c,v 1.37 2014/11/17 02:15:49 christos Exp $	*/
 
 /*
  * Copyright (c) 1988 University of Utah.
@@ -39,7 +39,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: kern_todr.c,v 1.36 2014/10/12 16:23:20 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kern_todr.c,v 1.37 2014/11/17 02:15:49 christos Exp $");
 
 #include <sys/param.h>
 #include <sys/kernel.h>
@@ -85,7 +85,7 @@ inittodr(time_t base)
 
 	rnd_add_data(NULL, &base, sizeof(base), 0);
 
-	if (base < 5 * SECYR) {
+	if (base < 5 * SECS_PER_COMMON_YEAR) {
 		struct clock_ymdhms basedate;
 
 		/*
@@ -113,7 +113,7 @@ inittodr(time_t base)
 
 	if ((todr_handle == NULL) ||
 	    (todr_gettime(todr_handle, &tv) != 0) ||
-	    (tv.tv_sec < (25 * SECYR))) {
+	    (tv.tv_sec < (25 * SECS_PER_COMMON_YEAR))) {
 
 		if (todr_handle != NULL)
 			printf("WARNING: preposterous TOD clock time\n");
@@ -126,7 +126,7 @@ inittodr(time_t base)
 		if (deltat < 0)
 			deltat = -deltat;
 
-		if (!badbase && deltat >= 2 * SECDAY) {
+		if (!badbase && deltat >= 2 * SECS_PER_DAY) {
 			
 			if (tv.tv_sec < base) {
 				/*
@@ -136,11 +136,11 @@ inittodr(time_t base)
 				 * believe the filesystem.
 				 */
 				printf("WARNING: clock lost %" PRId64 " days\n",
-				    deltat / SECDAY);
+				    deltat / SECS_PER_DAY);
 				badrtc = true;
 			} else {
 				aprint_verbose("WARNING: clock gained %" PRId64
-				    " days\n", deltat / SECDAY);
+				    " days\n", deltat / SECS_PER_DAY);
 				goodtime = true;
 			}
 		} else {
@@ -179,8 +179,8 @@ inittodr(time_t base)
  * Reset the TODR based on the time value; used when the TODR
  * has a preposterous value and also when the time is reset
  * by the stime system call.  Also called when the TODR goes past
- * TODRZERO + 100*(SECYEAR+2*SECDAY) (e.g. on Jan 2 just after midnight)
- * to wrap the TODR around.
+ * TODRZERO + 100*(SECS_PER_COMMON_YEAR+2*SECS_PER_DAY)
+ * (e.g. on Jan 2 just after midnight) to wrap the TODR around.
  */
 void
 resettodr(void)

Index: src/sys/sys/Makefile
diff -u src/sys/sys/Makefile:1.151 src/sys/sys/Makefile:1.152
--- src/sys/sys/Makefile:1.151	Tue Aug 19 03:27:31 2014
+++ src/sys/sys/Makefile	Sun Nov 16 21:15:49 2014
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile,v 1.151 2014/08/19 07:27:31 matt Exp $
+#	$NetBSD: Makefile,v 1.152 2014/11/17 02:15:49 christos Exp $
 
 .include <bsd.own.mk>
 
@@ -7,7 +7,7 @@ INCSDIR= /usr/include/sys
 INCS=	acct.h agpio.h aio.h ansi.h aout_mids.h ataio.h atomic.h audioio.h \
 	bitops.h bootblock.h bswap.h buf.h \
 	callback.h callout.h cdbr.h cdefs.h cdefs_aout.h \
-	cdefs_elf.h cdio.h chio.h clockctl.h \
+	cdefs_elf.h cdio.h chio.h clock.h clockctl.h \
 	common_ansi.h common_int_const.h common_int_fmtio.h \
 	common_int_limits.h common_int_mwgwtypes.h common_int_types.h \
 	common_limits.h common_wchar_limits.h \

Reply via email to