Browse Source

trace2: fix tracing when NO_PTHREADS is defined

Teach trace2 TLS code to not rely on pthread_getspecific() when NO_PTHREADS
is defined.  Instead, always assume the context data of the main thread.

Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Jeff Hostetler 6 years ago committed by Junio C Hamano
parent
commit
5fdae9d3be
  1. 12
      trace2/tr2_tls.c

12
trace2/tr2_tls.c

@ -47,7 +47,12 @@ struct tr2tls_thread_ctx *tr2tls_create_self(const char *thread_name) @@ -47,7 +47,12 @@ struct tr2tls_thread_ctx *tr2tls_create_self(const char *thread_name)

struct tr2tls_thread_ctx *tr2tls_get_self(void)
{
struct tr2tls_thread_ctx *ctx = pthread_getspecific(tr2tls_key);
struct tr2tls_thread_ctx *ctx;

if (!HAVE_THREADS)
return tr2tls_thread_main;

ctx = pthread_getspecific(tr2tls_key);

/*
* If the thread-proc did not call trace2_thread_start(), we won't
@ -62,9 +67,10 @@ struct tr2tls_thread_ctx *tr2tls_get_self(void) @@ -62,9 +67,10 @@ struct tr2tls_thread_ctx *tr2tls_get_self(void)

int tr2tls_is_main_thread(void)
{
struct tr2tls_thread_ctx *ctx = pthread_getspecific(tr2tls_key);
if (!HAVE_THREADS)
return 1;

return ctx == tr2tls_thread_main;
return pthread_getspecific(tr2tls_key) == tr2tls_thread_main;
}

void tr2tls_unset_self(void)

Loading…
Cancel
Save