struct lttng_ctx_field {
struct lttng_event_field event_field;
size_t (*get_size)(size_t offset);
+ size_t (*get_size_arg)(size_t offset, struct lttng_ctx_field *field,
+ struct lib_ring_buffer_ctx *ctx,
+ struct lttng_channel *chan);
void (*record)(struct lttng_ctx_field *field,
struct lib_ring_buffer_ctx *ctx,
struct lttng_channel *chan);
struct lttng_perf_counter_field *perf_counter;
} u;
void (*destroy)(struct lttng_ctx_field *field);
+ /*
+ * Private data to keep state between get_size and record.
+ * User must perform its own synchronization to protect against
+ * concurrent and reentrant contexts.
+ */
+ void *priv;
};
struct lttng_ctx {
return -ENOSYS;
}
#endif
+
+int lttng_add_callstack_to_ctx(struct lttng_ctx **ctx, int type);
+
#if defined(CONFIG_PERF_EVENTS) && (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,33))
int lttng_add_perf_counter_to_ctx(uint32_t type,
uint64_t config,