trace2: convert ctx.thread_name from strbuf to pointer

Convert the `tr2tls_thread_ctx.thread_name` field from a `strbuf`
to a "const char*" pointer.

The `thread_name` field is a constant string that is constructed when
the context is created.  Using a (non-const) `strbuf` structure for it
caused some confusion in the past because it implied that someone
could rename a thread after it was created.  That usage was not
intended.  Change it to a const pointer to make the intent more clear.

Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Jeff Hostetler 2022-10-24 13:41:05 +00:00 committed by Junio C Hamano
parent 3124793604
commit 24a4c45da9
4 changed files with 12 additions and 10 deletions

View File

@ -90,7 +90,7 @@ static void event_fmt_prepare(const char *event_name, const char *file,
jw_object_string(jw, "event", event_name); jw_object_string(jw, "event", event_name);
jw_object_string(jw, "sid", tr2_sid_get()); jw_object_string(jw, "sid", tr2_sid_get());
jw_object_string(jw, "thread", ctx->thread_name.buf); jw_object_string(jw, "thread", ctx->thread_name);
/* /*
* In brief mode, only emit <time> on these 2 event types. * In brief mode, only emit <time> on these 2 event types.

View File

@ -108,7 +108,7 @@ static void perf_fmt_prepare(const char *event_name,
strbuf_addf(buf, "d%d | ", tr2_sid_depth()); strbuf_addf(buf, "d%d | ", tr2_sid_depth());
strbuf_addf(buf, "%-*s | %-*s | ", TR2_MAX_THREAD_NAME, strbuf_addf(buf, "%-*s | %-*s | ", TR2_MAX_THREAD_NAME,
ctx->thread_name.buf, TR2FMT_PERF_MAX_EVENT_NAME, ctx->thread_name, TR2FMT_PERF_MAX_EVENT_NAME,
event_name); event_name);
len = buf->len + TR2FMT_PERF_REPO_WIDTH; len = buf->len + TR2FMT_PERF_REPO_WIDTH;

View File

@ -35,6 +35,7 @@ struct tr2tls_thread_ctx *tr2tls_create_self(const char *thread_base_name,
uint64_t us_thread_start) uint64_t us_thread_start)
{ {
struct tr2tls_thread_ctx *ctx = xcalloc(1, sizeof(*ctx)); struct tr2tls_thread_ctx *ctx = xcalloc(1, sizeof(*ctx));
struct strbuf buf = STRBUF_INIT;
/* /*
* Implicitly "tr2tls_push_self()" to capture the thread's start * Implicitly "tr2tls_push_self()" to capture the thread's start
@ -47,12 +48,13 @@ struct tr2tls_thread_ctx *tr2tls_create_self(const char *thread_base_name,
ctx->thread_id = tr2tls_locked_increment(&tr2_next_thread_id); ctx->thread_id = tr2tls_locked_increment(&tr2_next_thread_id);
strbuf_init(&ctx->thread_name, 0); strbuf_init(&buf, 0);
if (ctx->thread_id) if (ctx->thread_id)
strbuf_addf(&ctx->thread_name, "th%02d:", ctx->thread_id); strbuf_addf(&buf, "th%02d:", ctx->thread_id);
strbuf_addstr(&ctx->thread_name, thread_base_name); strbuf_addstr(&buf, thread_base_name);
if (ctx->thread_name.len > TR2_MAX_THREAD_NAME) if (buf.len > TR2_MAX_THREAD_NAME)
strbuf_setlen(&ctx->thread_name, TR2_MAX_THREAD_NAME); strbuf_setlen(&buf, TR2_MAX_THREAD_NAME);
ctx->thread_name = strbuf_detach(&buf, NULL);
pthread_setspecific(tr2tls_key, ctx); pthread_setspecific(tr2tls_key, ctx);
@ -95,7 +97,7 @@ void tr2tls_unset_self(void)
pthread_setspecific(tr2tls_key, NULL); pthread_setspecific(tr2tls_key, NULL);
strbuf_release(&ctx->thread_name); free((char *)ctx->thread_name);
free(ctx->array_us_start); free(ctx->array_us_start);
free(ctx); free(ctx);
} }
@ -113,7 +115,7 @@ void tr2tls_pop_self(void)
struct tr2tls_thread_ctx *ctx = tr2tls_get_self(); struct tr2tls_thread_ctx *ctx = tr2tls_get_self();
if (!ctx->nr_open_regions) if (!ctx->nr_open_regions)
BUG("no open regions in thread '%s'", ctx->thread_name.buf); BUG("no open regions in thread '%s'", ctx->thread_name);
ctx->nr_open_regions--; ctx->nr_open_regions--;
} }

View File

@ -15,7 +15,7 @@
#define TR2_MAX_THREAD_NAME (24) #define TR2_MAX_THREAD_NAME (24)
struct tr2tls_thread_ctx { struct tr2tls_thread_ctx {
struct strbuf thread_name; const char *thread_name;
uint64_t *array_us_start; uint64_t *array_us_start;
size_t alloc; size_t alloc;
size_t nr_open_regions; /* plays role of "nr" in ALLOC_GROW */ size_t nr_open_regions; /* plays role of "nr" in ALLOC_GROW */