extern "C" {
#endif
+#ifndef LTTNG_PACKED
+#define LTTNG_PACKED __attribute__((__packed__))
+#endif
+
/*
* Event symbol length. Copied from LTTng kernel ABI.
*/
char exec_name[NAME_MAX];
char padding[LTTNG_DOMAIN_PADDING2];
} attr;
-};
+} LTTNG_PACKED;
/*
* Perf counter attributes
char name[LTTNG_SYMBOL_NAME_LEN];
char padding[LTTNG_PERF_EVENT_PADDING1];
-};
+} LTTNG_PACKED;
/*
* Event/channel context
struct lttng_event_perf_counter_ctx perf_counter;
char padding[LTTNG_EVENT_CONTEXT_PADDING2];
} u;
-};
+} LTTNG_PACKED;
/*
* Event probe.
char symbol_name[LTTNG_SYMBOL_NAME_LEN];
char padding[LTTNG_EVENT_PROBE_PADDING1];
-};
+} LTTNG_PACKED;
/*
* Function tracer
char symbol_name[LTTNG_SYMBOL_NAME_LEN];
char padding[LTTNG_EVENT_FUNCTION_PADDING1];
-};
+} LTTNG_PACKED;
/*
* Generic lttng event
char padding[LTTNG_EVENT_PADDING2];
} attr;
-};
+} LTTNG_PACKED;
enum lttng_event_field_type {
LTTNG_EVENT_FIELD_OTHER = 0,
char padding[LTTNG_EVENT_FIELD_PADDING];
struct lttng_event event;
int nowrite;
-};
+} LTTNG_PACKED;
/*
* Tracer channel attributes. For both kernel and user-space.
enum lttng_event_output output; /* splice, mmap */
char padding[LTTNG_CHANNEL_ATTR_PADDING1];
-};
+} LTTNG_PACKED;
/*
* Channel information structure. For both kernel and user-space.
struct lttng_channel_attr attr;
char padding[LTTNG_CHANNEL_PADDING1];
-};
+} LTTNG_PACKED;
#define LTTNG_CALIBRATE_PADDING1 16
struct lttng_calibrate {
enum lttng_calibrate_type type;
char padding[LTTNG_CALIBRATE_PADDING1];
-};
+} LTTNG_PACKED;
/*
* Basic session information.
uint32_t enabled; /* enabled/started: 1, disabled/stopped: 0 */
char padding[LTTNG_SESSION_PADDING1];
-};
+} LTTNG_PACKED;
/*
* Handle used as a context for commands.
struct lttng_domain domain;
char padding[LTTNG_HANDLE_PADDING1];
-};
+} LTTNG_PACKED;
/*
* Public LTTng control API
uint64_t data_size; /* data size following this header */
uint32_t cmd; /* enum lttcomm_sessiond_command */
uint32_t cmd_version; /* command version */
-} __attribute__ ((__packed__));
+} LTTNG_PACKED;
/*
* lttng-relayd data header.
uint64_t net_seq_num; /* Network sequence number, per stream. */
uint32_t data_size; /* data size following this header */
uint32_t padding_size; /* Size of 0 padding the data */
-} __attribute__ ((__packed__));
+} LTTNG_PACKED;
/*
* Reply from a create session command.
struct lttcomm_relayd_status_session {
uint64_t session_id;
uint32_t ret_code;
-} __attribute__ ((__packed__));
+} LTTNG_PACKED;
/*
* Used to add a stream on the relay daemon.
struct lttcomm_relayd_add_stream {
char channel_name[DEFAULT_STREAM_NAME_LEN];
char pathname[PATH_MAX];
-} __attribute__ ((__packed__));
+} LTTNG_PACKED;
/*
* Answer from an add stream command.
struct lttcomm_relayd_status_stream {
uint64_t handle;
uint32_t ret_code;
-} __attribute__ ((__packed__));
+} LTTNG_PACKED;
/*
* Used to return command code for command not needing special data.
*/
struct lttcomm_relayd_generic_reply {
uint32_t ret_code;
-} __attribute__ ((__packed__));
+} LTTNG_PACKED;
/*
* Used to update synchronization information.
*/
struct lttcomm_relayd_update_sync_info {
/* TODO: fill the structure. Feature not implemented yet */
-} __attribute__ ((__packed__));
+} LTTNG_PACKED;
/*
* Version command.
struct lttcomm_relayd_version {
uint32_t major;
uint32_t minor;
-} __attribute__ ((__packed__));
+} LTTNG_PACKED;
/*
* Metadata payload used when metadata command is sent.
uint64_t stream_id;
uint32_t padding_size;
char payload[];
-} __attribute__ ((__packed__));
+} LTTNG_PACKED;
/*
* Used to indicate that a specific stream id can now be closed.
struct lttcomm_relayd_close_stream {
uint64_t stream_id;
uint64_t last_net_seq_num; /* sequence number of last packet */
-} __attribute__ ((__packed__));
+} LTTNG_PACKED;
/*
* Used to test if for a given stream id the data is pending on the relayd side
struct lttcomm_relayd_data_pending {
uint64_t stream_id;
uint64_t last_net_seq_num; /* Sequence number of the last packet */
-} __attribute__ ((__packed__));
+} LTTNG_PACKED;
struct lttcomm_relayd_begin_data_pending {
uint64_t session_id;
-} __attribute__ ((__packed__));
+} LTTNG_PACKED;
struct lttcomm_relayd_end_data_pending {
uint64_t session_id;
-} __attribute__ ((__packed__));
+} LTTNG_PACKED;
#endif /* _RELAYD_COMM */