X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/b9f4a7b7475e62dbff22da6dd768222f03889c00..13a19dccebb7df5b78d984ce26f8f3225dd5130a:/lunaix-os/includes/lunaix/trace.h diff --git a/lunaix-os/includes/lunaix/trace.h b/lunaix-os/includes/lunaix/trace.h index 4fbddd9..9edf961 100644 --- a/lunaix-os/includes/lunaix/trace.h +++ b/lunaix-os/includes/lunaix/trace.h @@ -28,24 +28,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();