1 /*
2 * Copyright (C) 2023 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17 #ifndef INCLUDE_PERFETTO_PUBLIC_PROTOS_CONFIG_TRACE_CONFIG_PZC_H_
18 #define INCLUDE_PERFETTO_PUBLIC_PROTOS_CONFIG_TRACE_CONFIG_PZC_H_
19
20 #include <stdbool.h>
21 #include <stdint.h>
22
23 #include "perfetto/public/pb_macros.h"
24
25 #include "perfetto/public/protos/common/builtin_clock.pzc.h"
26
27 PERFETTO_PB_MSG_DECL(perfetto_protos_DataSourceConfig);
28 PERFETTO_PB_MSG_DECL(perfetto_protos_TraceConfig_AndroidReportConfig);
29 PERFETTO_PB_MSG_DECL(perfetto_protos_TraceConfig_BufferConfig);
30 PERFETTO_PB_MSG_DECL(perfetto_protos_TraceConfig_BuiltinDataSource);
31 PERFETTO_PB_MSG_DECL(perfetto_protos_TraceConfig_CmdTraceStartDelay);
32 PERFETTO_PB_MSG_DECL(perfetto_protos_TraceConfig_DataSource);
33 PERFETTO_PB_MSG_DECL(perfetto_protos_TraceConfig_GuardrailOverrides);
34 PERFETTO_PB_MSG_DECL(perfetto_protos_TraceConfig_IncidentReportConfig);
35 PERFETTO_PB_MSG_DECL(perfetto_protos_TraceConfig_IncrementalStateConfig);
36 PERFETTO_PB_MSG_DECL(perfetto_protos_TraceConfig_ProducerConfig);
37 PERFETTO_PB_MSG_DECL(perfetto_protos_TraceConfig_StatsdMetadata);
38 PERFETTO_PB_MSG_DECL(perfetto_protos_TraceConfig_TraceFilter);
39 PERFETTO_PB_MSG_DECL(perfetto_protos_TraceConfig_TriggerConfig);
40 PERFETTO_PB_MSG_DECL(perfetto_protos_TraceConfig_TriggerConfig_Trigger);
41
PERFETTO_PB_ENUM_IN_MSG(perfetto_protos_TraceConfig,LockdownModeOperation)42 PERFETTO_PB_ENUM_IN_MSG(perfetto_protos_TraceConfig, LockdownModeOperation){
43 PERFETTO_PB_ENUM_IN_MSG_ENTRY(perfetto_protos_TraceConfig,
44 LOCKDOWN_UNCHANGED) = 0,
45 PERFETTO_PB_ENUM_IN_MSG_ENTRY(perfetto_protos_TraceConfig,
46 LOCKDOWN_CLEAR) = 1,
47 PERFETTO_PB_ENUM_IN_MSG_ENTRY(perfetto_protos_TraceConfig,
48 LOCKDOWN_SET) = 2,
49 };
50
PERFETTO_PB_ENUM_IN_MSG(perfetto_protos_TraceConfig,CompressionType)51 PERFETTO_PB_ENUM_IN_MSG(perfetto_protos_TraceConfig, CompressionType){
52 PERFETTO_PB_ENUM_IN_MSG_ENTRY(perfetto_protos_TraceConfig,
53 COMPRESSION_TYPE_UNSPECIFIED) = 0,
54 PERFETTO_PB_ENUM_IN_MSG_ENTRY(perfetto_protos_TraceConfig,
55 COMPRESSION_TYPE_DEFLATE) = 1,
56 };
57
PERFETTO_PB_ENUM_IN_MSG(perfetto_protos_TraceConfig,StatsdLogging)58 PERFETTO_PB_ENUM_IN_MSG(perfetto_protos_TraceConfig, StatsdLogging){
59 PERFETTO_PB_ENUM_IN_MSG_ENTRY(perfetto_protos_TraceConfig,
60 STATSD_LOGGING_UNSPECIFIED) = 0,
61 PERFETTO_PB_ENUM_IN_MSG_ENTRY(perfetto_protos_TraceConfig,
62 STATSD_LOGGING_ENABLED) = 1,
63 PERFETTO_PB_ENUM_IN_MSG_ENTRY(perfetto_protos_TraceConfig,
64 STATSD_LOGGING_DISABLED) = 2,
65 };
66
PERFETTO_PB_ENUM_IN_MSG(perfetto_protos_TraceConfig_TriggerConfig,TriggerMode)67 PERFETTO_PB_ENUM_IN_MSG(perfetto_protos_TraceConfig_TriggerConfig, TriggerMode){
68 PERFETTO_PB_ENUM_IN_MSG_ENTRY(perfetto_protos_TraceConfig_TriggerConfig,
69 UNSPECIFIED) = 0,
70 PERFETTO_PB_ENUM_IN_MSG_ENTRY(perfetto_protos_TraceConfig_TriggerConfig,
71 START_TRACING) = 1,
72 PERFETTO_PB_ENUM_IN_MSG_ENTRY(perfetto_protos_TraceConfig_TriggerConfig,
73 STOP_TRACING) = 2,
74 };
75
PERFETTO_PB_ENUM_IN_MSG(perfetto_protos_TraceConfig_BufferConfig,FillPolicy)76 PERFETTO_PB_ENUM_IN_MSG(perfetto_protos_TraceConfig_BufferConfig, FillPolicy){
77 PERFETTO_PB_ENUM_IN_MSG_ENTRY(perfetto_protos_TraceConfig_BufferConfig,
78 UNSPECIFIED) = 0,
79 PERFETTO_PB_ENUM_IN_MSG_ENTRY(perfetto_protos_TraceConfig_BufferConfig,
80 RING_BUFFER) = 1,
81 PERFETTO_PB_ENUM_IN_MSG_ENTRY(perfetto_protos_TraceConfig_BufferConfig,
82 DISCARD) = 2,
83 };
84
85 PERFETTO_PB_MSG(perfetto_protos_TraceConfig);
86 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig,
87 MSG,
88 perfetto_protos_TraceConfig_BufferConfig,
89 buffers,
90 1);
91 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig,
92 MSG,
93 perfetto_protos_TraceConfig_DataSource,
94 data_sources,
95 2);
96 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig,
97 MSG,
98 perfetto_protos_TraceConfig_BuiltinDataSource,
99 builtin_data_sources,
100 20);
101 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig,
102 VARINT,
103 uint32_t,
104 duration_ms,
105 3);
106 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig,
107 VARINT,
108 bool,
109 prefer_suspend_clock_for_duration,
110 36);
111 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig,
112 VARINT,
113 bool,
114 enable_extra_guardrails,
115 4);
116 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig,
117 VARINT,
118 enum perfetto_protos_TraceConfig_LockdownModeOperation,
119 lockdown_mode,
120 5);
121 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig,
122 MSG,
123 perfetto_protos_TraceConfig_ProducerConfig,
124 producers,
125 6);
126 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig,
127 MSG,
128 perfetto_protos_TraceConfig_StatsdMetadata,
129 statsd_metadata,
130 7);
131 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig,
132 VARINT,
133 bool,
134 write_into_file,
135 8);
136 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig,
137 STRING,
138 const char*,
139 output_path,
140 29);
141 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig,
142 VARINT,
143 uint32_t,
144 file_write_period_ms,
145 9);
146 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig,
147 VARINT,
148 uint64_t,
149 max_file_size_bytes,
150 10);
151 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig,
152 MSG,
153 perfetto_protos_TraceConfig_GuardrailOverrides,
154 guardrail_overrides,
155 11);
156 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig,
157 VARINT,
158 bool,
159 deferred_start,
160 12);
161 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig,
162 VARINT,
163 uint32_t,
164 flush_period_ms,
165 13);
166 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig,
167 VARINT,
168 uint32_t,
169 flush_timeout_ms,
170 14);
171 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig,
172 VARINT,
173 uint32_t,
174 data_source_stop_timeout_ms,
175 23);
176 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig,
177 VARINT,
178 bool,
179 notify_traceur,
180 16);
181 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig,
182 VARINT,
183 int32_t,
184 bugreport_score,
185 30);
186 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig,
187 MSG,
188 perfetto_protos_TraceConfig_TriggerConfig,
189 trigger_config,
190 17);
191 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig,
192 STRING,
193 const char*,
194 activate_triggers,
195 18);
196 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig,
197 MSG,
198 perfetto_protos_TraceConfig_IncrementalStateConfig,
199 incremental_state_config,
200 21);
201 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig,
202 VARINT,
203 bool,
204 allow_user_build_tracing,
205 19);
206 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig,
207 STRING,
208 const char*,
209 unique_session_name,
210 22);
211 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig,
212 VARINT,
213 enum perfetto_protos_TraceConfig_CompressionType,
214 compression_type,
215 24);
216 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig,
217 MSG,
218 perfetto_protos_TraceConfig_IncidentReportConfig,
219 incident_report_config,
220 25);
221 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig,
222 VARINT,
223 enum perfetto_protos_TraceConfig_StatsdLogging,
224 statsd_logging,
225 31);
226 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig,
227 VARINT,
228 int64_t,
229 trace_uuid_msb,
230 27);
231 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig,
232 VARINT,
233 int64_t,
234 trace_uuid_lsb,
235 28);
236 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig,
237 MSG,
238 perfetto_protos_TraceConfig_TraceFilter,
239 trace_filter,
240 33);
241 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig,
242 MSG,
243 perfetto_protos_TraceConfig_AndroidReportConfig,
244 android_report_config,
245 34);
246 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig,
247 MSG,
248 perfetto_protos_TraceConfig_CmdTraceStartDelay,
249 cmd_trace_start_delay,
250 35);
251
252 PERFETTO_PB_MSG(perfetto_protos_TraceConfig_CmdTraceStartDelay);
253 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig_CmdTraceStartDelay,
254 VARINT,
255 uint32_t,
256 min_delay_ms,
257 1);
258 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig_CmdTraceStartDelay,
259 VARINT,
260 uint32_t,
261 max_delay_ms,
262 2);
263
264 PERFETTO_PB_MSG(perfetto_protos_TraceConfig_AndroidReportConfig);
265 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig_AndroidReportConfig,
266 STRING,
267 const char*,
268 reporter_service_package,
269 1);
270 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig_AndroidReportConfig,
271 STRING,
272 const char*,
273 reporter_service_class,
274 2);
275 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig_AndroidReportConfig,
276 VARINT,
277 bool,
278 skip_report,
279 3);
280 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig_AndroidReportConfig,
281 VARINT,
282 bool,
283 use_pipe_in_framework_for_testing,
284 4);
285
286 PERFETTO_PB_MSG(perfetto_protos_TraceConfig_TraceFilter);
287 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig_TraceFilter,
288 STRING,
289 const char*,
290 bytecode,
291 1);
292
293 PERFETTO_PB_MSG(perfetto_protos_TraceConfig_IncidentReportConfig);
294 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig_IncidentReportConfig,
295 STRING,
296 const char*,
297 destination_package,
298 1);
299 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig_IncidentReportConfig,
300 STRING,
301 const char*,
302 destination_class,
303 2);
304 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig_IncidentReportConfig,
305 VARINT,
306 int32_t,
307 privacy_level,
308 3);
309 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig_IncidentReportConfig,
310 VARINT,
311 bool,
312 skip_incidentd,
313 5);
314 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig_IncidentReportConfig,
315 VARINT,
316 bool,
317 skip_dropbox,
318 4);
319
320 PERFETTO_PB_MSG(perfetto_protos_TraceConfig_IncrementalStateConfig);
321 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig_IncrementalStateConfig,
322 VARINT,
323 uint32_t,
324 clear_period_ms,
325 1);
326
327 PERFETTO_PB_MSG(perfetto_protos_TraceConfig_TriggerConfig);
328 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig_TriggerConfig,
329 VARINT,
330 enum perfetto_protos_TraceConfig_TriggerConfig_TriggerMode,
331 trigger_mode,
332 1);
333 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig_TriggerConfig,
334 MSG,
335 perfetto_protos_TraceConfig_TriggerConfig_Trigger,
336 triggers,
337 2);
338 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig_TriggerConfig,
339 VARINT,
340 uint32_t,
341 trigger_timeout_ms,
342 3);
343
344 PERFETTO_PB_MSG(perfetto_protos_TraceConfig_TriggerConfig_Trigger);
345 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig_TriggerConfig_Trigger,
346 STRING,
347 const char*,
348 name,
349 1);
350 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig_TriggerConfig_Trigger,
351 STRING,
352 const char*,
353 producer_name_regex,
354 2);
355 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig_TriggerConfig_Trigger,
356 VARINT,
357 uint32_t,
358 stop_delay_ms,
359 3);
360 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig_TriggerConfig_Trigger,
361 VARINT,
362 uint32_t,
363 max_per_24_h,
364 4);
365 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig_TriggerConfig_Trigger,
366 FIXED64,
367 double,
368 skip_probability,
369 5);
370
371 PERFETTO_PB_MSG(perfetto_protos_TraceConfig_GuardrailOverrides);
372 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig_GuardrailOverrides,
373 VARINT,
374 uint64_t,
375 max_upload_per_day_bytes,
376 1);
377 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig_GuardrailOverrides,
378 VARINT,
379 uint32_t,
380 max_tracing_buffer_size_kb,
381 2);
382
383 PERFETTO_PB_MSG(perfetto_protos_TraceConfig_StatsdMetadata);
384 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig_StatsdMetadata,
385 VARINT,
386 int64_t,
387 triggering_alert_id,
388 1);
389 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig_StatsdMetadata,
390 VARINT,
391 int32_t,
392 triggering_config_uid,
393 2);
394 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig_StatsdMetadata,
395 VARINT,
396 int64_t,
397 triggering_config_id,
398 3);
399 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig_StatsdMetadata,
400 VARINT,
401 int64_t,
402 triggering_subscription_id,
403 4);
404
405 PERFETTO_PB_MSG(perfetto_protos_TraceConfig_ProducerConfig);
406 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig_ProducerConfig,
407 STRING,
408 const char*,
409 producer_name,
410 1);
411 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig_ProducerConfig,
412 VARINT,
413 uint32_t,
414 shm_size_kb,
415 2);
416 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig_ProducerConfig,
417 VARINT,
418 uint32_t,
419 page_size_kb,
420 3);
421
422 PERFETTO_PB_MSG(perfetto_protos_TraceConfig_BuiltinDataSource);
423 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig_BuiltinDataSource,
424 VARINT,
425 bool,
426 disable_clock_snapshotting,
427 1);
428 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig_BuiltinDataSource,
429 VARINT,
430 bool,
431 disable_trace_config,
432 2);
433 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig_BuiltinDataSource,
434 VARINT,
435 bool,
436 disable_system_info,
437 3);
438 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig_BuiltinDataSource,
439 VARINT,
440 bool,
441 disable_service_events,
442 4);
443 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig_BuiltinDataSource,
444 VARINT,
445 enum perfetto_protos_BuiltinClock,
446 primary_trace_clock,
447 5);
448 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig_BuiltinDataSource,
449 VARINT,
450 uint32_t,
451 snapshot_interval_ms,
452 6);
453 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig_BuiltinDataSource,
454 VARINT,
455 bool,
456 prefer_suspend_clock_for_snapshot,
457 7);
458
459 PERFETTO_PB_MSG(perfetto_protos_TraceConfig_DataSource);
460 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig_DataSource,
461 MSG,
462 perfetto_protos_DataSourceConfig,
463 config,
464 1);
465 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig_DataSource,
466 STRING,
467 const char*,
468 producer_name_filter,
469 2);
470 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig_DataSource,
471 STRING,
472 const char*,
473 producer_name_regex_filter,
474 3);
475
476 PERFETTO_PB_MSG(perfetto_protos_TraceConfig_BufferConfig);
477 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig_BufferConfig,
478 VARINT,
479 uint32_t,
480 size_kb,
481 1);
482 PERFETTO_PB_FIELD(perfetto_protos_TraceConfig_BufferConfig,
483 VARINT,
484 enum perfetto_protos_TraceConfig_BufferConfig_FillPolicy,
485 fill_policy,
486 4);
487
488 #endif // INCLUDE_PERFETTO_PUBLIC_PROTOS_CONFIG_TRACE_CONFIG_PZC_H_
489