X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=include%2Flttng%2Fust-events.h;h=059589f34853eedabf1ae0be447da55d733011d6;hb=dc177d114989d85bc9d0c9f561632b9ea3a19908;hp=624af8bb1bc18b37578d9741891ef5bd73a4effd;hpb=2a9d9339386426860c1df91d0b8010c87809c84b;p=lttng-ust.git diff --git a/include/lttng/ust-events.h b/include/lttng/ust-events.h index 624af8bb..059589f3 100644 --- a/include/lttng/ust-events.h +++ b/include/lttng/ust-events.h @@ -246,59 +246,6 @@ struct lttng_ust_event_field { /* End of base ABI. Fields below should be used after checking struct_size. */ }; -enum lttng_ust_dynamic_type { - LTTNG_UST_DYNAMIC_TYPE_NONE, - LTTNG_UST_DYNAMIC_TYPE_S8, - LTTNG_UST_DYNAMIC_TYPE_S16, - LTTNG_UST_DYNAMIC_TYPE_S32, - LTTNG_UST_DYNAMIC_TYPE_S64, - LTTNG_UST_DYNAMIC_TYPE_U8, - LTTNG_UST_DYNAMIC_TYPE_U16, - LTTNG_UST_DYNAMIC_TYPE_U32, - LTTNG_UST_DYNAMIC_TYPE_U64, - LTTNG_UST_DYNAMIC_TYPE_FLOAT, - LTTNG_UST_DYNAMIC_TYPE_DOUBLE, - LTTNG_UST_DYNAMIC_TYPE_STRING, - _NR_LTTNG_UST_DYNAMIC_TYPES, -}; - -struct lttng_ctx_value { - enum lttng_ust_dynamic_type sel; - union { - int64_t s64; - uint64_t u64; - const char *str; - double d; - } u; -}; - -struct lttng_perf_counter_field; - -#define LTTNG_UST_CTX_FIELD_PADDING 40 -struct lttng_ctx_field { - struct lttng_ust_event_field event_field; - size_t (*get_size)(struct lttng_ctx_field *field, size_t offset); - void (*record)(struct lttng_ctx_field *field, - struct lttng_ust_lib_ring_buffer_ctx *ctx, - struct lttng_channel *chan); - void (*get_value)(struct lttng_ctx_field *field, - struct lttng_ctx_value *value); - union { - struct lttng_perf_counter_field *perf_counter; - char padding[LTTNG_UST_CTX_FIELD_PADDING]; - } u; - void (*destroy)(struct lttng_ctx_field *field); - char *field_name; /* Has ownership, dynamically allocated. */ -}; - -#define LTTNG_UST_CTX_PADDING 20 -struct lttng_ctx { - struct lttng_ctx_field *fields; - unsigned int nr_fields; - unsigned int allocated_fields; - unsigned int largest_align; - char padding[LTTNG_UST_CTX_PADDING]; -}; /* * IMPORTANT: this structure is part of the ABI between the probe and @@ -311,6 +258,7 @@ struct lttng_ctx { */ struct lttng_ust_event_desc { uint32_t struct_size; /* Size of this structure. */ + const char *name; void (*probe_callback)(void); const struct lttng_event_ctx *ctx; /* context */ @@ -396,6 +344,7 @@ struct lttng_ust_bytecode_runtime { * removed. */ +struct lttng_ust_ctx; struct lttng_ust_event_common_private; enum lttng_ust_event_type { @@ -420,6 +369,7 @@ enum lttng_ust_event_type { */ struct lttng_ust_event_common { uint32_t struct_size; /* Size of this structure. */ + struct lttng_ust_event_common_private *priv; /* Private event interface */ enum lttng_ust_event_type type; @@ -451,12 +401,13 @@ struct lttng_ust_event_recorder_private; */ struct lttng_ust_event_recorder { uint32_t struct_size; /* Size of this structure. */ + struct lttng_ust_event_common *parent; /* Inheritance by aggregation. */ struct lttng_ust_event_recorder_private *priv; /* Private event record interface */ unsigned int id; struct lttng_channel *chan; - struct lttng_ctx *ctx; + struct lttng_ust_ctx *ctx; /* End of base ABI. Fields below should be used after checking struct_size. */ }; @@ -490,7 +441,7 @@ struct lttng_ust_event_notifier { /* End of base ABI. Fields below should be used after checking struct_size. */ }; -struct channel; +struct lttng_ust_lib_ring_buffer_channel; struct lttng_ust_shm_handle; /* @@ -525,11 +476,12 @@ struct lttng_ust_channel_ops { * packet. Note that the size returned is only a hint, since it * may change due to concurrent writes. */ - size_t (*packet_avail_size)(struct channel *chan, + size_t (*packet_avail_size)(struct lttng_ust_lib_ring_buffer_channel *chan, struct lttng_ust_shm_handle *handle); - int (*is_finalized)(struct channel *chan); - int (*is_disabled)(struct channel *chan); - int (*flush_buffer)(struct channel *chan, struct lttng_ust_shm_handle *handle); + int (*is_finalized)(struct lttng_ust_lib_ring_buffer_channel *chan); + int (*is_disabled)(struct lttng_ust_lib_ring_buffer_channel *chan); + int (*flush_buffer)(struct lttng_ust_lib_ring_buffer_channel *chan, + struct lttng_ust_shm_handle *handle); void (*event_strcpy)(struct lttng_ust_lib_ring_buffer_ctx *ctx, const char *src, size_t len); @@ -548,9 +500,9 @@ struct lttng_channel { * consumer process is designed to be allowed to do is to read * and perform subbuffer flush. */ - struct channel *chan; /* Channel buffers */ + struct lttng_ust_lib_ring_buffer_channel *chan; /* Channel buffers */ int enabled; - struct lttng_ctx *ctx; + struct lttng_ust_ctx *ctx; /* Event ID management */ struct lttng_session *session; int objd; /* Object associated to channel */ @@ -579,8 +531,8 @@ struct lttng_ust_stack_ctx { uint32_t struct_size; /* Size of this structure */ struct lttng_ust_event_recorder *event_recorder; - struct lttng_ctx *chan_ctx; /* RCU dereferenced. */ - struct lttng_ctx *event_ctx; /* RCU dereferenced. */ + struct lttng_ust_ctx *chan_ctx; /* RCU dereferenced. */ + struct lttng_ust_ctx *event_ctx; /* RCU dereferenced. */ /* End of base ABI. Fields below should be used after checking struct_size. */ }; @@ -598,6 +550,7 @@ struct lttng_ust_session_private; */ struct lttng_session { uint32_t struct_size; /* Size of this structure */ + struct lttng_ust_session_private *priv; /* Private session interface */ int active; /* Is trace session active ? */ @@ -609,15 +562,12 @@ int lttng_ust_probe_register(struct lttng_ust_probe_desc *desc); void lttng_ust_probe_unregister(struct lttng_ust_probe_desc *desc); /* - * Can be used by applications that change their procname to clear the ust cached value. + * Applications that change their procname and need the new value to be + * reflected in the procname event context have to call this function to clear + * the internally cached value. This should not be called from a signal + * handler. */ -void lttng_context_procname_reset(void); - -struct lttng_transport *lttng_transport_find(const char *name); - -int lttng_session_active(void); - -void lttng_ust_dl_update(void *ip); +void lttng_ust_context_procname_reset(void); #ifdef __cplusplus }