X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=src%2Flib%2Flttng-ust%2Flttng-context-procname.c;h=16f34c4652e865bc14324f80e2cb1e119f776c1b;hb=c246521ddcba1d1d28cfa0482aa500b9122e7264;hp=093b50c7c1444b60d791fee756b883b0c195d365;hpb=0b4b88119eced28c0cd4fcec773f76525103ac3f;p=lttng-ust.git diff --git a/src/lib/lttng-ust/lttng-context-procname.c b/src/lib/lttng-ust/lttng-context-procname.c index 093b50c7..16f34c46 100644 --- a/src/lib/lttng-ust/lttng-context-procname.c +++ b/src/lib/lttng-ust/lttng-context-procname.c @@ -30,7 +30,7 @@ * be set for a thread before the first event is logged within this * thread. */ -typedef char procname_array[PROCNAME_NESTING_MAX][17]; +typedef char procname_array[PROCNAME_NESTING_MAX][LTTNG_UST_CONTEXT_PROCNAME_LEN]; static DEFINE_URCU_TLS(procname_array, cached_procname); @@ -47,8 +47,8 @@ const char *wrapper_getprocname(void) CMM_STORE_SHARED(URCU_TLS(procname_nesting), nesting + 1); /* Increment nesting before updating cache. */ cmm_barrier(); - lttng_pthread_getname_np(URCU_TLS(cached_procname)[nesting], LTTNG_UST_ABI_PROCNAME_LEN); - URCU_TLS(cached_procname)[nesting][LTTNG_UST_ABI_PROCNAME_LEN - 1] = '\0'; + lttng_pthread_getname_np(URCU_TLS(cached_procname)[nesting], LTTNG_UST_CONTEXT_PROCNAME_LEN); + URCU_TLS(cached_procname)[nesting][LTTNG_UST_CONTEXT_PROCNAME_LEN - 1] = '\0'; /* Decrement nesting after updating cache. */ cmm_barrier(); CMM_STORE_SHARED(URCU_TLS(procname_nesting), nesting); @@ -67,24 +67,27 @@ void lttng_ust_context_procname_reset(void) static size_t procname_get_size(void *priv __attribute__((unused)), + struct lttng_ust_probe_ctx *probe_ctx __attribute__((unused)), size_t offset __attribute__((unused))) { - return LTTNG_UST_ABI_PROCNAME_LEN; + return LTTNG_UST_CONTEXT_PROCNAME_LEN; } static void procname_record(void *priv __attribute__((unused)), - struct lttng_ust_ring_buffer_ctx *ctx, - struct lttng_ust_channel_buffer *chan) + struct lttng_ust_probe_ctx *probe_ctx __attribute__((unused)), + struct lttng_ust_ring_buffer_ctx *ctx, + struct lttng_ust_channel_buffer *chan) { const char *procname; procname = wrapper_getprocname(); - chan->ops->event_write(ctx, procname, LTTNG_UST_ABI_PROCNAME_LEN, 1); + chan->ops->event_write(ctx, procname, LTTNG_UST_CONTEXT_PROCNAME_LEN, 1); } static void procname_get_value(void *priv __attribute__((unused)), + struct lttng_ust_probe_ctx *probe_ctx __attribute__((unused)), struct lttng_ust_ctx_value *value) { value->u.str = wrapper_getprocname(); @@ -92,7 +95,7 @@ void procname_get_value(void *priv __attribute__((unused)), static const struct lttng_ust_ctx_field *ctx_field = lttng_ust_static_ctx_field( lttng_ust_static_event_field("procname", - lttng_ust_static_type_array_text(LTTNG_UST_ABI_PROCNAME_LEN), + lttng_ust_static_type_array_text(LTTNG_UST_CONTEXT_PROCNAME_LEN), false, false), procname_get_size, procname_record, @@ -117,9 +120,11 @@ error_find_context: } /* - * Force a read (imply TLS fixup for dlopen) of TLS variables. + * Force a read (imply TLS allocation for dlopen) of TLS variables. */ -void lttng_fixup_procname_tls(void) +void lttng_ust_procname_init_thread(int flags) { asm volatile ("" : : "m" (URCU_TLS(cached_procname)[0])); + if (flags & LTTNG_UST_INIT_THREAD_CONTEXT_CACHE) + (void)wrapper_getprocname(); }