/* Update the astract_types name table in lttng-types.c along with this enum */
enum lttng_abstract_types {
atype_integer,
- atype_enum, /* legacy */
- atype_array, /* legacy */
- atype_sequence, /* legacy */
atype_string,
atype_float,
atype_dynamic,
- atype_struct, /* legacy */
atype_enum_nestable,
atype_array_nestable,
atype_sequence_nestable,
char padding[LTTNG_UST_FLOAT_TYPE_PADDING];
};
-/* legacy */
-#define LTTNG_UST_BASIC_TYPE_PADDING 128
-union _lttng_basic_type {
- struct lttng_integer_type integer; /* legacy */
- struct {
- const struct lttng_enum_desc *desc; /* Enumeration mapping */
- struct lttng_integer_type container_type;
- } enumeration; /* legacy */
- struct {
- enum lttng_string_encodings encoding;
- } string; /* legacy */
- struct lttng_float_type _float; /* legacy */
- char padding[LTTNG_UST_BASIC_TYPE_PADDING];
-};
-
-/* legacy */
-struct lttng_basic_type {
- enum lttng_abstract_types atype;
- union {
- union _lttng_basic_type basic;
- } u;
-};
-
#define LTTNG_UST_TYPE_PADDING 128
struct lttng_type {
enum lttng_abstract_types atype;
unsigned int alignment;
} struct_nestable;
- union {
- /* legacy provider ABI 1.0 */
- union _lttng_basic_type basic; /* legacy */
- struct {
- struct lttng_basic_type elem_type;
- unsigned int length; /* Num. elems. */
- } array; /* legacy */
- struct {
- struct lttng_basic_type length_type;
- struct lttng_basic_type elem_type;
- } sequence; /* legacy */
- struct {
- unsigned int nr_fields;
- struct lttng_event_field *fields; /* Array of fields. */
- } _struct; /* legacy */
- } legacy;
char padding[LTTNG_UST_TYPE_PADDING];
} u;
};
* removed.
*/
-struct lttng_ust_event_private;
+struct lttng_ust_event_common_private;
-struct lttng_event {
- struct lttng_ust_event_private *priv; /* Private event interface */
+struct lttng_event_common {
+ uint32_t struct_size; /* Size of this structure. */
+ struct lttng_ust_event_common_private *priv; /* Private event interface */
- unsigned int id;
int enabled;
int has_enablers_without_bytecode;
/* list of struct lttng_bytecode_runtime, sorted by seqnum */
struct cds_list_head filter_bytecode_runtime_head;
+};
+
+struct lttng_ust_event_private;
+
+struct lttng_event {
+ uint32_t struct_size; /* Size of this structure. */
+ struct lttng_event_common *parent;
+ struct lttng_ust_event_private *priv; /* Private event interface */
+
+ unsigned int id;
struct lttng_channel *chan;
struct lttng_ctx *ctx;
};
struct cds_hlist_head table[LTTNG_UST_ENUM_HT_SIZE];
};
+struct lttng_ust_session_private;
+
/*
* IMPORTANT: this structure is part of the ABI between the probe and
* UST. Fields need to be only added at the end, never reordered, never
* removed.
*/
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 ? */
- int been_active; /* Been active ? */
- int objd; /* Object associated */
- struct cds_list_head chan_head; /* Channel list head */
- struct cds_list_head events_head; /* list of events */
- struct cds_list_head node; /* Session list */
-
- /* New UST 2.1 */
- /* List of enablers */
- struct cds_list_head enablers_head;
- struct lttng_ust_event_ht events_ht; /* ht of events */
- void *owner; /* object owner */
- int tstate:1; /* Transient enable state */
-
- /* New UST 2.4 */
- int statedump_pending:1;
-
- /* New UST 2.8 */
- struct lttng_ust_enum_ht enums_ht; /* ht of enumerations */
- struct cds_list_head enums_head;
- struct lttng_ctx *ctx; /* contexts for filters. */
};
int lttng_probe_register(struct lttng_probe_desc *desc);