diff options
-rw-r--r-- | include/linux/kernel.h | 2 | ||||
-rw-r--r-- | include/linux/printk.h | 3 | ||||
-rw-r--r-- | src/bcachefs.rs | 1 | ||||
-rw-r--r-- | src/dump_stack.rs | 6 |
4 files changed, 10 insertions, 2 deletions
diff --git a/include/linux/kernel.h b/include/linux/kernel.h index 6eb8c8a0..efa73385 100644 --- a/include/linux/kernel.h +++ b/include/linux/kernel.h @@ -254,8 +254,6 @@ struct qstr { #define POISON_FREE 0x6b -static inline void dump_stack(void) {} - #define unsafe_memcpy(dst, src, bytes, justification) \ memcpy(dst, src, bytes) diff --git a/include/linux/printk.h b/include/linux/printk.h index 54536477..31ff7b65 100644 --- a/include/linux/printk.h +++ b/include/linux/printk.h @@ -205,4 +205,7 @@ void printk(const char *fmt, ...); #define pr_devel_ratelimited(fmt, ...) \ no_printk(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__) #endif + +void dump_stack(void); + #endif /* __TOOLS_LINUX_PRINTK_H */ diff --git a/src/bcachefs.rs b/src/bcachefs.rs index 91c44db0..f49f9195 100644 --- a/src/bcachefs.rs +++ b/src/bcachefs.rs @@ -1,5 +1,6 @@ mod commands; mod key; +mod dump_stack; mod logging; mod wrappers; diff --git a/src/dump_stack.rs b/src/dump_stack.rs new file mode 100644 index 00000000..35f0ee27 --- /dev/null +++ b/src/dump_stack.rs @@ -0,0 +1,6 @@ +// This will show C frames in the backtrace +#[no_mangle] +pub extern "C" fn dump_stack() { + let bt = std::backtrace::Backtrace::force_capture(); + println!("{}", bt); +} |