From 2aad06b056054442964f46752bdb098030cdb866 Mon Sep 17 00:00:00 2001 From: "Bjoern B. Brandenburg" Date: Mon, 22 Nov 2010 01:25:19 -0500 Subject: add optional [function@file:line] tag to TRACE() log Add information to each trace message that makes it easier to locate where it came from. It is disabled by default since this adds a lot of clutter. Example: 81281 P1 [gsnedf_schedule@litmus/sched_gsn_edf.c:406]: (rtspin/1483:1) blocks:0 out_of_time:0 np:0 sleep:1 preempt:0 state:0 sig:0 81282 P1 [job_completion@litmus/sched_gsn_edf.c:303]: (rtspin/1483:1) job_completion(). 81283 P1 [__add_release@litmus/rt_domain.c:344]: (rtspin/1483:2) add_release(), rel=41941764351 81284 P1 [gsnedf_schedule@litmus/sched_gsn_edf.c:453]: (rtspin/1483:2) scheduled_on = NO_CPU --- include/litmus/debug_trace.h | 16 +++++++++++++--- litmus/Kconfig | 15 +++++++++++++++ 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/include/litmus/debug_trace.h b/include/litmus/debug_trace.h index 2e946f147ca7..48d086d5a44c 100644 --- a/include/litmus/debug_trace.h +++ b/include/litmus/debug_trace.h @@ -12,10 +12,20 @@ void dump_trace_buffer(int max); extern atomic_t __log_seq_no; +#ifdef CONFIG_SCHED_DEBUG_TRACE_CALLER +#define TRACE_PREFIX "%d P%d [%s@%s:%d]: " +#define TRACE_ARGS atomic_add_return(1, &__log_seq_no), \ + raw_smp_processor_id(), \ + __FUNCTION__, __FILE__, __LINE__ +#else +#define TRACE_PREFIX "%d P%d: " +#define TRACE_ARGS atomic_add_return(1, &__log_seq_no), \ + raw_smp_processor_id() +#endif + #define TRACE(fmt, args...) \ - sched_trace_log_message("%d P%d: " fmt, \ - atomic_add_return(1, &__log_seq_no), \ - raw_smp_processor_id(), ## args) + sched_trace_log_message(TRACE_PREFIX fmt, \ + TRACE_ARGS, ## args) #define TRACE_TASK(t, fmt, args...) \ TRACE("(%s/%d:%d) " fmt, (t)->comm, (t)->pid, \ diff --git a/litmus/Kconfig b/litmus/Kconfig index d62c417f261e..a2f267870f29 100644 --- a/litmus/Kconfig +++ b/litmus/Kconfig @@ -174,6 +174,21 @@ config SCHED_DEBUG_TRACE_SHIFT character device node should be created at /dev/litmus/log. The buffer can be flushed using cat, e.g., 'cat /dev/litmus/log > my_log_file.txt'. +config SCHED_DEBUG_TRACE_CALLER + bool "Include [function@file:line] tag in TRACE() log" + depends on SCHED_DEBUG_TRACE + default n + help + With this option enabled, TRACE() prepends + + "[@:]" + + to each message in the debug log. Enable this to aid in figuring out + what was called in which order. The downside is that it adds a lot of + clutter. + + If unsure, say No. + endmenu endmenu -- cgit v1.2.2