- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-#include <stdint.h>
-
-#define lttng_ust_notrace __attribute__((no_instrument_function))
-#define LTTNG_PACKED __attribute__((__packed__))
-
-#ifndef __ust_stringify
-#define __ust_stringify1(x) #x
-#define __ust_stringify(x) __ust_stringify1(x)
-#endif /* __ust_stringify */
-
-#define LTTNG_UST_SYM_NAME_LEN 256
-#define LTTNG_UST_ABI_PROCNAME_LEN 16
-
-/* UST comm magic number, used to validate protocol and endianness. */
-#define LTTNG_UST_COMM_MAGIC 0xC57C57C5
-
-/* Version for ABI between liblttng-ust, sessiond, consumerd */
-#define LTTNG_UST_ABI_MAJOR_VERSION 7
-#define LTTNG_UST_ABI_MINOR_VERSION 1
-
-enum lttng_ust_instrumentation {
- LTTNG_UST_TRACEPOINT = 0,
- LTTNG_UST_PROBE = 1,
- LTTNG_UST_FUNCTION = 2,
-};
-
-enum lttng_ust_loglevel_type {
- LTTNG_UST_LOGLEVEL_ALL = 0,
- LTTNG_UST_LOGLEVEL_RANGE = 1,
- LTTNG_UST_LOGLEVEL_SINGLE = 2,
-};
-
-enum lttng_ust_output {
- LTTNG_UST_MMAP = 0,
-};
-
-enum lttng_ust_chan_type {
- LTTNG_UST_CHAN_PER_CPU = 0,
- LTTNG_UST_CHAN_METADATA = 1,
-};
-
-struct lttng_ust_tracer_version {
- uint32_t major;
- uint32_t minor;
- uint32_t patchlevel;
-} LTTNG_PACKED;
-
-#define LTTNG_UST_CHANNEL_PADDING (LTTNG_UST_SYM_NAME_LEN + 32)
-/*
- * Given that the consumerd is limited to 64k file descriptors, we
- * cannot expect much more than 1MB channel structure size. This size is
- * depends on the number of streams within a channel, which depends on
- * the number of possible CPUs on the system.
- */
-#define LTTNG_UST_CHANNEL_DATA_MAX_LEN 1048576U
-struct lttng_ust_channel {
- uint64_t len;
- enum lttng_ust_chan_type type;
- char padding[LTTNG_UST_CHANNEL_PADDING];
- char data[]; /* variable sized data */
-} LTTNG_PACKED;
-
-#define LTTNG_UST_STREAM_PADDING1 (LTTNG_UST_SYM_NAME_LEN + 32)
-struct lttng_ust_stream {
- uint64_t len; /* shm len */
- uint32_t stream_nr; /* stream number */
- char padding[LTTNG_UST_STREAM_PADDING1];
- /*
- * shm_fd and wakeup_fd are send over unix socket as file
- * descriptors after this structure.
- */
-} LTTNG_PACKED;
-
-#define LTTNG_UST_EVENT_PADDING1 16
-#define LTTNG_UST_EVENT_PADDING2 (LTTNG_UST_SYM_NAME_LEN + 32)
-struct lttng_ust_event {
- enum lttng_ust_instrumentation instrumentation;
- char name[LTTNG_UST_SYM_NAME_LEN]; /* event name */
-
- enum lttng_ust_loglevel_type loglevel_type;
- int loglevel; /* value, -1: all */
- char padding[LTTNG_UST_EVENT_PADDING1];
-
- /* Per instrumentation type configuration */
- union {
- char padding[LTTNG_UST_EVENT_PADDING2];
- } u;
-} LTTNG_PACKED;
-
-enum lttng_ust_field_type {
- LTTNG_UST_FIELD_OTHER = 0,
- LTTNG_UST_FIELD_INTEGER = 1,
- LTTNG_UST_FIELD_ENUM = 2,
- LTTNG_UST_FIELD_FLOAT = 3,
- LTTNG_UST_FIELD_STRING = 4,
-};
-
-#define LTTNG_UST_FIELD_ITER_PADDING (LTTNG_UST_SYM_NAME_LEN + 28)
-struct lttng_ust_field_iter {
- char event_name[LTTNG_UST_SYM_NAME_LEN];
- char field_name[LTTNG_UST_SYM_NAME_LEN];
- enum lttng_ust_field_type type;
- int loglevel; /* event loglevel */
- int nowrite;
- char padding[LTTNG_UST_FIELD_ITER_PADDING];
-} LTTNG_PACKED;
-
-enum lttng_ust_context_type {
- LTTNG_UST_CONTEXT_VTID = 0,
- LTTNG_UST_CONTEXT_VPID = 1,
- LTTNG_UST_CONTEXT_PTHREAD_ID = 2,
- LTTNG_UST_CONTEXT_PROCNAME = 3,
- LTTNG_UST_CONTEXT_IP = 4,
- LTTNG_UST_CONTEXT_PERF_THREAD_COUNTER = 5,
- LTTNG_UST_CONTEXT_CPU_ID = 6,
- LTTNG_UST_CONTEXT_APP_CONTEXT = 7,
-};
-
-struct lttng_ust_perf_counter_ctx {
- uint32_t type;
- uint64_t config;
- char name[LTTNG_UST_SYM_NAME_LEN];
-} LTTNG_PACKED;
-
-#define LTTNG_UST_CONTEXT_PADDING1 16
-#define LTTNG_UST_CONTEXT_PADDING2 (LTTNG_UST_SYM_NAME_LEN + 32)
-struct lttng_ust_context {
- enum lttng_ust_context_type ctx;
- char padding[LTTNG_UST_CONTEXT_PADDING1];
-
- union {
- struct lttng_ust_perf_counter_ctx perf_counter;
- struct {
- /* Includes trailing '\0'. */
- uint32_t provider_name_len;
- uint32_t ctx_name_len;
- } app_ctx;
- char padding[LTTNG_UST_CONTEXT_PADDING2];
- } u;
-} LTTNG_PACKED;
-
-/*
- * Tracer channel attributes.