X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=liblttng-ust-libc-wrapper%2Flttng-ust-pthread.c;h=6554a47afe7057f3b8c2c21147574c2f77d5ad09;hb=553bbf7f38652084ed7966c7817b8ccb372b14e1;hp=fd3af1105a961422e276671a483b18c81a80389a;hpb=35176231371af091768378a09d28c556bfe7e663;p=lttng-ust.git diff --git a/liblttng-ust-libc-wrapper/lttng-ust-pthread.c b/liblttng-ust-libc-wrapper/lttng-ust-pthread.c index fd3af110..6554a47a 100644 --- a/liblttng-ust-libc-wrapper/lttng-ust-pthread.c +++ b/liblttng-ust-libc-wrapper/lttng-ust-pthread.c @@ -17,7 +17,14 @@ */ #define _GNU_SOURCE +/* + * Do _not_ define _LGPL_SOURCE because we don't want to create a + * circular dependency loop between this malloc wrapper, liburcu and + * libc. + */ #include +#include +#include #include #define TRACEPOINT_DEFINE @@ -25,7 +32,7 @@ #define TP_IP_PARAM ip #include "ust_pthread.h" -static __thread int thread_in_trace; +static DEFINE_URCU_TLS_IE(int, thread_in_trace); int pthread_mutex_lock(pthread_mutex_t *mutex) { @@ -48,10 +55,10 @@ int pthread_mutex_lock(pthread_mutex_t *mutex) thread_in_trace = 1; tracepoint(lttng_ust_pthread, pthread_mutex_lock_req, mutex, - __builtin_return_address(0)); + LTTNG_UST_CALLER_IP()); retval = mutex_lock(mutex); tracepoint(lttng_ust_pthread, pthread_mutex_lock_acq, mutex, - retval, __builtin_return_address(0)); + retval, LTTNG_UST_CALLER_IP()); thread_in_trace = 0; return retval; } @@ -78,7 +85,7 @@ int pthread_mutex_trylock(pthread_mutex_t *mutex) thread_in_trace = 1; retval = mutex_trylock(mutex); tracepoint(lttng_ust_pthread, pthread_mutex_trylock, mutex, - retval, __builtin_return_address(0)); + retval, LTTNG_UST_CALLER_IP()); thread_in_trace = 0; return retval; } @@ -105,7 +112,7 @@ int pthread_mutex_unlock(pthread_mutex_t *mutex) thread_in_trace = 1; retval = mutex_unlock(mutex); tracepoint(lttng_ust_pthread, pthread_mutex_unlock, mutex, - retval, __builtin_return_address(0)); + retval, LTTNG_UST_CALLER_IP()); thread_in_trace = 0; return retval; }