X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fbin%2Flttng-sessiond%2Flttng-ust-abi.h;h=ef663ced23ca633991eede0c73a7ece811a16400;hp=91639a7c6d43279ab60f85b0098d2bced8484d0b;hb=bb719d46a65d5c4647c5fe0e344c18a1f2b8a624;hpb=ab6a656907905eb3a0f95a43a1e14a93d40e4cd2 diff --git a/src/bin/lttng-sessiond/lttng-ust-abi.h b/src/bin/lttng-sessiond/lttng-ust-abi.h index 91639a7c6..ef663ced2 100644 --- a/src/bin/lttng-sessiond/lttng-ust-abi.h +++ b/src/bin/lttng-sessiond/lttng-ust-abi.h @@ -17,15 +17,24 @@ * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. + * + * 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 +#include #define LTTNG_UST_SYM_NAME_LEN 256 /* Version for comm protocol between sessiond and ust */ #define LTTNG_UST_COMM_VERSION_MAJOR 2 -#define LTTNG_UST_COMM_VERSION_MINOR 0 +#define LTTNG_UST_COMM_VERSION_MINOR 1 /* Version for ABI between liblttng-ust, sessiond, consumerd */ #define LTTNG_UST_INTERNAL_MAJOR_VERSION 3 @@ -52,18 +61,18 @@ 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 struct lttng_ust_channel { - int overwrite; /* 1: overwrite, 0: discard */ uint64_t subbuf_size; /* in bytes */ uint64_t num_subbuf; + int overwrite; /* 1: overwrite, 0: discard */ 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]; -}; +} LTTNG_PACKED; #define LTTNG_UST_STREAM_PADDING1 16 #define LTTNG_UST_STREAM_PADDING2 LTTNG_UST_SYM_NAME_LEN + 32 @@ -73,7 +82,7 @@ struct lttng_ust_stream { union { char padding[LTTNG_UST_STREAM_PADDING2]; } u; -}; +} LTTNG_PACKED; #define LTTNG_UST_EVENT_PADDING1 16 #define LTTNG_UST_EVENT_PADDING2 LTTNG_UST_SYM_NAME_LEN + 32 @@ -89,7 +98,7 @@ struct lttng_ust_event { union { char padding[LTTNG_UST_EVENT_PADDING2]; } u; -}; +} LTTNG_PACKED; enum lttng_ust_field_type { LTTNG_UST_FIELD_OTHER = 0, @@ -105,9 +114,9 @@ struct lttng_ust_field_iter { char field_name[LTTNG_UST_SYM_NAME_LEN]; enum lttng_ust_field_type type; int loglevel; /* event loglevel */ - int written; + int nowrite; char padding[LTTNG_UST_FIELD_ITER_PADDING]; -}; +} LTTNG_PACKED; enum lttng_ust_context_type { LTTNG_UST_CONTEXT_VTID = 0, @@ -125,37 +134,37 @@ struct lttng_ust_context { union { char padding[LTTNG_UST_CONTEXT_PADDING2]; } u; -}; +} LTTNG_PACKED; /* * 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 */ uint64_t num_subbuf; /* power of 2 */ + int overwrite; /* 1: overwrite, 0: discard */ 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]; -}; +} LTTNG_PACKED; #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]; -}; +} LTTNG_PACKED; #define LTTNG_UST_OBJECT_DATA_PADDING LTTNG_UST_SYM_NAME_LEN + 32 struct lttng_ust_object_data { + uint64_t memory_map_size; int handle; int shm_fd; int wait_fd; - uint64_t memory_map_size; char padding[LTTNG_UST_OBJECT_DATA_PADDING]; -}; +} LTTNG_PACKED; enum lttng_ust_calibrate_type { LTTNG_UST_CALIBRATE_TRACEPOINT, @@ -170,14 +179,17 @@ struct lttng_ust_calibrate { union { char padding[LTTNG_UST_CALIBRATE_PADDING2]; } u; -}; +} LTTNG_PACKED; #define FILTER_BYTECODE_MAX_LEN 65536 +#define LTTNG_UST_FILTER_PADDING 32 struct lttng_ust_filter_bytecode { uint32_t len; uint32_t reloc_offset; + uint64_t seqnum; + char padding[LTTNG_UST_FILTER_PADDING]; char data[0]; -}; +} LTTNG_PACKED; #define _UST_CMD(minor) (minor) #define _UST_CMDR(minor, type) (minor) @@ -249,7 +261,7 @@ union ust_args { struct lttng_ust_objd_ops { long (*cmd)(int objd, unsigned int cmd, unsigned long arg, - union ust_args *args); + union ust_args *args, void *owner); int (*release)(int objd); }; @@ -261,5 +273,6 @@ int lttng_ust_objd_unref(int id); void lttng_ust_abi_exit(void); void lttng_ust_events_exit(void); +void lttng_ust_objd_table_owner_cleanup(void *owner); #endif /* _LTTNG_UST_ABI_H */