explicitly. Alignment values must be power of two. Compound types are
aligned as specified in their individual specification.
+The base offset used for field alignment is the start of the packet
+containing the field. For instance, a field aligned on 32-bit needs to
+be at an offset multiple of 32-bit from the start of the packet that
+contains it.
+
TSDL meta-data attribute representation of a specific alignment:
align = value; /* value in bits */
4.1.3 Byte order
-By default, the native endianness of the source architecture is used.
-Byte order can be overridden for a basic type by specifying a "byte_order"
-attribute. Typical use-case is to specify the network byte order (big endian:
-"be") to save data captured from the network into the trace without conversion.
-If not specified, the byte order is native.
+By default, byte order of a basic type is the byte order described in
+the trace description. It can be overridden by specifying a
+"byte_order" attribute for a basic type. Typical use-case is to specify
+the network byte order (big endian: "be") to save data captured from the
+network into the trace without conversion.
TSDL meta-data representation:
byte_order = native OR network OR be OR le; /* network and be are aliases */
+The "native" keyword selects the byte order described in the trace
+description. The "network" byte order is an alias for big endian.
+
Even though the trace description section is not per se a type, for sake
-of clarity, it should be noted that native and network byte orders are
-only allowed within type declaration. The byte_order specified in the
-trace description section only accepts be OR le values.
+of clarity, it should be noted that "native" and "network" byte orders
+are only allowed within type declaration. The byte_order specified in
+the trace description section only accepts "be" or "le" values.
4.1.4 Size
type (for compatibility with C99). The "int" type must be previously
declared. E.g.:
-typealias integer { size = 32; align = 32; signed = true } := int;
+typealias integer { size = 32; align = 32; signed = true; } := int;
enum {
...
The event packet header consists of two parts: the "event packet header"
is the same for all streams of a trace. The second part, the "event
packet context", is described on a per-stream basis. Both are described
-in the TSDL meta-data. The packets are aligned on architecture-page-sized
-addresses.
+in the TSDL meta-data.
Event packet header (all fields are optional, specified by TSDL meta-data):
Types uintX_t represent an X-bit unsigned integer, as declared with
either:
- typealias integer { size = X; align = X; signed = false } := uintX_t;
+ typealias integer { size = X; align = X; signed = false; } := uintX_t;
or
- typealias integer { size = X; align = 1; signed = false } := uintX_t;
+ typealias integer { size = X; align = 1; signed = false; } := uintX_t;
6.1.1 Type 1 - Few event IDs