#include <stddef.h>
#include <lttng/ust-events.h>
#include <lttng/ust-tracer.h>
-#include <lttng/ringbuffer-context.h>
+#include <lttng/ust-ringbuffer-context.h>
#include <urcu/tls-compat.h>
#include <assert.h>
#include "common/compat/pthread.h"
* 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);
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);
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();
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,
}
/*
- * 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]));
+ __asm__ __volatile__ ("" : : "m" (URCU_TLS(cached_procname)[0]));
+ if (flags & LTTNG_UST_INIT_THREAD_CONTEXT_CACHE)
+ (void)wrapper_getprocname();
}