#ifndef LITMUS_DEBUG_TRACE_H
#define LITMUS_DEBUG_TRACE_H
#ifdef CONFIG_SCHED_DEBUG_TRACE
void sched_trace_log_message(const char* fmt, ...);
void dump_trace_buffer(int max);
#else
#define sched_trace_log_message(fmt, ...)
#endif
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(TRACE_PREFIX fmt, \
TRACE_ARGS, ## args)
#define TRACE_TASK(t, fmt, args...) \
TRACE("(%s/%d:%d) " fmt, \
t ? (t)->comm : "null", \
t ? (t)->pid : 0, \
t ? (t)->rt_param.job_params.job_no : 0, \
##args)
#define TRACE_CUR(fmt, args...) \
TRACE_TASK(current, fmt, ## args)
#endif