X-Git-Url: http://git.efficios.com/?p=ctf.git;a=blobdiff_plain;f=common-trace-format-proposal.txt;h=d1136a2cd3a08d2de52819c3efced30b9778f252;hp=8e79b738f62f3e0ae64107daea7da72c4e620d26;hb=d285084fcca37268ac3e120bdcdd1853b0a893c8;hpb=cfc73fdcfb61cbfea3831c79f602825f87865878 diff --git a/common-trace-format-proposal.txt b/common-trace-format-proposal.txt index 8e79b73..d1136a2 100644 --- a/common-trace-format-proposal.txt +++ b/common-trace-format-proposal.txt @@ -591,7 +591,7 @@ struct event_packet_context { uint8_t stream_packet_count_bits; /* Significant counter bits */ uint8_t compression_scheme; uint8_t encryption_scheme; - uint8_t checksum; + uint8_t checksum_scheme; }; @@ -607,10 +607,11 @@ The overall structure of an event is: 6.1 Lexical Scope -The lexical scope of each structure (stream packet context, header, stream event -context, event context and payload) is extended in the following way: lower -levels (e.g. 3) can refer to fields defined in prior levels (e.g. 2 and 1). The -field in the closest level has priority in case of field name conflict. +For variant tag definition only, the lexical scope of each structure (stream +packet context, header, stream event context, event context and payload) is +extended in the following way: lower levels (e.g. 3) can refer to fields defined +in prior levels (e.g. 2 and 1). The field in the closest level has priority in +case of field name conflict. This allows, for instance, the event context to define a variant refering to the "id" field of the event header as selector. @@ -774,6 +775,11 @@ can be surrounded by prefix/postfix. Text contained within "/*" and "*/", as well as within "//" and end of line, are treated as comments. Boolean values can be represented as true, TRUE, or 1 for true, and false, FALSE, or 0 for false. +Each of "trace", "stream", "event", "struct" and "variant" have their own +nestable declaration scope, within which types can be declared using "typedef" +and "typealias". An innermost declaration scope can refer to type declared +within its container lexical scope prior to the innermost declaration scope. + The grammar representing the CTF metadata is presented in Appendix C. CTF Metadata Grammar. @@ -1165,11 +1171,11 @@ constant-expression-range: 2.2) Declarations: declaration: - declaration-specifiers declarator-list-opt ; + declaration-specifiers ; + declaration-specifiers storage-class-specifier declaration-specifiers declarator-list ; ctf-specifier ; declaration-specifiers: - storage-class-specifier declaration-specifiers-opt type-specifier declaration-specifiers-opt type-qualifier declaration-specifiers-opt @@ -1177,6 +1183,10 @@ declarator-list: declarator declarator-list , declarator +abstract-declarator-list: + abstract-declarator + abstract-declarator-list , abstract-declarator + storage-class-specifier: typedef @@ -1199,7 +1209,7 @@ type-specifier: ctf-type-specifier struct-specifier: - struct identifier-opt { struct-or-variant-declaration-list } + struct identifier-opt { struct-or-variant-declaration-list-opt } struct identifier struct-or-variant-declaration-list: @@ -1208,6 +1218,9 @@ struct-or-variant-declaration-list: struct-or-variant-declaration: specifier-qualifier-list struct-or-variant-declarator-list ; + declaration-specifiers storage-class-specifier declaration-specifiers declarator-list ; + typealias declaration-specifiers abstract-declarator-list : declaration-specifiers abstract-declarator-list ; + typealias declaration-specifiers abstract-declarator-list : declarator-list ; specifier-qualifier-list: type-specifier specifier-qualifier-list-opt @@ -1260,9 +1273,19 @@ direct-declarator: direct-declarator [ type-specifier ] direct-declarator [ constant-expression ] +abstract-declarator: + pointer-opt direct-abstract-declarator + +direct-abstract-declarator: + identifier-opt + ( abstract-declarator ) + direct-abstract-declarator [ type-specifier ] + direct-abstract-declarator [ constant-expression ] + direct-abstract-declarator [ ] + pointer: - type-qualifier-list-opt - type-qualifier-list-opt pointer + * type-qualifier-list-opt + * type-qualifier-list-opt pointer type-qualifier-list: type-qualifier @@ -1277,6 +1300,8 @@ 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 ; ctf-type-specifier: floating_point { ctf-assignment-expression-list-opt } @@ -1290,3 +1315,6 @@ ctf-assignment-expression-list: ctf-assignment-expression: unary-expression assignment-operator unary-expression unary-expression type-assignment-operator type-specifier + declaration-specifiers storage-class-specifier declaration-specifiers declarator-list + typealias declaration-specifiers abstract-declarator-list : declaration-specifiers abstract-declarator-list + typealias declaration-specifiers abstract-declarator-list : declarator-list