X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=include%2Flttng%2Fust-abi.h;h=46a35d808bed16186056acab404389f93897a740;hb=bf956ec0051ba7f365693e194bc0aeaf4343a82c;hp=e502f729bea83d0cec5a081cccfa8de31d443dde;hpb=e15372592f425ecfdda7f8260b4bc33db9623459;p=lttng-ust.git diff --git a/include/lttng/ust-abi.h b/include/lttng/ust-abi.h index e502f729..46a35d80 100644 --- a/include/lttng/ust-abi.h +++ b/include/lttng/ust-abi.h @@ -4,32 +4,38 @@ /* * lttng/ust-abi.h * - * Copyright 2010-2011 (c) - Mathieu Desnoyers - * * LTTng-UST ABI header * - * THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED - * OR IMPLIED. ANY USE IS AT YOUR OWN RISK. + * Copyright 2010-2012 - Mathieu Desnoyers + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: * - * Permission is hereby granted to use or copy this program - * for any purpose, provided the above notices are retained on all copies. - * Permission to modify the code and to distribute modified code is granted, - * provided the above notices are retained, and a notice that the code was - * modified is included with the above copyright notice. + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. */ #include #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 +48,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,19 +56,52 @@ struct lttng_ust_channel { unsigned int switch_timer_interval; /* usecs */ unsigned int read_timer_interval; /* usecs */ enum lttng_ust_output output; /* output mode */ + char padding[LTTNG_UST_CHANNEL_PADDING]; }; +#define LTTNG_UST_STREAM_PADDING1 16 +#define LTTNG_UST_STREAM_PADDING2 LTTNG_UST_SYM_NAME_LEN + 32 struct lttng_ust_stream { + 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; }; +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 + 32 +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 */ + char padding[LTTNG_UST_FIELD_ITER_PADDING]; +}; + enum lttng_ust_context_type { LTTNG_UST_CONTEXT_VTID = 0, LTTNG_UST_CONTEXT_VPID = 1, @@ -69,15 +109,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 */ @@ -85,19 +131,45 @@ 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]; }; +#define LTTNG_UST_TRACEPOINT_ITER_PADDING 16 struct lttng_ust_tracepoint_iter { char name[LTTNG_UST_SYM_NAME_LEN]; /* provider:name */ - char loglevel[LTTNG_UST_SYM_NAME_LEN]; /* loglevel */ - int64_t loglevel_value; + 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 FILTER_BYTECODE_MAX_LEN 65535 +struct lttng_ust_filter_bytecode { + uint16_t len; + uint16_t reloc_offset; + char data[0]; }; #define _UST_CMD(minor) (minor) @@ -116,6 +188,7 @@ 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_TRACEPOINT_FIELD_LIST _UST_CMD(0x45) /* Session FD commands */ #define LTTNG_UST_METADATA \ @@ -142,6 +215,10 @@ struct lttng_ust_object_data { /* Tracepoint list commands */ #define LTTNG_UST_TRACEPOINT_LIST_GET _UST_CMD(0x90) +#define LTTNG_UST_TRACEPOINT_FIELD_LIST_GET _UST_CMD(0x91) + +/* Event FD commands */ +#define LTTNG_UST_FILTER _UST_CMD(0xA0) #define LTTNG_UST_ROOT_HANDLE 0 @@ -158,6 +235,9 @@ union ust_args { int *wait_fd; uint64_t *memory_map_size; } stream; + struct { + struct lttng_ust_field_iter entry; + } field_list; }; struct lttng_ust_objd_ops {