X-Git-Url: http://git.efficios.com/?p=ctf.git;a=blobdiff_plain;f=common-trace-format-proposal.txt;h=2ae5ac282dee20c88e3428f5b03080e030ce2e09;hp=e8ee258137ce7e0b97fc58529736570dc2964b20;hb=ce2228dad513904652a2c0a6487a4cddbbe60d37;hpb=3fde5da106cc1adbb564ceaf283701d796355ede diff --git a/common-trace-format-proposal.txt b/common-trace-format-proposal.txt index e8ee258..2ae5ac2 100644 --- a/common-trace-format-proposal.txt +++ b/common-trace-format-proposal.txt @@ -193,6 +193,8 @@ TSDL meta-data representation: /* based used for pretty-printing output, default: decimal. */ base = decimal OR dec OR OR d OR i OR u OR 10 OR hexadecimal OR hex OR x OR X OR p OR 16 OR octal OR oct OR o OR 8 OR binary OR b OR 2; + /* character encoding, default: none */ + encoding = none or UTF8 or ASCII; } Example of type inheritance (creation of a uint32_t named type): @@ -211,6 +213,17 @@ typealias integer { align = 1; } := int5_t; +The character encoding field can be used to specify that the integer +must be printed as a text character when read. e.g.: + +typealias integer { + size = 8; + align = 8; + signed = false; + encoding = UTF8; +} := utf_char; + + 4.1.6 GNU/C bitfields The GNU/C bitfields follow closely the integer representation, with a @@ -220,7 +233,7 @@ defined by the size of the type "unit_type". TSDL meta-data representation: - unit_type name:size: + unit_type name:size; As an example, the following structure declared in C compiled by GCC: @@ -763,7 +776,7 @@ struct event_header_1 { uint64_t timestamp; /* 64-bit timestamps */ } extended; } v; -}; +} align(32); /* or align(8) */ 6.1.2 Type 2 - Many event IDs @@ -791,7 +804,7 @@ struct event_header_2 { uint64_t timestamp; /* 64-bit timestamps */ } extended; } v; -}; +} align(16); /* or align(8) */ 6.2 Event Context @@ -887,11 +900,11 @@ endianness of the architecture by trying to read the CTF magic number and its counterpart in reversed endianness. The events within the meta-data stream have no event header nor event context. Each event only contains a "sequence" payload, which is a sequence of bits using the -"trace.packet.header.content_size" field as a placeholder for its -length. The formatting of this sequence of bits is a plain-text -representation of the TSDL description. Each meta-data packet start with -a special packet header, specific to the meta-data stream, which -contains, exactly: +"trace.packet.header.content_size" field as a placeholder for its length +(the packet header size should be substracted). The formatting of this +sequence of bits is a plain-text representation of the TSDL description. +Each meta-data packet start with a special packet header, specific to +the meta-data stream, which contains, exactly: struct metadata_packet_header { uint32_t magic; /* 0x75D11D57 */ @@ -1455,8 +1468,8 @@ struct-or-variant-declaration-list: struct-or-variant-declaration: specifier-qualifier-list struct-or-variant-declarator-list ; declaration-specifiers-opt storage-class-specifier declaration-specifiers-opt declarator-list ; - typealias declaration-specifiers abstract-declarator-list := declaration-specifiers abstract-declarator-list ; - typealias declaration-specifiers abstract-declarator-list := declarator-list ; + typealias declaration-specifiers abstract-declarator-list type-assignment-operator declaration-specifiers abstract-declarator-list ; + typealias declaration-specifiers abstract-declarator-list type-assignment-operator declarator-list ; specifier-qualifier-list: type-specifier specifier-qualifier-list-opt @@ -1490,8 +1503,8 @@ enumerator-list: enumerator: enumeration-constant - enumeration-constant = unary-expression - enumeration-constant = constant-expression-range + enumeration-constant assignment-operator unary-expression + enumeration-constant assignment-operator constant-expression-range type-qualifier: const @@ -1530,21 +1543,22 @@ ctf-specifier: event { ctf-assignment-expression-list-opt } stream { ctf-assignment-expression-list-opt } trace { ctf-assignment-expression-list-opt } - typealias declaration-specifiers abstract-declarator-list := declaration-specifiers abstract-declarator-list ; - typealias declaration-specifiers abstract-declarator-list := declarator-list ; + typealias declaration-specifiers abstract-declarator-list type-assignment-operator declaration-specifiers abstract-declarator-list + typealias declaration-specifiers abstract-declarator-list type-assignment-operator declarator-list ctf-type-specifier: floating_point { ctf-assignment-expression-list-opt } integer { ctf-assignment-expression-list-opt } string { ctf-assignment-expression-list-opt } + string ctf-assignment-expression-list: - ctf-assignment-expression - ctf-assignment-expression-list ; ctf-assignment-expression + ctf-assignment-expression ; + ctf-assignment-expression-list ctf-assignment-expression ; ctf-assignment-expression: unary-expression assignment-operator unary-expression unary-expression type-assignment-operator type-specifier declaration-specifiers-opt storage-class-specifier declaration-specifiers-opt declarator-list - typealias declaration-specifiers abstract-declarator-list := declaration-specifiers abstract-declarator-list - typealias declaration-specifiers abstract-declarator-list := declarator-list + typealias declaration-specifiers abstract-declarator-list type-assignment-operator declaration-specifiers abstract-declarator-list + typealias declaration-specifiers abstract-declarator-list type-assignment-operator declarator-list