feat: lunadbg GDB plugin to ease kernel debugging process.
[lunaix-os.git] / lunaix-os / includes / lunaix / trace.h
index 4fbddd93d6bee23b4f9e374912efc15ab7ee9c8a..44a2da74f8b3b35cd6193b5c9dad5e71c4b4b5f8 100644 (file)
@@ -13,6 +13,7 @@ struct ksym_entry
 struct trace_record
 {
     ptr_t pc;
+    ptr_t sym_pc;
     char* symbol;
 };
 
@@ -28,24 +29,61 @@ struct trace_context
     struct ksyms* ksym_table;
 };
 
+/**
+ * @brief Init the trace service using loaded modksyms module
+ *
+ * @param bhctx
+ */
 void
 trace_modksyms_init(struct boot_handoff* bhctx);
 
+/**
+ * @brief Locate the symbol which is the closest to given pc.
+ *
+ * @param pc
+ * @return struct ksym_entry*
+ */
 struct ksym_entry*
 trace_sym_lookup(ptr_t pc);
 
+/**
+ * @brief Walk the stack backwards to generate stack trace
+ *
+ * @param tb_buffer
+ * @param fp
+ * @param limit
+ * @param last_fp
+ * @return int
+ */
 int
 trace_walkback(struct trace_record* tb_buffer,
                ptr_t fp,
                int limit,
                ptr_t* last_fp);
 
+/**
+ * @brief Print the stack trace starting from the given frame pointer
+ *
+ * @param fp
+ */
 void
 trace_printstack_of(ptr_t fp);
 
+/**
+ * @brief Print the stack trace given the current interrupt context. In addition
+ * to the stacktrace, this will also print all context switches happened
+ * beforehand, and all stack trace in each context. Recommended for verbose
+ * debugging.
+ *
+ * @param isrm
+ */
 void
 trace_printstack_isr(const isr_param* isrm);
 
+/**
+ * @brief Print the stack trace starting from caller's frame pointer.
+ *
+ */
 void
 trace_printstack();