X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=include%2Flttng%2Fust-events.h;h=c2a7dd8f603c5e8f11a7130878289b5fb231b7ce;hb=f69fe5fb0a2b0c581f0562bdd04ab2a003d239f9;hp=624af8bb1bc18b37578d9741891ef5bd73a4effd;hpb=2a9d9339386426860c1df91d0b8010c87809c84b;p=lttng-ust.git diff --git a/include/lttng/ust-events.h b/include/lttng/ust-events.h index 624af8bb..c2a7dd8f 100644 --- a/include/lttng/ust-events.h +++ b/include/lttng/ust-events.h @@ -41,7 +41,7 @@ extern "C" { #define LTTNG_UST_PROVIDER_MINOR 0 struct lttng_channel; -struct lttng_session; +struct lttng_ust_session; struct lttng_ust_lib_ring_buffer_ctx; struct lttng_ust_event_field; struct lttng_event_notifier_group; @@ -105,19 +105,17 @@ struct lttng_ust_enum_entry { /* End of base ABI. Fields below should be used after checking struct_size. */ }; -#define __type_integer(_type, _byte_order, _base, _encoding) \ - { \ - .atype = atype_integer, \ - .u = \ - { \ - .integer = \ - { \ - .size = sizeof(_type) * CHAR_BIT, \ - .alignment = lttng_alignof(_type) * CHAR_BIT, \ - .signedness = lttng_is_signed_type(_type), \ - .reverse_byte_order = _byte_order != BYTE_ORDER, \ - .base = _base, \ - .encoding = lttng_encode_##_encoding, \ +#define __type_integer(_type, _byte_order, _base, _encoding) \ + { \ + .atype = atype_integer, \ + .u = { \ + .integer = { \ + .size = sizeof(_type) * CHAR_BIT, \ + .alignment = lttng_alignof(_type) * CHAR_BIT, \ + .signedness = lttng_is_signed_type(_type), \ + .reverse_byte_order = _byte_order != BYTE_ORDER, \ + .base = _base, \ + .encoding = lttng_encode_##_encoding, \ } \ }, \ } \ @@ -142,21 +140,19 @@ struct lttng_integer_type { : (sizeof(_type) == sizeof(double) ? DBL_MANT_DIG \ : 0)) -#define __type_float(_type) \ - { \ - .atype = atype_float, \ - .u = \ - { \ - ._float = \ - { \ - .exp_dig = sizeof(_type) * CHAR_BIT \ - - _float_mant_dig(_type), \ - .mant_dig = _float_mant_dig(_type), \ - .alignment = lttng_alignof(_type) * CHAR_BIT, \ - .reverse_byte_order = BYTE_ORDER != FLOAT_WORD_ORDER, \ - } \ - } \ - } \ +#define __type_float(_type) \ + { \ + .atype = atype_float, \ + .u = { \ + ._float = { \ + .exp_dig = sizeof(_type) * CHAR_BIT \ + - _float_mant_dig(_type), \ + .mant_dig = _float_mant_dig(_type), \ + .alignment = lttng_alignof(_type) * CHAR_BIT, \ + .reverse_byte_order = BYTE_ORDER != FLOAT_WORD_ORDER, \ + } \ + } \ + } \ #define LTTNG_UST_FLOAT_TYPE_PADDING 24 struct lttng_float_type { @@ -246,59 +242,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 +254,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 +340,7 @@ struct lttng_ust_bytecode_runtime { * removed. */ +struct lttng_ust_ctx; struct lttng_ust_event_common_private; enum lttng_ust_event_type { @@ -420,6 +365,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 +397,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 +437,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 +472,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,11 +496,11 @@ 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; + struct lttng_ust_session *session; int objd; /* Object associated to channel */ struct cds_list_head node; /* Channel list in session */ const struct lttng_ust_channel_ops *ops; @@ -579,8 +527,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. */ }; @@ -596,8 +544,9 @@ struct lttng_ust_session_private; * structure. It should be queried before using additional fields added * at the end of the structure. */ -struct lttng_session { +struct lttng_ust_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 +558,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 }