Commit | Line | Data |
---|---|---|
8b9d5b5e | 1 | |
5039b4cc MD |
2 | typealias integer { size = 32; align = 32; signed = true; } : int; |
3 | typealias integer { size = 64; align = 64; signed = true; } : long; | |
4 | typealias integer { size = 64; align = 64; } : unsigned long; | |
5 | ||
6 | enum name1 <int> { | |
8b9d5b5e MD |
7 | ZERO, |
8 | ONE, | |
9 | TWO, | |
10 | TEN = 10, | |
11 | ELEVEN, | |
12 | }; | |
13 | ||
5039b4cc | 14 | enum name2 <long> { ONE, TWO }; |
8b9d5b5e | 15 | |
5039b4cc | 16 | enum name3 <unsigned long> { ONE, TWO }; |
8b9d5b5e | 17 | |
5039b4cc | 18 | enum name4 <unsigned long> { |
8b9d5b5e MD |
19 | string = 1 ... 2, |
20 | "other string" = 3...4, | |
21 | yet_another_string, /* will be assigned to end_value2 + 1 */ | |
22 | "some other string" = 10, | |
23 | }; | |
24 | ||
5039b4cc | 25 | enum name5 <long> { "int" = 1, }; |
8b9d5b5e MD |
26 | |
27 | typealias floating_point { | |
28 | exp_dig = 8; /* sizeof(float) * CHAR_BIT - FLT_MANT_DIG */ | |
29 | mant_dig = 24; /* FLT_MANT_DIG */ | |
30 | byte_order = native; | |
31 | } : float; | |
32 | ||
33 | typealias integer { | |
34 | size = 32; | |
35 | align = 32; | |
5039b4cc | 36 | signed = false; |
8b9d5b5e MD |
37 | } : struct page *; |
38 | ||
5039b4cc MD |
39 | trace { |
40 | major = 66; | |
41 | minor = 2; | |
42 | uuid = "1123fcea-706e-11e0-a38b-f3c28a683a3d"; | |
43 | word_size = 64; | |
44 | }; | |
45 | ||
8b9d5b5e MD |
46 | stream { |
47 | typealias integer { size = 64; align = 64; signed = false; } : uint64_t; | |
48 | typealias integer { size = 16; align = 16; signed = false; } : uint16_t; | |
49 | typealias integer { size = 32; align = 32; signed = true; } : int; | |
50 | typedef int pid_t; | |
51 | ||
52 | id = 5; | |
53 | /* Type 1 - Few event IDs; Type 2 - Many event IDs. See section 6.2. */ | |
54 | event.header := struct { uint64_t timestamp; uint16_t id; }; | |
55 | event.context := struct { pid_t pid; }; | |
56 | }; | |
57 | ||
58 | struct example { | |
5039b4cc MD |
59 | /* TODO gcc bitfields not supported yet. */ |
60 | /* short a:12; | |
61 | short b:5; */ | |
8b9d5b5e MD |
62 | }; |
63 | ||
64 | struct name { | |
65 | typealias integer { size = 64; align = 64; signed = false; } : uint64_t; | |
66 | typealias integer { size = 32; align = 32; signed = false; } : uint32_t; | |
67 | typealias integer { size = 32; align = 32; signed = true; } : int32_t; | |
68 | typealias integer { size = 2; align = 8; signed = false; } : uint2_t; | |
69 | typealias integer { size = 16; align = 16; signed = true; } : short; | |
70 | typealias uint32_t : unsigned int; | |
71 | ||
72 | enum <uint2_t> { a, b, c, d } choice; | |
73 | /* Unrelated fields can be added between the variant and its tag */ | |
74 | int32_t somevalue; | |
75 | variant <choice> { | |
76 | uint32_t a; | |
77 | uint64_t b; | |
78 | short c; | |
79 | struct { | |
80 | unsigned int field1; | |
81 | uint64_t field2; | |
82 | } d; | |
83 | } s; | |
84 | }; | |
85 | ||
86 | typealias integer { | |
87 | size = 32; | |
88 | signed = false; | |
89 | align = 32; | |
90 | } : uint32_t; | |
91 | ||
92 | typealias string { encoding = UTF8; } : test; | |
93 | ||
94 | struct event_packet_header { | |
95 | typealias integer { size = 32; align = 32; signed = false; } : uint32_t; | |
96 | typealias integer { size = 8; align = 8; signed = false; } : uint8_t; | |
97 | ||
98 | uint32_t magic; | |
99 | uint8_t trace_uuid[16]; | |
100 | uint32_t stream_id; | |
101 | }; | |
102 | ||
103 | struct event_packet_context { | |
104 | typealias integer { size = 64; align = 64; signed = false; } : uint64_t; | |
105 | typealias integer { size = 32; align = 32; signed = false; } : uint32_t; | |
106 | typealias integer { size = 16; align = 16; signed = false; } : uint16_t; | |
107 | typealias integer { size = 8; align = 8; signed = false; } : uint8_t; | |
108 | ||
109 | uint64_t timestamp_begin; | |
110 | uint64_t timestamp_end; | |
111 | uint32_t checksum; | |
112 | uint32_t stream_packet_count; | |
113 | uint32_t events_discarded; | |
114 | uint32_t cpu_id; | |
115 | uint16_t content_size; | |
116 | uint16_t packet_size; | |
117 | uint8_t stream_packet_count_bits; /* Significant counter bits */ | |
118 | uint8_t compression_scheme; | |
119 | uint8_t encryption_scheme; | |
120 | uint8_t checksum_scheme; | |
121 | }; | |
122 | ||
123 | struct event_header_1 { | |
124 | typealias integer { size = 64; align = 64; signed = false; } : uint64_t; | |
125 | typealias integer { size = 32; align = 32; signed = false; } : uint32_t; | |
126 | typealias integer { size = 5; align = 1; signed = false; } : uint5_t; | |
127 | typealias integer { size = 27; align = 1; signed = false; } : uint27_t; | |
128 | ||
129 | /* | |
130 | * id: range: 0 - 30. | |
131 | * id 31 is reserved to indicate an extended header. | |
132 | */ | |
133 | enum <uint5_t> { compact = 0 ... 30, extended = 31 } id; | |
134 | variant <id> { | |
135 | struct { | |
136 | uint27_t timestamp; | |
137 | } compact; | |
138 | struct { | |
139 | uint32_t id; /* 32-bit event IDs */ | |
140 | uint64_t timestamp; /* 64-bit timestamps */ | |
141 | } extended; | |
142 | } v; | |
143 | }; | |
144 | ||
145 | struct event_header_2 { | |
146 | typealias integer { size = 64; align = 64; signed = false; } : uint64_t; | |
147 | typealias integer { size = 32; align = 32; signed = false; } : uint32_t; | |
148 | typealias integer { size = 16; align = 16; signed = false; } : uint16_t; | |
149 | ||
150 | /* | |
151 | * id: range: 0 - 65534. | |
152 | * id 65535 is reserved to indicate an extended header. | |
153 | */ | |
154 | enum <uint16_t> { compact = 0 ... 65534, extended = 65535 } id; | |
155 | variant <id> { | |
156 | struct { | |
157 | uint32_t timestamp; | |
158 | } compact; | |
159 | struct { | |
160 | uint32_t id; /* 32-bit event IDs */ | |
161 | uint64_t timestamp; /* 64-bit timestamps */ | |
162 | } extended; | |
163 | } v; | |
164 | }; | |
165 | ||
64b829c0 MD |
166 | typedef int rootscopetest; |
167 | ||
5039b4cc MD |
168 | /* parser level only: event { a.b.c.d.e = f.g.h->i->j; }; */ |
169 | ||
170 | event { | |
171 | name = test_event; | |
172 | id = 0; | |
173 | stream_id = 5; | |
174 | context := struct {}; | |
175 | payload := struct {}; | |
176 | }; | |
48a01768 | 177 | |
0009a725 | 178 | typealias integer { size = 32; align = 32; signed = false; } : unsigned long long *; |