mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-27 14:14:24 +08:00
bd82631d7c
Currently, sythetic events only support static string fields such as: # echo 'test_latency u64 lat; char somename[32]' > /sys/kernel/debug/tracing/synthetic_events Which is fine, but wastes a lot of space in the event. It also prevents the most commonly-defined strings in the existing trace events e.g. those defined using __string(), from being passed to synthetic events via the trace() action. With this change, synthetic events with dynamic fields can be defined: # echo 'test_latency u64 lat; char somename[]' > /sys/kernel/debug/tracing/synthetic_events And the trace() action can be used to generate events using either dynamic or static strings: # echo 'hist:keys=name:lat=common_timestamp.usecs-$ts0:onmatch(sys.event).test_latency($lat,name)' > /sys/kernel/debug/tracing/events The synthetic event dynamic strings are implemented in the same way as the existing __data_loc strings and appear as such in the format file. [ <rostedt@goodmis.org>: added __set_synth_event_print_fmt() changes: I added the following to make it work with trace-cmd. Dynamic strings must have __get_str() for events in the print_fmt otherwise it can't be parsed correctly. ] Link: https://lore.kernel.org/r/cover.1601588066.git.zanussi@kernel.org Link: https://lkml.kernel.org/r/3ed35b6d0e390f5b94cb4a9ba1cc18f5982ab277.1601848695.git.zanussi@kernel.org Tested-by: Axel Rasmussen <axelrasmussen@google.com> Signed-off-by: Tom Zanussi <zanussi@kernel.org> Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org> |
||
---|---|---|
.. | ||
coresight | ||
postprocess | ||
boottime-trace.rst | ||
events-kmem.rst | ||
events-msr.rst | ||
events-nmi.rst | ||
events-power.rst | ||
events.rst | ||
ftrace-design.rst | ||
ftrace-uses.rst | ||
ftrace.rst | ||
function-graph-fold.vim | ||
histogram-design.rst | ||
histogram.rst | ||
hwlat_detector.rst | ||
index.rst | ||
intel_th.rst | ||
kprobes.rst | ||
kprobetrace.rst | ||
mmiotrace.rst | ||
ring-buffer-design.rst | ||
stm.rst | ||
sys-t.rst | ||
tracepoint-analysis.rst | ||
tracepoints.rst | ||
uprobetracer.rst |