X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=include%2Flttng%2Fust-ctl.h;h=7b750fd4438812f530357e3355d86a672215af5c;hb=3e7622607bd37d4f19b8ef831c27b7b556acf6d5;hp=7a5f969eecd4ebd0fe50a0715e5d5e273dbbcbaf;hpb=c785c634a51956094130218c2bffeff32756cb69;p=lttng-ust.git diff --git a/include/lttng/ust-ctl.h b/include/lttng/ust-ctl.h index 7a5f969e..7b750fd4 100644 --- a/include/lttng/ust-ctl.h +++ b/include/lttng/ust-ctl.h @@ -59,6 +59,17 @@ struct ustctl_consumer_channel_attr { * API used by sessiond. */ +struct lttng_ust_context_attr { + enum lttng_ust_context_type ctx; + union { + struct lttng_ust_perf_counter_ctx perf_counter; + struct { + char *provider_name; + char *ctx_name; + } app_ctx; + } u; +}; + /* * Error values: all the following functions return: * >= 0: Success (LTTNG_UST_OK) @@ -69,7 +80,7 @@ int ustctl_create_session(int sock); int ustctl_create_event(int sock, struct lttng_ust_event *ev, struct lttng_ust_object_data *channel_data, struct lttng_ust_object_data **event_data); -int ustctl_add_context(int sock, struct lttng_ust_context *ctx, +int ustctl_add_context(int sock, struct lttng_ust_context_attr *ctx, struct lttng_ust_object_data *obj_data, struct lttng_ust_object_data **context_data); int ustctl_set_filter(int sock, struct lttng_ust_filter_bytecode *bytecode, @@ -241,10 +252,17 @@ int ustctl_get_stream_id(struct ustctl_consumer_stream *stream, uint64_t *stream_id); int ustctl_get_current_timestamp(struct ustctl_consumer_stream *stream, uint64_t *ts); +int ustctl_get_sequence_number(struct ustctl_consumer_stream *stream, + uint64_t *seq); +int ustctl_get_instance_id(struct ustctl_consumer_stream *stream, + uint64_t *id); /* returns whether UST has perf counters support. */ int ustctl_has_perf_counters(void); +/* Regenerate the statedump. */ +int ustctl_regenerate_statedump(int sock, int handle); + /* event registry management */ enum ustctl_socket_type { @@ -273,6 +291,8 @@ enum ustctl_abstract_types { ustctl_atype_sequence, ustctl_atype_string, ustctl_atype_float, + ustctl_atype_variant, + ustctl_atype_struct, NR_USTCTL_ABSTRACT_TYPES, }; @@ -289,7 +309,7 @@ struct ustctl_integer_type { uint32_t signedness; uint32_t reverse_byte_order; uint32_t base; /* 2, 8, 10, 16, for pretty print */ - enum ustctl_string_encodings encoding; + int32_t encoding; /* enum ustctl_string_encodings */ uint16_t alignment; /* in bits */ char padding[USTCTL_UST_INTEGER_TYPE_PADDING]; } LTTNG_PACKED; @@ -303,12 +323,28 @@ struct ustctl_float_type { char padding[USTCTL_UST_FLOAT_TYPE_PADDING]; } LTTNG_PACKED; +#define USTCTL_UST_ENUM_VALUE_PADDING 15 +struct ustctl_enum_value { + uint64_t value; + uint8_t signedness; + char padding[USTCTL_UST_ENUM_VALUE_PADDING]; +} LTTNG_PACKED; + +enum ustctl_ust_enum_entry_options { + USTCTL_UST_ENUM_ENTRY_OPTION_IS_AUTO = 1U << 0, +}; + #define USTCTL_UST_ENUM_ENTRY_PADDING 32 struct ustctl_enum_entry { - uint64_t start, end; /* start and end are inclusive */ + struct ustctl_enum_value start, end; /* start and end are inclusive */ char string[LTTNG_UST_SYM_NAME_LEN]; - char padding[USTCTL_UST_ENUM_ENTRY_PADDING]; -}; + union { + struct { + uint32_t options; + } LTTNG_PACKED extra; + char padding[USTCTL_UST_ENUM_ENTRY_PADDING]; + } u; +} LTTNG_PACKED; #define USTCTL_UST_BASIC_TYPE_PADDING 296 union _ustctl_basic_type { @@ -319,7 +355,7 @@ union _ustctl_basic_type { uint64_t id; /* enum ID in sessiond. */ } enumeration; struct { - enum ustctl_string_encodings encoding; + int32_t encoding; /* enum ustctl_string_encodings */ } string; struct ustctl_float_type _float; char padding[USTCTL_UST_BASIC_TYPE_PADDING]; @@ -345,6 +381,15 @@ struct ustctl_type { struct ustctl_basic_type length_type; struct ustctl_basic_type elem_type; } sequence; + struct { + uint32_t nr_choices; + char tag_name[LTTNG_UST_SYM_NAME_LEN]; + /* Followed by nr_choices struct ustctl_field. */ + } variant; + struct { + uint32_t nr_fields; + /* Followed by nr_fields struct ustctl_field. */ + } _struct; char padding[USTCTL_UST_TYPE_PADDING]; } u; } LTTNG_PACKED;