Module Name:    src
Committed By:   riastradh
Date:           Thu Jul 27 01:48:49 UTC 2023

Modified Files:
        src/sys/kern: kern_tc.c

Log Message:
kern: Restore non-atomic time_second symbol.

This is used by savecore(8), vmstat(8), and possibly other things.

XXX Should really teach dump and savecore(8) to use an intentionally
designed header, rather than relying on kvm(3) -- and make it work
for saving cores from other kernels so you don't have to boot the
same buggy kernel to get a core dump.


To generate a diff of this commit:
cvs rdiff -u -r1.73 -r1.74 src/sys/kern/kern_tc.c

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

Modified files:

Index: src/sys/kern/kern_tc.c
diff -u src/sys/kern/kern_tc.c:1.73 src/sys/kern/kern_tc.c:1.74
--- src/sys/kern/kern_tc.c:1.73	Mon Jul 17 21:51:45 2023
+++ src/sys/kern/kern_tc.c	Thu Jul 27 01:48:49 2023
@@ -1,4 +1,4 @@
-/* $NetBSD: kern_tc.c,v 1.73 2023/07/17 21:51:45 riastradh Exp $ */
+/* $NetBSD: kern_tc.c,v 1.74 2023/07/27 01:48:49 riastradh Exp $ */
 
 /*-
  * Copyright (c) 2008, 2009 The NetBSD Foundation, Inc.
@@ -40,7 +40,7 @@
 
 #include <sys/cdefs.h>
 /* __FBSDID("$FreeBSD: src/sys/kern/kern_tc.c,v 1.166 2005/09/19 22:16:31 andre Exp $"); */
-__KERNEL_RCSID(0, "$NetBSD: kern_tc.c,v 1.73 2023/07/17 21:51:45 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kern_tc.c,v 1.74 2023/07/27 01:48:49 riastradh Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_ntp.h"
@@ -133,6 +133,9 @@ static struct timehands *volatile timeha
 struct timecounter *timecounter = &dummy_timecounter;
 static struct timecounter *timecounters = &dummy_timecounter;
 
+/* used by savecore(8) */
+time_t time_second_legacy asm("time_second");
+
 #ifdef __HAVE_ATOMIC64_LOADSTORE
 volatile time_t time__second __cacheline_aligned = 1;
 volatile time_t time__uptime __cacheline_aligned = 1;
@@ -164,6 +167,8 @@ static inline void
 setrealuptime(time_t second, time_t uptime)
 {
 
+	time_second_legacy = second;
+
 	atomic_store_relaxed(&time__second, second);
 	atomic_store_relaxed(&time__uptime, uptime);
 }
@@ -178,6 +183,8 @@ setrealuptime(time_t second, time_t upti
 
 	KDASSERT(mutex_owned(&timecounter_lock));
 
+	time_second_legacy = second;
+
 	/*
 	 * Fast path -- no wraparound, just updating the low bits, so
 	 * no need for seqlocked access.

Reply via email to