]> git.ipfire.org Git - thirdparty/haproxy.git/commit
MINOR: trace: prepend the function name for developer level traces
authorWilly Tarreau <w@1wt.eu>
Thu, 29 Aug 2019 06:40:59 +0000 (08:40 +0200)
committerWilly Tarreau <w@1wt.eu>
Thu, 29 Aug 2019 15:09:13 +0000 (17:09 +0200)
commit09fb0df6fd666cbd4a490c84ab05fdcfda864449
treec8427d6b354ff6e11eae1c11fd325feeb649034e
parent2ea549bc4377932b656f2b01f9e92ed022cfba5c
MINOR: trace: prepend the function name for developer level traces

Working on adding traces to mux-h2 revealed that the function names are
manually copied a lot in developer traces. The reason is that they are
not preprocessor macros and as such cannot be concatenated. Let's
slightly adjust the trace() function call to take a function name just
after the file:line argument. This argument is only added for the
TRACE_DEVEL and 3 new TRACE_ENTER, TRACE_LEAVE, and TRACE_POINT macros
and left NULL for others. This way the function name is only reported
for traces aimed at the developers. The pretty-print callback was also
extended to benefit from this. This will also significantly shrink the
data segment as the "entering" and "leaving" strings will now be merged.

One technical point worth mentioning is that the function name is *not*
passed as an ist to the inline function because it's not considered as
a builtin constant by the compiler, and would lead to strlen() being
run on it from all call places before calling the inline function. Thus
instead we pass the const char * (that the compiler knows where to find)
and it's the __trace() function that converts it to an ist for internal
consumption and for the pretty-print callback. Doing this avoids losing
5-10% peak performance.
doc/management.txt
include/proto/trace.h
include/types/trace.h
src/trace.c