From 00828b334535ef1e64a3e1c43e55fcaa8ed391cf Mon Sep 17 00:00:00 2001 From: Matthew Dillon Date: Sat, 27 Dec 2008 19:23:45 -0800 Subject: [PATCH] Remove KTR hacks, pass va_list through as needed. --- sys/kern/kern_ktr.c | 81 +++------------------------------- sys/platform/pc64/amd64/trap.c | 22 --------- sys/sys/ktr.h | 14 ------ 3 files changed, 6 insertions(+), 111 deletions(-) diff --git a/sys/kern/kern_ktr.c b/sys/kern/kern_ktr.c index 1ada7b9e1a..9506906030 100644 --- a/sys/kern/kern_ktr.c +++ b/sys/kern/kern_ktr.c @@ -432,60 +432,9 @@ ktr_resync_callback(void *dummy __unused) * KTR_WRITE_ENTRY - Primary entry point for kernel trace logging */ -void -ktr_write_str_entry(struct ktr_info *info, const char *file, int line, const char *jg_format, ...) -{ - __va_list va; - struct ktr_entry *entry; - int cpu; - __va_start(va, jg_format); - - cpu = mycpu->gd_cpuid; - if (!ktr_buf[cpu]) - return; - - crit_enter(); - entry = ktr_buf[cpu] + (ktr_idx[cpu] & KTR_ENTRIES_MASK); - ++ktr_idx[cpu]; -#ifdef _RDTSC_SUPPORTED_ - if (cpu_feature & CPUID_TSC) { -#ifdef SMP - entry->ktr_timestamp = rdtsc() - tsc_offsets[cpu]; -#else - entry->ktr_timestamp = rdtsc(); -#endif - } else -#endif - { - entry->ktr_timestamp = get_approximate_time_t(); - } - entry->ktr_info = info; - entry->ktr_file = file; - entry->ktr_line = line; - crit_exit(); - kvsnprintf(entry->ktr_data, KTR_BUFSIZE, jg_format, va); - ((char *)(entry->ktr_data))[KTR_BUFSIZE - 1] = '\0'; - if (ktr_stacktrace) - cpu_ktr_caller(entry); -#ifdef KTR_VERBOSE - if (ktr_verbose && info->kf_format) { -#ifdef SMP - kprintf("cpu%d ", cpu); -#endif - if (ktr_verbose > 1) { - kprintf("%s.%d\t", entry->ktr_file, entry->ktr_line); - } - kvprintf(info->kf_format, ptr); - kprintf("\n"); - } -#endif - __va_end(va); -} - static __inline void -ktr_write_entry(struct ktr_info *info, const char *file, int line, - const void *ptr) +ktr_write_entry(struct ktr_info *info, const char *file, int line, __va_list va) { struct ktr_entry *entry; int cpu; @@ -514,9 +463,9 @@ ktr_write_entry(struct ktr_info *info, const char *file, int line, entry->ktr_line = line; crit_exit(); if (info->kf_data_size > KTR_BUFSIZE) - bcopy(ptr, entry->ktr_data, KTR_BUFSIZE); + bcopy(va, entry->ktr_data, KTR_BUFSIZE); else if (info->kf_data_size) - bcopy(ptr, entry->ktr_data, info->kf_data_size); + bcopy(va, entry->ktr_data, info->kf_data_size); if (ktr_stacktrace) cpu_ktr_caller(entry); #ifdef KTR_VERBOSE @@ -527,7 +476,7 @@ ktr_write_entry(struct ktr_info *info, const char *file, int line, if (ktr_verbose > 1) { kprintf("%s.%d\t", entry->ktr_file, entry->ktr_line); } - kvprintf(info->kf_format, ptr); + kvprintf(info->kf_format, va); kprintf("\n"); } #endif @@ -545,14 +494,6 @@ ktr_log(struct ktr_info *info, const char *file, int line, ...) } } -void -ktr_log_ptr(struct ktr_info *info, const char *file, int line, const void *ptr) -{ - if (panicstr == NULL) { - ktr_write_entry(info, file, line, ptr); - } -} - #ifdef DDB #define NUM_LINES_PER_PAGE 19 @@ -676,18 +617,8 @@ db_mach_vtrace(int cpu, struct ktr_entry *kp, int idx) } db_printf("%s\t", kp->ktr_info->kf_name); db_printf("from(%p,%p) ", kp->ktr_caller1, kp->ktr_caller2); - if (kp->ktr_info->kf_format) { - if (strcmp(kp->ktr_info->kf_format, "STR") == 0) { - db_printf("%s", kp->ktr_data); - } else { - int64_t *args = kp->ktr_data; - db_printf(kp->ktr_info->kf_format, - args[0], args[1], args[2], args[3], - args[4], args[5], args[6], args[7], - args[8], args[9], args[10], args[11]); - } - - } + if (kp->ktr_info->kf_format) + db_vprintf(kp->ktr_info->kf_format, (__va_list)kp->ktr_data); db_printf("\n"); return(1); diff --git a/sys/platform/pc64/amd64/trap.c b/sys/platform/pc64/amd64/trap.c index d814fd59c0..aaf8fd2c40 100644 --- a/sys/platform/pc64/amd64/trap.c +++ b/sys/platform/pc64/amd64/trap.c @@ -449,13 +449,8 @@ trap(struct trapframe *frame) if (ISPL(frame->tf_cs) == SEL_UPL) { /* user trap */ -#if JG KTR_LOG(kernentry_trap, p->p_pid, lp->lwp_tid, frame->tf_trapno, eva); -#else - KTR_LOG_STR(kernentry_trap, "pid=%d, tid=%d, trapno=%ld, eva=%lx", p->p_pid, lp->lwp_tid, - frame->tf_trapno, (frame->tf_trapno == T_PAGEFLT ? frame->tf_addr : 0)); -#endif userenter(td); @@ -794,11 +789,7 @@ out2: ; rel_mplock(); #endif if (p != NULL && lp != NULL) -#if JG KTR_LOG(kernentry_trap_ret, p->p_pid, lp->lwp_tid); -#else - KTR_LOG_STR(kernentry_trap_ret, "pid=%d, tid=%d", p->p_pid, lp->lwp_tid); -#endif #ifdef INVARIANTS KASSERT(crit_count == (td->td_pri & ~TDPRI_MASK), ("syscall: critical section count mismatch! %d/%d", @@ -1064,13 +1055,8 @@ syscall2(struct trapframe *frame) } #endif -#if JG KTR_LOG(kernentry_syscall, p->p_pid, lp->lwp_tid, frame->tf_eax); -#else - KTR_LOG_STR(kernentry_syscall, "pid=%d, tid=%d, call=%ld", p->p_pid, lp->lwp_tid, - frame->tf_rax); -#endif #ifdef SMP KASSERT(td->td_mpcount == 0, ("badmpcount syscall2 from %p", (void *)frame->tf_eip)); @@ -1285,11 +1271,7 @@ bad: if (have_mplock) rel_mplock(); #endif -#if JG KTR_LOG(kernentry_syscall_ret, p->p_pid, lp->lwp_tid, error); -#else - KTR_LOG_STR(kernentry_syscall_ret, "pid=%d, tid=%d, err=%d", p->p_pid, lp->lwp_tid, error); -#endif #ifdef INVARIANTS KASSERT(crit_count == (td->td_pri & ~TDPRI_MASK), ("syscall: critical section count mismatch! %d/%d", @@ -1306,11 +1288,7 @@ fork_return(struct lwp *lp, struct trapframe *frame) frame->tf_rdx = 1; generic_lwp_return(lp, frame); -#if JG KTR_LOG(kernentry_fork_ret, lp->lwp_proc->p_pid, lp->lwp_tid); -#else - KTR_LOG_STR(kernentry_fork_ret, "pid=%d, tid=%d", lp->lwp_proc->p_pid, lp->lwp_tid); -#endif } /* diff --git a/sys/sys/ktr.h b/sys/sys/ktr.h index a5b3755f5f..a4ace05bcd 100644 --- a/sys/sys/ktr.h +++ b/sys/sys/ktr.h @@ -88,9 +88,7 @@ struct ktr_entry { int32_t ktr_data[KTR_BUFSIZE / sizeof(int32_t)]; }; -void ktr_write_str_entry(struct ktr_info *info, const char *file, int line, const char *format, ...); void ktr_log(struct ktr_info *info, const char *file, int line, ...); -void ktr_log_ptr(struct ktr_info *info, const char *file, int line, const void *ptr); void cpu_ktr_caller(struct ktr_entry *ktr); /* @@ -135,21 +133,11 @@ SYSCTL_DECL(_debug_ktr); format, \ datasize } -#define KTR_LOG_STR(name, format, args...) \ - if (ktr_ ## name ## _enable && \ - (ktr_ ## name ## _mask & *ktr_info_ ## name .kf_master_enable)) \ - ktr_write_str_entry(&ktr_info_ ## name, __FILE__, __LINE__, format, ##args) - #define KTR_LOG(name, args...) \ if (ktr_ ## name ## _enable && \ (ktr_ ## name ## _mask & *ktr_info_ ## name .kf_master_enable)) \ ktr_log(&ktr_info_ ## name, __FILE__, __LINE__, ##args) -#define KTR_LOG_PTR(name, ptr) \ - if (ktr_ ## name ## _enable && \ - (ktr_ ## name ## _mask & *ktr_info_ ## name .kf_master_enable)) \ - ktr_log_ptr(&ktr_info_ ## name, __FILE__, __LINE__, ptr) - #else #define KTR_INFO_MASTER(master) \ @@ -163,8 +151,6 @@ SYSCTL_DECL(_debug_ktr); 1 << maskbit #define KTR_LOG(info, args...) -#define KTR_LOG_PTR(info, ptr) -#define KTR_LOG_STR(info, format, args...) #endif -- 2.41.0