summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
a719be6)
Ensure robustness with respect to 32-bit vs 64-bit apps vs sessiond.
Since we are updating the ABI, change the order of overwrite field in
channel and channel attributes, to remove some unneeded padding.
This breaks compatibility between sessiond 2.1 and ust 2.0 (and
vice-versa), but sessiond refuses applications with version number that
does not match.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
+#include <lttng/ust-compiler.h>
#define LTTNG_UST_SYM_NAME_LEN 256
#define LTTNG_UST_SYM_NAME_LEN 256
uint32_t major;
uint32_t minor;
uint32_t patchlevel;
uint32_t major;
uint32_t minor;
uint32_t patchlevel;
#define LTTNG_UST_CHANNEL_PADDING LTTNG_UST_SYM_NAME_LEN + 32
struct lttng_ust_channel {
#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;
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];
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
#define LTTNG_UST_STREAM_PADDING1 16
#define LTTNG_UST_STREAM_PADDING2 LTTNG_UST_SYM_NAME_LEN + 32
union {
char padding[LTTNG_UST_STREAM_PADDING2];
} u;
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
#define LTTNG_UST_EVENT_PADDING1 16
#define LTTNG_UST_EVENT_PADDING2 LTTNG_UST_SYM_NAME_LEN + 32
union {
char padding[LTTNG_UST_EVENT_PADDING2];
} u;
union {
char padding[LTTNG_UST_EVENT_PADDING2];
} u;
enum lttng_ust_field_type {
LTTNG_UST_FIELD_OTHER = 0,
enum lttng_ust_field_type {
LTTNG_UST_FIELD_OTHER = 0,
int loglevel; /* event loglevel */
int nowrite;
char padding[LTTNG_UST_FIELD_ITER_PADDING];
int loglevel; /* event loglevel */
int nowrite;
char padding[LTTNG_UST_FIELD_ITER_PADDING];
enum lttng_ust_context_type {
LTTNG_UST_CONTEXT_VTID = 0,
enum lttng_ust_context_type {
LTTNG_UST_CONTEXT_VTID = 0,
union {
char padding[LTTNG_UST_CONTEXT_PADDING2];
} u;
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 {
/*
* 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 */
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];
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 */
int loglevel;
char padding[LTTNG_UST_TRACEPOINT_ITER_PADDING];
#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 {
#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;
int handle;
int shm_fd;
int wait_fd;
- uint64_t memory_map_size;
char padding[LTTNG_UST_OBJECT_DATA_PADDING];
char padding[LTTNG_UST_OBJECT_DATA_PADDING];
enum lttng_ust_calibrate_type {
LTTNG_UST_CALIBRATE_TRACEPOINT,
enum lttng_ust_calibrate_type {
LTTNG_UST_CALIBRATE_TRACEPOINT,
union {
char padding[LTTNG_UST_CALIBRATE_PADDING2];
} u;
union {
char padding[LTTNG_UST_CALIBRATE_PADDING2];
} u;
#define FILTER_BYTECODE_MAX_LEN 65536
#define LTTNG_UST_FILTER_PADDING 32
#define FILTER_BYTECODE_MAX_LEN 65536
#define LTTNG_UST_FILTER_PADDING 32
uint64_t seqnum;
char padding[LTTNG_UST_FILTER_PADDING];
char data[0];
uint64_t seqnum;
char padding[LTTNG_UST_FILTER_PADDING];
char data[0];
#define _UST_CMD(minor) (minor)
#define _UST_CMDR(minor, type) (minor)
#define _UST_CMD(minor) (minor)
#define _UST_CMDR(minor, type) (minor)
*/
#define lttng_ust_notrace __attribute__((no_instrument_function))
*/
#define lttng_ust_notrace __attribute__((no_instrument_function))
+#define LTTNG_PACKED __attribute__((__packed__))
#endif /* _LTTNG_UST_COMPILER_H */
#endif /* _LTTNG_UST_COMPILER_H */
#include <unistd.h>
#include <lttng/ust-abi.h>
#include <lttng/ust-error.h>
#include <unistd.h>
#include <lttng/ust-abi.h>
#include <lttng/ust-error.h>
+#include <lttng/ust-compiler.h>
/*
* Default timeout the application waits for the sessiond to send its
/*
* Default timeout the application waits for the sessiond to send its
uint32_t data_size; /* following filter data */
uint32_t reloc_offset;
uint64_t seqnum;
uint32_t data_size; /* following filter data */
uint32_t reloc_offset;
uint64_t seqnum;
/*
* Data structure for the response from UST to the session daemon.
/*
* Data structure for the response from UST to the session daemon.
union {
struct {
uint64_t memory_map_size;
union {
struct {
uint64_t memory_map_size;
+ } LTTNG_PACKED channel;
struct {
uint64_t memory_map_size;
struct {
uint64_t memory_map_size;
struct lttng_ust_tracer_version version;
struct lttng_ust_tracepoint_iter tracepoint;
} u;
struct lttng_ust_tracer_version version;
struct lttng_ust_tracepoint_iter tracepoint;
} u;
/*
* LTTNG_UST_TRACEPOINT_FIELD_LIST reply is followed by a
/*
* LTTNG_UST_TRACEPOINT_FIELD_LIST reply is followed by a