feat: kernel stack tracing
[lunaix-os.git] / lunaix-os / includes / lunaix / trace.h
index 80cf5f33ce09de2cead253cc10b17f8970f9ab74..4fbddd93d6bee23b4f9e374912efc15ab7ee9c8a 100644 (file)
@@ -2,6 +2,7 @@
 #define __LUNAIX_TRACE_H
 
 #include <lunaix/boot_generic.h>
+#include <sys/interrupts.h>
 
 struct ksym_entry
 {
@@ -9,6 +10,12 @@ struct ksym_entry
     u32_t label_off;
 };
 
+struct trace_record
+{
+    ptr_t pc;
+    char* symbol;
+};
+
 struct ksyms
 {
     u32_t ksym_count;
@@ -27,7 +34,19 @@ trace_modksyms_init(struct boot_handoff* bhctx);
 struct ksym_entry*
 trace_sym_lookup(ptr_t pc);
 
+int
+trace_walkback(struct trace_record* tb_buffer,
+               ptr_t fp,
+               int limit,
+               ptr_t* last_fp);
+
+void
+trace_printstack_of(ptr_t fp);
+
+void
+trace_printstack_isr(const isr_param* isrm);
+
 void
-trace_walkback(ptr_t fp);
+trace_printstack();
 
 #endif /* __LUNAIX_TRACE_H */