diff options
author | Kent Overstreet <kent.overstreet@linux.dev> | 2025-07-13 09:17:06 -0400 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2025-07-13 09:19:28 -0400 |
commit | c2f3e4c99c1e5e7c073aeec6d157c5d645734064 (patch) | |
tree | 9d4cd839ec43f7fe88fd631928bb4f55b22b296d | |
parent | 73740b9cf25fab1cab76c787f762b0fd4253c2f3 (diff) |
Implement dump_stack()
Rust has this in the standard library - nice.
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
-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); +} |