From a9e87764ffd56e6ab80432395223c1a5d7f7a8ac Mon Sep 17 00:00:00 2001 From: David Goulet Date: Thu, 13 Dec 2012 15:15:10 -0500 Subject: [PATCH] Add LTTNG_PACKED macro This adds the macro and set it on all lttng.h structure. Also, replace the already packed relayd structure with the macro. Signed-off-by: David Goulet --- include/lttng/lttng.h | 28 ++++++++++++++++------------ src/common/sessiond-comm/relayd.h | 26 +++++++++++++------------- 2 files changed, 29 insertions(+), 25 deletions(-) diff --git a/include/lttng/lttng.h b/include/lttng/lttng.h index e21b47977..5a826aad7 100644 --- a/include/lttng/lttng.h +++ b/include/lttng/lttng.h @@ -33,6 +33,10 @@ extern "C" { #endif +#ifndef LTTNG_PACKED +#define LTTNG_PACKED __attribute__((__packed__)) +#endif + /* * Event symbol length. Copied from LTTng kernel ABI. */ @@ -156,7 +160,7 @@ struct lttng_domain { char exec_name[NAME_MAX]; char padding[LTTNG_DOMAIN_PADDING2]; } attr; -}; +} LTTNG_PACKED; /* * Perf counter attributes @@ -170,7 +174,7 @@ struct lttng_event_perf_counter_ctx { char name[LTTNG_SYMBOL_NAME_LEN]; char padding[LTTNG_PERF_EVENT_PADDING1]; -}; +} LTTNG_PACKED; /* * Event/channel context @@ -187,7 +191,7 @@ struct lttng_event_context { struct lttng_event_perf_counter_ctx perf_counter; char padding[LTTNG_EVENT_CONTEXT_PADDING2]; } u; -}; +} LTTNG_PACKED; /* * Event probe. @@ -204,7 +208,7 @@ struct lttng_event_probe_attr { char symbol_name[LTTNG_SYMBOL_NAME_LEN]; char padding[LTTNG_EVENT_PROBE_PADDING1]; -}; +} LTTNG_PACKED; /* * Function tracer @@ -216,7 +220,7 @@ struct lttng_event_function_attr { char symbol_name[LTTNG_SYMBOL_NAME_LEN]; char padding[LTTNG_EVENT_FUNCTION_PADDING1]; -}; +} LTTNG_PACKED; /* * Generic lttng event @@ -245,7 +249,7 @@ struct lttng_event { char padding[LTTNG_EVENT_PADDING2]; } attr; -}; +} LTTNG_PACKED; enum lttng_event_field_type { LTTNG_EVENT_FIELD_OTHER = 0, @@ -262,7 +266,7 @@ struct lttng_event_field { char padding[LTTNG_EVENT_FIELD_PADDING]; struct lttng_event event; int nowrite; -}; +} LTTNG_PACKED; /* * Tracer channel attributes. For both kernel and user-space. @@ -279,7 +283,7 @@ struct lttng_channel_attr { enum lttng_event_output output; /* splice, mmap */ char padding[LTTNG_CHANNEL_ATTR_PADDING1]; -}; +} LTTNG_PACKED; /* * Channel information structure. For both kernel and user-space. @@ -293,14 +297,14 @@ struct lttng_channel { 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. @@ -319,7 +323,7 @@ struct lttng_session { uint32_t enabled; /* enabled/started: 1, disabled/stopped: 0 */ char padding[LTTNG_SESSION_PADDING1]; -}; +} LTTNG_PACKED; /* * Handle used as a context for commands. @@ -332,7 +336,7 @@ struct lttng_handle { struct lttng_domain domain; char padding[LTTNG_HANDLE_PADDING1]; -}; +} LTTNG_PACKED; /* * Public LTTng control API diff --git a/src/common/sessiond-comm/relayd.h b/src/common/sessiond-comm/relayd.h index 525ec1a5c..03460de38 100644 --- a/src/common/sessiond-comm/relayd.h +++ b/src/common/sessiond-comm/relayd.h @@ -39,7 +39,7 @@ struct lttcomm_relayd_hdr { 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. @@ -51,7 +51,7 @@ struct lttcomm_relayd_data_hdr { 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. @@ -59,7 +59,7 @@ struct lttcomm_relayd_data_hdr { 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. @@ -67,7 +67,7 @@ struct lttcomm_relayd_status_session { 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. @@ -75,21 +75,21 @@ struct lttcomm_relayd_add_stream { 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. @@ -97,7 +97,7 @@ struct lttcomm_relayd_update_sync_info { struct lttcomm_relayd_version { uint32_t major; uint32_t minor; -} __attribute__ ((__packed__)); +} LTTNG_PACKED; /* * Metadata payload used when metadata command is sent. @@ -106,7 +106,7 @@ struct lttcomm_relayd_metadata_payload { 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. @@ -114,7 +114,7 @@ struct lttcomm_relayd_metadata_payload { 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 @@ -123,14 +123,14 @@ struct lttcomm_relayd_close_stream { 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 */ -- 2.34.1