summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_shutdown.c
diff options
context:
space:
mode:
authorphk <phk@FreeBSD.org>2003-01-04 20:54:58 +0000
committerphk <phk@FreeBSD.org>2003-01-04 20:54:58 +0000
commitcd57ad899fc4b16669e8bd6f0ddc0d798d9b323f (patch)
tree03615131ce3e84045e995356032ffae0ee90cabe /sys/kern/kern_shutdown.c
parent1be94e24775ebfa19199eaee7957dca3b333efd2 (diff)
downloadFreeBSD-src-cd57ad899fc4b16669e8bd6f0ddc0d798d9b323f.zip
FreeBSD-src-cd57ad899fc4b16669e8bd6f0ddc0d798d9b323f.tar.gz
Introduce the
void backtrace(void); function which will print a backtrace if DDB is in the kernel and an explanation if not. This is useful for recording backtraces in non-fatal circumstances and does not require pollution with DDB #includes in the files where it is used. It would of course be nice to have a non-DDB dependent version too, but since the meat of a backtrace is MD it is probably not worth it.
Diffstat (limited to 'sys/kern/kern_shutdown.c')
-rw-r--r--sys/kern/kern_shutdown.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/sys/kern/kern_shutdown.c b/sys/kern/kern_shutdown.c
index 1867b8a..d63ece6 100644
--- a/sys/kern/kern_shutdown.c
+++ b/sys/kern/kern_shutdown.c
@@ -438,6 +438,20 @@ shutdown_reset(void *junk, int howto)
/* NOTREACHED */ /* assuming reset worked */
}
+/*
+ * Print a backtrace if we can.
+ */
+
+void
+backtrace(void)
+{
+#ifdef DDB
+ db_print_backtrace();
+#else
+ printf("Sorry, need DDB option to print backtrace");
+#endif
+}
+
#ifdef SMP
static u_int panic_cpu = NOCPU;
#endif
OpenPOWER on IntegriCloud