Fixed layout (event packet header):
-- Magic number (CTF magic numbers: 0xC1FC1FC1 and its reverse endianness
- representation: 0xC11FFCC1) It needs to have a non-symmetric bytewise
- representation. Used to distinguish between big and little endian traces (this
- information is determined by knowing the endianness of the architecture
- reading the trace and comparing the magic number against its value and the
- reverse, 0xC11FFCC1). This magic number specifies that we use the CTF metadata
- description language described in this document. Different magic numbers
- should be used for other metadata description languages.
+- Magic number (CTF magic number: 0xC1FC1FC1 This magic number specifies
+ that we use the CTF metadata description language described in this
+ document. Different magic numbers should be used for other metadata
+ description languages.
- Trace UUID, used to ensure the event packet match the metadata used.
(note: we cannot use a metadata checksum because metadata can be appended to
while tracing is active)
5.1 Event Packet Header Fixed Layout Description
+The event packet header layout is indicated by the trace packet.header
+field. Here is an example structure type for the packet header with the
+fields typically expected:
+
struct event_packet_header {
uint32_t magic;
uint8_t trace_uuid[16];
uint32_t stream_id;
};
+trace {
+ ...
+ packet.header := struct event_packet_header;
+};
+
+If the trace_uuid is not present, no validation that the metadata
+actually corresponds to the stream is performed.
+
+If the stream_id packet header field is missing, the trace can only
+contain a single stream. Its "id" field can be left out, and its events
+don't need to declare a "stream_id" field.
+
+
5.2 Event Packet Context Description
Event packet context example. These are declared within the stream declaration
a field outside of the local static scope. The dynamic scope prefixes
are thus:
+ - Trace Packet Header: <trace.packet.header. >,
- Stream Packet Context: <stream.packet.context. >,
- Event Header: <stream.event.header. >,
- Stream Event Context: <stream.event.context. >,
The grammar representing the TSDL metadata is presented in Appendix C.
TSDL Grammar. This section presents a rather ligher reading that
-consists in examples of TSDL metadata, with template values:
+consists in examples of TSDL metadata, with template values.
+
+The stream "id" can be left out if there is only one stream in the
+trace. The event "id" field can be left out if there is only one event
+in a stream.
trace {
major = value; /* Trace format version */
minor = value;
uuid = "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"; /* Trace UUID */
- word_size = value;
+ byte_order = be OR le; /* Endianness (required) */
+ packet.header := struct {
+ uint32_t magic;
+ uint8_t trace_uuid[16];
+ uint32_t stream_id;
+ };
};
stream {