• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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