From e35079db73e74715ae6d56364dde4bf7dd970378 Mon Sep 17 00:00:00 2001 From: Hans Petter Selasky Date: Tue, 30 Oct 2018 16:42:56 +0000 Subject: [PATCH] Implement the dump_stack() function in the LinuxKPI. Submitted by: Johannes Lundberg MFC after: 3 days Sponsored by: Mellanox Technologies --- sys/compat/linuxkpi/common/include/linux/kernel.h | 3 +++ sys/compat/linuxkpi/common/src/linux_compat.c | 15 +++++++++++++++ sys/modules/linuxkpi/Makefile | 3 ++- 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/sys/compat/linuxkpi/common/include/linux/kernel.h b/sys/compat/linuxkpi/common/include/linux/kernel.h index 8d2eab9d527..5ff30ba9c28 100644 --- a/sys/compat/linuxkpi/common/include/linux/kernel.h +++ b/sys/compat/linuxkpi/common/include/linux/kernel.h @@ -138,6 +138,9 @@ #define printk(...) printf(__VA_ARGS__) #define vprintk(f, a) vprintf(f, a) +extern void linux_dump_stack(void); +#define dump_stack() linux_dump_stack() + struct va_format { const char *fmt; va_list *va; diff --git a/sys/compat/linuxkpi/common/src/linux_compat.c b/sys/compat/linuxkpi/common/src/linux_compat.c index e3fb0a0ce49..1cae0fcf142 100644 --- a/sys/compat/linuxkpi/common/src/linux_compat.c +++ b/sys/compat/linuxkpi/common/src/linux_compat.c @@ -30,6 +30,8 @@ #include __FBSDID("$FreeBSD$"); +#include "opt_stack.h" + #include #include #include @@ -46,6 +48,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include @@ -2207,6 +2210,18 @@ __unregister_chrdev(unsigned int major, unsigned int baseminor, } } +void +linux_dump_stack(void) +{ +#ifdef STACK + struct stack st; + + stack_zero(&st); + stack_save(&st); + stack_print(&st); +#endif +} + #if defined(__i386__) || defined(__amd64__) bool linux_cpu_has_clflush; #endif diff --git a/sys/modules/linuxkpi/Makefile b/sys/modules/linuxkpi/Makefile index bc9716b50ad..4a7e7544ae5 100644 --- a/sys/modules/linuxkpi/Makefile +++ b/sys/modules/linuxkpi/Makefile @@ -24,7 +24,8 @@ SRCS+= bus_if.h \ pci_if.h \ vnode_if.h \ usb_if.h \ - opt_usb.h + opt_usb.h \ + opt_stack.h CFLAGS+= -I${SRCTOP}/sys/compat/linuxkpi/common/include CFLAGS+= -I${SRCTOP}/sys/contrib/ck/include