Module Name: src
Committed By: christos
Date: Sat Jan 11 17:07:45 UTC 2014
Modified Files:
src/sys/kern: subr_prf.c
Log Message:
Sleep 10 seconds before rebooting due to panic()
To give an opportunity to screencap a panic(), or pause a VM to attach
a debugger. (Richard Hansen)
To generate a diff of this commit:
cvs rdiff -u -r1.150 -r1.151 src/sys/kern/subr_prf.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/subr_prf.c
diff -u src/sys/kern/subr_prf.c:1.150 src/sys/kern/subr_prf.c:1.151
--- src/sys/kern/subr_prf.c:1.150 Sun Feb 10 06:04:19 2013
+++ src/sys/kern/subr_prf.c Sat Jan 11 12:07:45 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: subr_prf.c,v 1.150 2013/02/10 11:04:19 apb Exp $ */
+/* $NetBSD: subr_prf.c,v 1.151 2014/01/11 17:07:45 christos Exp $ */
/*-
* Copyright (c) 1986, 1988, 1991, 1993
@@ -37,7 +37,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: subr_prf.c,v 1.150 2013/02/10 11:04:19 apb Exp $");
+__KERNEL_RCSID(0, "$NetBSD: subr_prf.c,v 1.151 2014/01/11 17:07:45 christos Exp $");
#include "opt_ddb.h"
#include "opt_ipkdb.h"
@@ -281,6 +281,19 @@ vpanic(const char *fmt, va_list ap)
#ifdef DDB
db_panic();
#endif
+ printf("rebooting in");
+ for (int i = 10; i >= 0; --i) {
+ printf(" %u", i);
+ /*
+ * sleep 10ms 100 times instead of 1s once to give a
+ * VM hypervisor an opportunity to redraw part of the
+ * screen during each call
+ */
+ for (int j=0; i && j < 100; ++j) {
+ DELAY(10000);
+ }
+ }
+ printf("\n");
cpu_reboot(bootopt, NULL);
}