linux/tools/lib/perf
Namhyung Kim f4e3381648 perf tools: Minimal DEFERRED_CALLCHAIN support
Add a new event type for deferred callchains and a new callback for the
struct perf_tool.  For now it doesn't actually handle the deferred
callchains but it just marks the sample if it has the PERF_CONTEXT_
USER_DEFFERED in the callchain array.

At least, perf report can dump the raw data with this change.  Actually
this requires the next commit to enable attr.defer_callchain, but if you
already have a data file, it'll show the following result.

  $ perf report -D
  ...
  0x2158@perf.data [0x40]: event: 22
  .
  . ... raw event: size 64 bytes
  .  0000:  16 00 00 00 02 00 40 00 06 00 00 00 0b 00 00 00  ......@.........
  .  0010:  03 00 00 00 00 00 00 00 a7 7f 33 fe 18 7f 00 00  ..........3.....
  .  0020:  0f 0e 33 fe 18 7f 00 00 48 14 33 fe 18 7f 00 00  ..3.....H.3.....
  .  0030:  08 09 00 00 08 09 00 00 e6 7a e7 35 1c 00 00 00  .........z.5....

  121163447014 0x2158 [0x40]: PERF_RECORD_CALLCHAIN_DEFERRED(IP, 0x2): 2312/2312: 0xb00000006
  ... FP chain: nr:3
  .....  0: 00007f18fe337fa7
  .....  1: 00007f18fe330e0f
  .....  2: 00007f18fe331448
  : unhandled!

Reviewed-by: Ian Rogers <irogers@google.com>
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
2025-12-02 16:13:32 -08:00
..
Documentation perf record: Add 8-byte aligned event type PERF_RECORD_COMPRESSED2 2025-05-16 17:31:40 -03:00
include perf tools: Minimal DEFERRED_CALLCHAIN support 2025-12-02 16:13:32 -08:00
tests libperf cpumap: Replace usage of perf_cpu_map__new(NULL) with perf_cpu_map__new_online_cpus() 2023-12-12 14:55:13 -03:00
.gitignore libperf: Add gitignore 2024-08-01 12:11:33 -03:00
Build libperf: Change tests to single static and shared binaries 2021-07-07 11:41:58 -03:00
core.c
cpumap.c libperf cpumap: Reduce allocations and sorting in intersect 2025-11-17 18:43:08 -08:00
evlist.c perf parse-events: Support user CPUs mixed with threads/processes 2025-07-24 13:41:35 -07:00
evsel.c libperf evsel: Factor perf_evsel__exit out of perf_evsel__delete 2025-07-24 13:41:35 -07:00
internal.h
lib.c libperf: Add preadn() 2022-05-23 10:11:12 -03:00
libperf.map libperf cpumap: Remove perf_cpu_map__read() 2024-12-09 17:52:41 -03:00
libperf.pc.template
Makefile perf tools: Fix in-source libperf build 2025-04-29 12:32:31 -07:00
mmap.c libperf mmap: In user mmap rdpmc avoid undefined behavior 2025-10-02 15:02:47 -03:00
threadmap.c libperf threadmap: Add perf_thread_map__idx() 2025-05-21 15:07:13 -03:00
xyarray.c