X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Fbin%2Flttng-sessiond%2Flttng-ust-abi.h;h=03d2e65f6059ed4bd6359ef10f860fd7c79c95ac;hb=a74934bae19f96845f7af4b95a8fae5c2f860747;hp=4ef04653cc517bebc3ec87890f03bc9dcc975622;hpb=ffe600149a7608221985751e1bf293234bf2545c;p=lttng-tools.git diff --git a/src/bin/lttng-sessiond/lttng-ust-abi.h b/src/bin/lttng-sessiond/lttng-ust-abi.h index 4ef04653c..03d2e65f6 100644 --- a/src/bin/lttng-sessiond/lttng-ust-abi.h +++ b/src/bin/lttng-sessiond/lttng-ust-abi.h @@ -28,18 +28,24 @@ */ #include -#include -#define LTTNG_UST_SYM_NAME_LEN 256 +#define lttng_ust_notrace __attribute__((no_instrument_function)) +#define LTTNG_PACKED __attribute__((__packed__)) -/* Version for comm protocol between sessiond and ust */ -#define LTTNG_UST_COMM_VERSION_MAJOR 2 -#define LTTNG_UST_COMM_VERSION_MINOR 1 +#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_INTERNAL_MAJOR_VERSION 3 -#define LTTNG_UST_INTERNAL_MINOR_VERSION 0 -#define LTTNG_UST_INTERNAL_PATCHLEVEL_VERSION 0 +#define LTTNG_UST_ABI_MAJOR_VERSION 4 +#define LTTNG_UST_ABI_MINOR_VERSION 0 enum lttng_ust_instrumentation { LTTNG_UST_TRACEPOINT = 0, @@ -68,7 +74,7 @@ struct lttng_ust_tracer_version { uint32_t patchlevel; } LTTNG_PACKED; -#define LTTNG_UST_CHANNEL_PADDING LTTNG_UST_SYM_NAME_LEN + 32 +#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 @@ -83,7 +89,7 @@ struct lttng_ust_channel { char data[]; /* variable sized data */ } LTTNG_PACKED; -#define LTTNG_UST_STREAM_PADDING1 LTTNG_UST_SYM_NAME_LEN + 32 +#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 */ @@ -95,7 +101,7 @@ struct lttng_ust_stream { } LTTNG_PACKED; #define LTTNG_UST_EVENT_PADDING1 16 -#define LTTNG_UST_EVENT_PADDING2 LTTNG_UST_SYM_NAME_LEN + 32 +#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 */ @@ -118,7 +124,7 @@ enum lttng_ust_field_type { LTTNG_UST_FIELD_STRING = 4, }; -#define LTTNG_UST_FIELD_ITER_PADDING LTTNG_UST_SYM_NAME_LEN + 28 +#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]; @@ -136,7 +142,7 @@ enum lttng_ust_context_type { }; #define LTTNG_UST_CONTEXT_PADDING1 16 -#define LTTNG_UST_CONTEXT_PADDING2 LTTNG_UST_SYM_NAME_LEN + 32 +#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]; @@ -149,7 +155,7 @@ struct lttng_ust_context { /* * Tracer channel attributes. */ -#define LTTNG_UST_CHANNEL_ATTR_PADDING LTTNG_UST_SYM_NAME_LEN + 32 +#define LTTNG_UST_CHANNEL_ATTR_PADDING (LTTNG_UST_SYM_NAME_LEN + 32) struct lttng_ust_channel_attr { uint64_t subbuf_size; /* bytes */ uint64_t num_subbuf; /* power of 2 */ @@ -171,10 +177,12 @@ enum lttng_ust_object_type { LTTNG_UST_OBJECT_TYPE_UNKNOWN = -1, LTTNG_UST_OBJECT_TYPE_CHANNEL = 0, LTTNG_UST_OBJECT_TYPE_STREAM = 1, + LTTNG_UST_OBJECT_TYPE_EVENT = 2, + LTTNG_UST_OBJECT_TYPE_CONTEXT = 3, }; -#define LTTNG_UST_OBJECT_DATA_PADDING1 32 -#define LTTNG_UST_OBJECT_DATA_PADDING2 LTTNG_UST_SYM_NAME_LEN + 32 +#define LTTNG_UST_OBJECT_DATA_PADDING1 32 +#define LTTNG_UST_OBJECT_DATA_PADDING2 (LTTNG_UST_SYM_NAME_LEN + 32) struct lttng_ust_object_data { enum lttng_ust_object_type type; @@ -185,6 +193,7 @@ struct lttng_ust_object_data { struct { void *data; enum lttng_ust_chan_type type; + int wakeup_fd; } channel; struct { int shm_fd; @@ -200,7 +209,7 @@ enum lttng_ust_calibrate_type { }; #define LTTNG_UST_CALIBRATE_PADDING1 16 -#define LTTNG_UST_CALIBRATE_PADDING2 LTTNG_UST_SYM_NAME_LEN + 32 +#define LTTNG_UST_CALIBRATE_PADDING2 (LTTNG_UST_SYM_NAME_LEN + 32) struct lttng_ust_calibrate { enum lttng_ust_calibrate_type type; /* type (input) */ char padding[LTTNG_UST_CALIBRATE_PADDING1]; @@ -239,8 +248,6 @@ struct lttng_ust_filter_bytecode { #define LTTNG_UST_TRACEPOINT_FIELD_LIST _UST_CMD(0x45) /* Session FD commands */ -#define LTTNG_UST_METADATA \ - _UST_CMDW(0x50, struct lttng_ust_channel) #define LTTNG_UST_CHANNEL \ _UST_CMDW(0x51, struct lttng_ust_channel) #define LTTNG_UST_SESSION_START _UST_CMD(0x52) @@ -275,6 +282,7 @@ struct lttng_ust_obj; union ust_args { struct { void *chan_data; + int wakeup_fd; } channel; struct { int shm_fd; @@ -295,7 +303,7 @@ struct lttng_ust_objd_ops { int lttng_abi_create_root_handle(void); const struct lttng_ust_objd_ops *objd_ops(int id); -int lttng_ust_objd_unref(int id); +int lttng_ust_objd_unref(int id, int is_owner); void lttng_ust_abi_exit(void); void lttng_ust_events_exit(void);