-/* Health component for the health check function. */
-enum lttng_health_component {
- LTTNG_HEALTH_CMD,
- LTTNG_HEALTH_APP_MANAGE,
- LTTNG_HEALTH_APP_REG,
- LTTNG_HEALTH_KERNEL,
- LTTNG_HEALTH_CONSUMER,
- LTTNG_HEALTH_ALL,
-};
-
-/* Destination type of lttng URI */
-enum lttng_dst_type {
- LTTNG_DST_IPV4 = 1,
- LTTNG_DST_IPV6 = 2,
- LTTNG_DST_PATH = 3,
-};
-
-/* Type of lttng URI where it is a final destination or a hop */
-enum lttng_uri_type {
- LTTNG_URI_DST, /* The URI is a final destination */
- /*
- * Hop are not supported yet but planned for a future release.
- *
- LTTNG_URI_HOP,
- */
-};
-
-/* Communication stream type of a lttng URI */
-enum lttng_stream_type {
- LTTNG_STREAM_CONTROL,
- LTTNG_STREAM_DATA,
-};
-
-/*
- * Protocol type of a lttng URI. The value 0 indicate that the proto_type field
- * should be ignored.
- */
-enum lttng_proto_type {
- LTTNG_TCP = 1,
- /*
- * UDP protocol is not supported for now.
- *
- LTTNG_UDP = 2,
- */
-};
-
-/*
- * Structure representing an URI supported by lttng.
- */
-#define LTTNG_URI_PADDING1_LEN 16
-#define LTTNG_URI_PADDING2_LEN LTTNG_SYMBOL_NAME_LEN + 32
-struct lttng_uri {
- enum lttng_dst_type dtype;
- enum lttng_uri_type utype;
- enum lttng_stream_type stype;
- enum lttng_proto_type proto;
- in_port_t port;
- char padding[LTTNG_URI_PADDING1_LEN];
- char subdir[PATH_MAX];
- union {
- char ipv4[INET_ADDRSTRLEN];
- char ipv6[INET6_ADDRSTRLEN];
- char path[PATH_MAX];
- char padding[LTTNG_URI_PADDING2_LEN];
- } dst;
-};
-
-/*
- * The structures should be initialized to zero before use.
- */
-#define LTTNG_DOMAIN_PADDING1 16
-#define LTTNG_DOMAIN_PADDING2 LTTNG_SYMBOL_NAME_LEN + 32
-struct lttng_domain {
- enum lttng_domain_type type;
- char padding[LTTNG_DOMAIN_PADDING1];
-
- union {
- pid_t pid;
- char exec_name[NAME_MAX];
- char padding[LTTNG_DOMAIN_PADDING2];
- } attr;
-};
-
-/*
- * Perf counter attributes
- *
- * The structures should be initialized to zero before use.
- */
-#define LTTNG_PERF_EVENT_PADDING1 16
-struct lttng_event_perf_counter_ctx {
- uint32_t type;
- uint64_t config;
- char name[LTTNG_SYMBOL_NAME_LEN];
-
- char padding[LTTNG_PERF_EVENT_PADDING1];
-};
-
-/*
- * Event/channel context
- *
- * The structures should be initialized to zero before use.
- */
-#define LTTNG_EVENT_CONTEXT_PADDING1 16
-#define LTTNG_EVENT_CONTEXT_PADDING2 LTTNG_SYMBOL_NAME_LEN + 32
-struct lttng_event_context {
- enum lttng_event_context_type ctx;
- char padding[LTTNG_EVENT_CONTEXT_PADDING1];
-
- union {
- struct lttng_event_perf_counter_ctx perf_counter;
- char padding[LTTNG_EVENT_CONTEXT_PADDING2];
- } u;
-};
-
-/*
- * Event probe.
- *
- * Either addr is used or symbol_name and offset.
- *
- * The structures should be initialized to zero before use.
- */
-#define LTTNG_EVENT_PROBE_PADDING1 16
-struct lttng_event_probe_attr {
- uint64_t addr;
-
- uint64_t offset;
- char symbol_name[LTTNG_SYMBOL_NAME_LEN];
-
- char padding[LTTNG_EVENT_PROBE_PADDING1];
-};
-
-/*
- * Function tracer
- *
- * The structures should be initialized to zero before use.
- */
-#define LTTNG_EVENT_FUNCTION_PADDING1 16
-struct lttng_event_function_attr {
- char symbol_name[LTTNG_SYMBOL_NAME_LEN];
-
- char padding[LTTNG_EVENT_FUNCTION_PADDING1];
-};
-
-/*
- * Generic lttng event
- *
- * The structures should be initialized to zero before use.
- */
-#define LTTNG_EVENT_PADDING1 15
-#define LTTNG_EVENT_PADDING2 LTTNG_SYMBOL_NAME_LEN + 32
-struct lttng_event {
- enum lttng_event_type type;
- char name[LTTNG_SYMBOL_NAME_LEN];
-
- enum lttng_loglevel_type loglevel_type;
- int loglevel;
-
- int32_t enabled; /* Does not apply: -1 */
- pid_t pid;
- unsigned char filter; /* filter enabled ? */
-
- char padding[LTTNG_EVENT_PADDING1];
-
- /* Per event type configuration */
- union {
- struct lttng_event_probe_attr probe;
- struct lttng_event_function_attr ftrace;
-
- char padding[LTTNG_EVENT_PADDING2];
- } attr;
-};
-
-enum lttng_event_field_type {
- LTTNG_EVENT_FIELD_OTHER = 0,
- LTTNG_EVENT_FIELD_INTEGER = 1,
- LTTNG_EVENT_FIELD_ENUM = 2,
- LTTNG_EVENT_FIELD_FLOAT = 3,
- LTTNG_EVENT_FIELD_STRING = 4,
-};
-
-#define LTTNG_EVENT_FIELD_PADDING LTTNG_SYMBOL_NAME_LEN + 32
-struct lttng_event_field {
- char field_name[LTTNG_SYMBOL_NAME_LEN];
- enum lttng_event_field_type type;
- char padding[LTTNG_EVENT_FIELD_PADDING];
- struct lttng_event event;
-};
-
-/*
- * Tracer channel attributes. For both kernel and user-space.
- *
- * The structures should be initialized to zero before use.
- */
-#define LTTNG_CHANNEL_ATTR_PADDING1 LTTNG_SYMBOL_NAME_LEN + 32
-struct lttng_channel_attr {
- int overwrite; /* 1: overwrite, 0: discard */
- uint64_t subbuf_size; /* bytes */
- uint64_t num_subbuf; /* power of 2 */
- unsigned int switch_timer_interval; /* usec */
- unsigned int read_timer_interval; /* usec */
- enum lttng_event_output output; /* splice, mmap */
-
- char padding[LTTNG_CHANNEL_ATTR_PADDING1];
-};
-
-/*
- * Channel information structure. For both kernel and user-space.
- *
- * The structures should be initialized to zero before use.
- */
-#define LTTNG_CHANNEL_PADDING1 16
-struct lttng_channel {
- char name[LTTNG_SYMBOL_NAME_LEN];
- uint32_t enabled;
- struct lttng_channel_attr attr;
-
- char padding[LTTNG_CHANNEL_PADDING1];