diff --git a/include/types/trace.h b/include/types/trace.h index e43cb88b9..152cc8ff6 100644 --- a/include/types/trace.h +++ b/include/types/trace.h @@ -129,6 +129,9 @@ struct trace_source { const char *desc; const struct trace_event *known_events; struct list source_link; // element in list of known trace sources + void (*default_cb)(enum trace_level level, uint64_t mask, + const struct trace_source *src, const struct ist where, + const void *a1, const void *a2, const void *a3, const void *a4); uint32_t arg_def; // argument definitions (sum of TRC_ARG{1..4}_*) const struct trace_lockon_arg *lockon_args; // must be 4 entries if not NULL /* trace configuration, adjusted by "trace " on CLI */ diff --git a/src/trace.c b/src/trace.c index 039bf3a70..e8de89bac 100644 --- a/src/trace.c +++ b/src/trace.c @@ -184,6 +184,9 @@ void __trace(enum trace_level level, uint64_t mask, struct trace_source *src, co } line[2] = ist("] "); + if (!cb) + cb = src->default_cb; + if (cb) { /* decode function passed, we want to pre-fill the * buffer with the message and let the decode function