X-Git-Url: http://git.efficios.com/?p=ctf.git;a=blobdiff_plain;f=common-trace-format-specification.txt;h=482731c08c551319f0c039621dcc63f5ef49bc5d;hp=1cd3c3dc3227bd57e634805c37127dcc70019a1b;hb=96bf5a3bb7c85c2ae66011a0f94409fd34d9eee7;hpb=f3afd1c7f3d2d76154334f2550342d9e4c7eff56 diff --git a/common-trace-format-specification.txt b/common-trace-format-specification.txt index 1cd3c3d..482731c 100644 --- a/common-trace-format-specification.txt +++ b/common-trace-format-specification.txt @@ -165,22 +165,35 @@ by default. It is however recommended to always specify the alignment 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. + 4.1.4 Size Type size, in bits, for integers and floats is that returned by "sizeof()" in C @@ -380,7 +393,7 @@ Enumerations omitting the container type ": integer_type" use the "int" 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 { ... @@ -674,8 +687,7 @@ Strings are always aligned on byte size. 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): @@ -822,11 +834,11 @@ array is then set to 1. 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