X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=include%2Flttng%2Fust-ctl.h;h=932940babf393304964e039a0cc5256aa50d96c5;hb=beca55a1aa4ff272188d7c37c19eb0540f811c8b;hp=201782341443d070b2382a8db7f3745873d3e25c;hpb=735ea6a81120f85d94666245f24aac233519568e;p=lttng-ust.git diff --git a/include/lttng/ust-ctl.h b/include/lttng/ust-ctl.h index 20178234..932940ba 100644 --- a/include/lttng/ust-ctl.h +++ b/include/lttng/ust-ctl.h @@ -23,6 +23,10 @@ #include #include +#ifndef LTTNG_PACKED +#error "LTTNG_PACKED should be defined" +#endif + #ifndef LTTNG_UST_UUID_LEN #define LTTNG_UST_UUID_LEN 16 #endif @@ -53,6 +57,7 @@ struct ustctl_consumer_channel_attr { enum lttng_ust_output output; /* splice, mmap */ uint32_t chan_id; /* channel ID */ unsigned char uuid[LTTNG_UST_UUID_LEN]; /* Trace session unique ID */ + int64_t blocking_timeout; /* Blocking timeout (usec) */ } LTTNG_PACKED; /* @@ -226,6 +231,7 @@ int ustctl_put_next_subbuf(struct ustctl_consumer_stream *stream); /* snapshot */ int ustctl_snapshot(struct ustctl_consumer_stream *stream); +int ustctl_snapshot_sample_positions(struct ustctl_consumer_stream *stream); int ustctl_snapshot_get_consumed(struct ustctl_consumer_stream *stream, unsigned long *pos); int ustctl_snapshot_get_produced(struct ustctl_consumer_stream *stream, @@ -236,8 +242,15 @@ int ustctl_put_subbuf(struct ustctl_consumer_stream *stream); void ustctl_flush_buffer(struct ustctl_consumer_stream *stream, int producer_active); +void ustctl_clear_buffer(struct ustctl_consumer_stream *stream); /* index */ + +/* + * Getters which need to be used on the current packet (between get/put + * or get_next/put_next. + */ + int ustctl_get_timestamp_begin(struct ustctl_consumer_stream *stream, uint64_t *timestamp_begin); int ustctl_get_timestamp_end(struct ustctl_consumer_stream *stream, @@ -248,15 +261,26 @@ int ustctl_get_content_size(struct ustctl_consumer_stream *stream, uint64_t *content_size); int ustctl_get_packet_size(struct ustctl_consumer_stream *stream, uint64_t *packet_size); -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); + +/* + * Getter returning state invariant for the stream, which can be used + * without "get" operation. + */ + +int ustctl_get_stream_id(struct ustctl_consumer_stream *stream, + uint64_t *stream_id); int ustctl_get_instance_id(struct ustctl_consumer_stream *stream, uint64_t *id); +/* + * Getter returning the current timestamp as perceived from the + * tracer. + */ +int ustctl_get_current_timestamp(struct ustctl_consumer_stream *stream, + uint64_t *ts); + /* returns whether UST has perf counters support. */ int ustctl_has_perf_counters(void); @@ -330,11 +354,20 @@ struct ustctl_enum_value { 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 { 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