From mboxrd@z Thu Jan 1 00:00:00 1970 From: mathieu.desnoyers@efficios.com (Mathieu Desnoyers) Date: Thu, 18 Apr 2019 15:45:26 -0400 (EDT) Subject: [lttng-dev] [RFC PATCH lttng-tools 13/18] Add serialized versions of lttng_event structs In-Reply-To: <20190418161850.1536-14-ylamarre@efficios.com> References: <20190418161850.1536-1-ylamarre@efficios.com> <20190418161850.1536-14-ylamarre@efficios.com> Message-ID: <1616121401.1570.1555616726710.JavaMail.zimbra@efficios.com> ----- On Apr 18, 2019, at 12:18 PM, Yannick Lamarre ylamarre at efficios.com wrote: > Serialized versions of lttng_event, lttng_event_function_attr and > lttng_event_probe_attr are packed structures to be used in communication > protocols for consistent sizes across platforms. The serialized versions are > stripped of pointers and padding. > > Pointers are removed since their size can vary on platforms supporting > variable sized registers (x86-64). Same question about explanation as prior commits. > Padding is also removed since it defeats the purpose of a packed struct. Same question about documenting how the protocol is expected to be extended as prior commits. Thanks, Mathieu > > Signed-off-by: Yannick Lamarre > --- > include/lttng/event-internal.h | 38 ++++++++++++++++++++++++++++++++++++++ > 1 file changed, 38 insertions(+) > > diff --git a/include/lttng/event-internal.h b/include/lttng/event-internal.h > index 09b4d232..a43007de 100644 > --- a/include/lttng/event-internal.h > +++ b/include/lttng/event-internal.h > @@ -27,6 +27,44 @@ > > struct lttng_userspace_probe_location; > > +struct lttng_event_probe_attr_serialized { > + uint64_t addr; > + > + uint64_t offset; > + char symbol_name[LTTNG_SYMBOL_NAME_LEN]; > +} LTTNG_PACKED; > + > +struct lttng_event_function_attr_serialized { > + char symbol_name[LTTNG_SYMBOL_NAME_LEN]; > +} LTTNG_PACKED; > + > +struct lttng_event_serialized { > + uint32_t type; /* enum lttng_event_type */ > + > + char name[LTTNG_SYMBOL_NAME_LEN]; > + > + uint32_t loglevel_type; /* enum lttng_loglevel_type */ > + > + int loglevel; > + > + int32_t enabled; /* Does not apply: -1 */ > + > + pid_t pid; > + > + unsigned char filter; /* filter enabled ? */ > + > + unsigned char exclusion; /* exclusions added ? */ > + > + /* Event flag, from 2.6 and above. */ > + uint32_t flags; /* enum lttng_event_flag */ > + > + /* Per event type configuration */ > + union { > + struct lttng_event_probe_attr_serialized probe; > + struct lttng_event_function_attr_serialized ftrace; > + } attr; > +} LTTNG_PACKED; > + > struct lttng_event_perf_counter_ctx_serialized { > uint32_t type; > uint64_t config; > -- > 2.11.0 > > _______________________________________________ > lttng-dev mailing list > lttng-dev at lists.lttng.org > https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev -- Mathieu Desnoyers EfficiOS Inc. http://www.efficios.com