git://scm.lunaixsky.com
/
lunaix-os.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
scale up the fragfile sample size
[lunaix-os.git]
/
lunaix-os
/
kernel
/
debug
/
trace.c
diff --git
a/lunaix-os/kernel/debug/trace.c
b/lunaix-os/kernel/debug/trace.c
index 66e5505e2bc97a92d6c022beecbbe57391be9112..452b3cd1d13855a8878ff7d51b8892aab57fd1d8 100644
(file)
--- a/
lunaix-os/kernel/debug/trace.c
+++ b/
lunaix-os/kernel/debug/trace.c
@@
-3,19
+3,19
@@
#include <lunaix/spike.h>
#include <lunaix/syslog.h>
#include <lunaix/trace.h>
#include <lunaix/spike.h>
#include <lunaix/syslog.h>
#include <lunaix/trace.h>
+#include <lunaix/sections.h>
-#include <
sys
/abi.h>
-#include <
sys/m
m/mm_defs.h>
+#include <
asm
/abi.h>
+#include <
as
m/mm_defs.h>
#include <sys/trace.h>
#include <klibc/string.h>
#define NB_TRACEBACK 16
#include <sys/trace.h>
#include <klibc/string.h>
#define NB_TRACEBACK 16
-LOG_MODULE("
TRACE
")
+LOG_MODULE("
lkdbg
")
-weak struct ksyms __lunaix_ksymtable[] = { };
-extern struct ksyms __lunaix_ksymtable[];
+extern_autogen(ksymtable);
static struct trace_context trace_ctx;
static struct trace_context trace_ctx;
@@
-33,7
+33,10
@@
trace_log(const char* fmt, ...)
void
trace_modksyms_init(struct boot_handoff* bhctx)
{
void
trace_modksyms_init(struct boot_handoff* bhctx)
{
- trace_ctx.ksym_table = __lunaix_ksymtable;
+ trace_ctx.ksym_table = autogen(struct ksyms, ksymtable);
+
+ INFO("symbols loaded: %d @0x%lx",
+ trace_ctx.ksym_table->ksym_count, trace_ctx.ksym_table->syms);
}
struct ksym_entry*
}
struct ksym_entry*
@@
-71,14
+74,14
@@
static char*
ksym_getstr(struct ksym_entry* sym)
{
if (!sym) {
ksym_getstr(struct ksym_entry* sym)
{
if (!sym) {
- return
"???"
;
+ return
NULL
;
}
return sym->label;
}
static inline bool valid_fp(ptr_t ptr) {
}
return sym->label;
}
static inline bool valid_fp(ptr_t ptr) {
- ptr_t start = ROUNDUP(current_thread->kstack - KSTACK_SIZE,
MEM_PAG
E);
+ ptr_t start = ROUNDUP(current_thread->kstack - KSTACK_SIZE,
PAGE_SIZ
E);
return (start < ptr && ptr < current_thread->kstack)
|| arch_valid_fp(ptr);
return (start < ptr && ptr < current_thread->kstack)
|| arch_valid_fp(ptr);
@@
-121,10
+124,10
@@
trace_walkback(struct trace_record* tb_buffer,
static inline void
trace_print_code_entry(ptr_t sym_pc, ptr_t inst_pc, char* sym)
{
static inline void
trace_print_code_entry(ptr_t sym_pc, ptr_t inst_pc, char* sym)
{
- if (sym
_pc
) {
+ if (sym) {
trace_log("%s+%p", sym, inst_pc - sym_pc);
} else {
trace_log("%s+%p", sym, inst_pc - sym_pc);
} else {
- trace_log("
%s [%p]", sym, sym
_pc);
+ trace_log("
??? [%p]", inst
_pc);
}
}
}
}
@@
-161,7
+164,7
@@
static void
trace_printswctx(const struct hart_state* hstate, bool from_usr, bool to_usr)
{
trace_printswctx(const struct hart_state* hstate, bool from_usr, bool to_usr)
{
- struct ksym_entry* sym = trace_sym_lookup(h
state->execp->eip
);
+ struct ksym_entry* sym = trace_sym_lookup(h
art_pc(hstate)
);
trace_log("^^^^^ --- %s", to_usr ? "user" : "kernel");
trace_print_transistion_short(hstate);
trace_log("^^^^^ --- %s", to_usr ? "user" : "kernel");
trace_print_transistion_short(hstate);