MINOR: tools: add a function to write a thread execution context.

The new function chunk_append_thread_ctx() appends to a buffer the given
execution context based on its type and pointer. The goal is to easily
use it in profiling output and thread dumps. For now it only handles
TH_EX_CTX_NONE (which prints nothing) and TH_EX_CTX_OTHER (which indicates
"other ctx" followed by the pointer). It will be extended by new types as
they arrive.
This commit is contained in:
Willy Tarreau 2026-03-12 07:48:14 +01:00
parent 13c89bf20d
commit 5d3246205b
2 changed files with 24 additions and 0 deletions

View File

@ -1540,4 +1540,6 @@ void ha_freearray(char ***array);
void ha_memset_s(void *s, int c, size_t n);
void chunk_append_thread_ctx(struct buffer *output, const struct thread_exec_ctx *ctx, const char *pfx, const char *sfx);
#endif /* _HAPROXY_TOOLS_H */

View File

@ -7502,6 +7502,28 @@ void ha_memset_s(void *s, int c, size_t n)
__asm__ __volatile__("" : : "r"(s) : "memory");
}
/* Optionally appends the thread execution context as a string to the output,
* prefixed with <pfx> and suffixed with <sfx> if not NULL and only when the
* context type is not TH_EX_CTX_NONE. Otherwise it does nothing and leaves the
* chunk untouched.
*/
void chunk_append_thread_ctx(struct buffer *output, const struct thread_exec_ctx *ctx, const char *pfx, const char *sfx)
{
if (!ctx->type)
return;
chunk_appendf(output,"%s", pfx ? pfx : "");
switch (ctx->type) {
default:
chunk_appendf(output,"other ctx %p", ctx->pointer);
break;
}
chunk_appendf(output,"%s", sfx ? sfx : "");
}
/*
* Local variables:
* c-indent-level: 8