X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=include%2Flttng%2Fust-abi.h;h=f726c8b576e707a69a0cd3508f77c184d21706c4;hb=d8de13549b80d40b0c823e43e81afd55266f2fe5;hp=ae95af6b222b494a3bc3c7eb350b4e793eede7af;hpb=df854e41ded4203a5b86bac062b8604bb038759a;p=lttng-ust.git diff --git a/include/lttng/ust-abi.h b/include/lttng/ust-abi.h index ae95af6b..f726c8b5 100644 --- a/include/lttng/ust-abi.h +++ b/include/lttng/ust-abi.h @@ -20,16 +20,21 @@ #include -#define LTTNG_UST_SYM_NAME_LEN 128 +#define LTTNG_UST_SYM_NAME_LEN 256 -#define LTTNG_UST_COMM_VERSION_MAJOR 0 -#define LTTNG_UST_COMM_VERSION_MINOR 1 +#define LTTNG_UST_COMM_VERSION_MAJOR 2 +#define LTTNG_UST_COMM_VERSION_MINOR 0 enum lttng_ust_instrumentation { LTTNG_UST_TRACEPOINT = 0, LTTNG_UST_PROBE = 1, LTTNG_UST_FUNCTION = 2, - LTTNG_UST_TRACEPOINT_LOGLEVEL = 3, +}; + +enum lttng_ust_loglevel_type { + LTTNG_UST_LOGLEVEL_ALL = 0, + LTTNG_UST_LOGLEVEL_RANGE = 1, + LTTNG_UST_LOGLEVEL_SINGLE = 2, }; enum lttng_ust_output { @@ -42,6 +47,7 @@ struct lttng_ust_tracer_version { uint32_t patchlevel; }; +#define LTTNG_UST_CHANNEL_PADDING LTTNG_UST_SYM_NAME_LEN + 32 struct lttng_ust_channel { int overwrite; /* 1: overwrite, 0: discard */ uint64_t subbuf_size; /* in bytes */ @@ -49,27 +55,32 @@ struct lttng_ust_channel { unsigned int switch_timer_interval; /* usecs */ unsigned int read_timer_interval; /* usecs */ enum lttng_ust_output output; /* output mode */ - /* The following fields are used internally within UST. */ - int shm_fd; - int wait_fd; - uint64_t memory_map_size; + char padding[LTTNG_UST_CHANNEL_PADDING]; }; -/* - * This structure is only used internally within UST. It is not per-se - * part of the communication between sessiond and UST. - */ +#define LTTNG_UST_STREAM_PADDING1 16 +#define LTTNG_UST_STREAM_PADDING2 LTTNG_UST_SYM_NAME_LEN + 32 struct lttng_ust_stream { - int shm_fd; - int wait_fd; - uint64_t memory_map_size; + char padding[LTTNG_UST_STREAM_PADDING1]; + + union { + char padding[LTTNG_UST_STREAM_PADDING2]; + } u; }; +#define LTTNG_UST_EVENT_PADDING1 16 +#define LTTNG_UST_EVENT_PADDING2 LTTNG_UST_SYM_NAME_LEN + 32 struct lttng_ust_event { - char name[LTTNG_UST_SYM_NAME_LEN]; /* event name */ 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; }; @@ -80,15 +91,21 @@ enum lttng_ust_context_type { LTTNG_UST_CONTEXT_PROCNAME = 3, }; +#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 { + char padding[LTTNG_UST_CONTEXT_PADDING2]; } u; }; /* * Tracer channel attributes. */ +#define LTTNG_UST_CHANNEL_ATTR_PADDING LTTNG_UST_SYM_NAME_LEN + 32 struct lttng_ust_channel_attr { int overwrite; /* 1: overwrite, 0: discard */ uint64_t subbuf_size; /* bytes */ @@ -96,19 +113,38 @@ struct lttng_ust_channel_attr { unsigned int switch_timer_interval; /* usec */ unsigned int read_timer_interval; /* usec */ enum lttng_ust_output output; /* splice, mmap */ + char padding[LTTNG_UST_CHANNEL_ATTR_PADDING]; }; -struct lttng_ust_loglevel { - char provider[LTTNG_UST_SYM_NAME_LEN]; - char loglevel[LTTNG_UST_SYM_NAME_LEN]; - int64_t value; +#define LTTNG_UST_TRACEPOINT_ITER_PADDING 16 +struct lttng_ust_tracepoint_iter { + char name[LTTNG_UST_SYM_NAME_LEN]; /* provider:name */ + int loglevel; + char padding[LTTNG_UST_TRACEPOINT_ITER_PADDING]; }; +#define LTTNG_UST_OBJECT_DATA_PADDING LTTNG_UST_SYM_NAME_LEN + 32 struct lttng_ust_object_data { int handle; int shm_fd; int wait_fd; uint64_t memory_map_size; + char padding[LTTNG_UST_OBJECT_DATA_PADDING]; +}; + +enum lttng_ust_calibrate_type { + LTTNG_UST_CALIBRATE_TRACEPOINT, +}; + +#define LTTNG_UST_CALIBRATE_PADDING1 16 +#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]; + + union { + char padding[LTTNG_UST_CALIBRATE_PADDING2]; + } u; }; #define _UST_CMD(minor) (minor) @@ -127,7 +163,6 @@ struct lttng_ust_object_data { #define LTTNG_UST_TRACEPOINT_LIST _UST_CMD(0x42) #define LTTNG_UST_WAIT_QUIESCENT _UST_CMD(0x43) #define LTTNG_UST_REGISTER_DONE _UST_CMD(0x44) -#define LTTNG_UST_LOGLEVEL_LIST _UST_CMD(0x45) /* Session FD commands */ #define LTTNG_UST_METADATA \ @@ -155,15 +190,26 @@ struct lttng_ust_object_data { /* Tracepoint list commands */ #define LTTNG_UST_TRACEPOINT_LIST_GET _UST_CMD(0x90) -/* Loglevel list commands */ -#define LTTNG_UST_LOGLEVEL_LIST_GET _UST_CMD(0xA0) - #define LTTNG_UST_ROOT_HANDLE 0 struct lttng_ust_obj; +union ust_args { + struct { + int *shm_fd; + int *wait_fd; + uint64_t *memory_map_size; + } channel; + struct { + int *shm_fd; + int *wait_fd; + uint64_t *memory_map_size; + } stream; +}; + struct lttng_ust_objd_ops { - long (*cmd)(int objd, unsigned int cmd, unsigned long arg); + long (*cmd)(int objd, unsigned int cmd, unsigned long arg, + union ust_args *args); int (*release)(int objd); };