X-Git-Url: http://git.efficios.com/?p=lttng-tools.git;a=blobdiff_plain;f=include%2Flttng%2Flttng.h;h=5a826aad78bd3262063de1f14011c5d06f01a5c4;hp=e21b479777b0760d028876218cd12e63decb992f;hb=a9e87764ffd56e6ab80432395223c1a5d7f7a8ac;hpb=bfdaf0fd64711ecd805ad13d5158269f0030c496 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