This patch series add stopwatch timers and global counters to the trace2 logging facility. It also does a little housecleaning. This is basically a rewrite of the series that I submitted back in December 2021: [1] and [2]. Hopefully, it addresses all of the concerns raised back then and does it in a way that avoids the issues that stalled that effort. First we start with a few housecleaning commits: * The first 2 commits are unrelated to this effort, but were required to get the existing code to compile on my Mac with Clang 11.0.0 with DEVELOPER=1. Those can be dropped if there is a better way to do this. * The 3rd commit is in response a concern about using int rather than size_t for nr and alloc in an ALLOC_GROW() in existing trace2 code. * The 4th commit cleans up my use of the term "TLS" in my thread code. * The 5th and 6th commits (hopefully) clear up the misunderstandings around the thread_name variable in my thread context structures. My earlier attempts to clean and clarify this led to most of the controversies in the earlier patch series. Hopefully, these 2 commits will improve the clarify matters. * The 7th commit cleans up a mostly obsolete section in the trace2 API documentation. Finally, the last 2 commits add the stopwatch timers and the global counters. [1] https://lore.kernel.org/git/pull.1099.git.1640012469.gitgitgadget@xxxxxxxxx/ [2] https://lore.kernel.org/git/pull.1099.v2.git.1640720202.gitgitgadget@xxxxxxxxx/ Jeff Hostetler (9): builtin/merge-file: fix compiler warning on MacOS with clang 11.0.0 builtin/unpack-objects.c: fix compiler warning on MacOS with clang 11.0.0 trace2: use size_t alloc,nr_open_regions in tr2tls_thread_ctx tr2tls: clarify TLS terminology trace2: rename trace2 thread_name argument as name_hint trace2: convert ctx.thread_name to flex array api-trace2.txt: elminate section describing the public trace2 API trace2: add stopwatch timers trace2: add global counter mechanism Documentation/technical/api-trace2.txt | 190 +++++++++++++++++-------- Makefile | 2 + builtin/merge-file.c | 4 +- builtin/unpack-objects.c | 2 +- t/helper/test-trace2.c | 187 ++++++++++++++++++++++++ t/t0211-trace2-perf.sh | 95 +++++++++++++ t/t0211/scrub_perf.perl | 6 + trace2.c | 121 +++++++++++++++- trace2.h | 101 +++++++++++-- trace2/tr2_ctr.c | 101 +++++++++++++ trace2/tr2_ctr.h | 104 ++++++++++++++ trace2/tr2_tgt.h | 14 ++ trace2/tr2_tgt_event.c | 47 +++++- trace2/tr2_tgt_normal.c | 39 +++++ trace2/tr2_tgt_perf.c | 49 ++++++- trace2/tr2_tls.c | 43 +++--- trace2/tr2_tls.h | 52 ++++--- trace2/tr2_tmr.c | 182 +++++++++++++++++++++++ trace2/tr2_tmr.h | 140 ++++++++++++++++++ 19 files changed, 1366 insertions(+), 113 deletions(-) create mode 100644 trace2/tr2_ctr.c create mode 100644 trace2/tr2_ctr.h create mode 100644 trace2/tr2_tmr.c create mode 100644 trace2/tr2_tmr.h base-commit: 3dcec76d9df911ed8321007b1d197c1a206dc164 Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1373%2Fjeffhostetler%2Ftrace2-stopwatch-v4-v1 Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1373/jeffhostetler/trace2-stopwatch-v4-v1 Pull-Request: https://github.com/gitgitgadget/git/pull/1373 -- gitgitgadget