//
// Copyright (C) 2018 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

// @generated by protoc-gen-es v2.2.2 with parameter "target=ts"
// @generated from file protos/perfetto/config/process_stats/process_stats_config.proto (package perfetto.protos, syntax proto2)
/* eslint-disable */

import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1";
import { enumDesc, fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1";
import type { Message } from "@bufbuild/protobuf";

/**
 * Describes the file protos/perfetto/config/process_stats/process_stats_config.proto.
 */
export const file_protos_perfetto_config_process_stats_process_stats_config: GenFile = /*@__PURE__*/
  fileDesc("Cj9wcm90b3MvcGVyZmV0dG8vY29uZmlnL3Byb2Nlc3Nfc3RhdHMvcHJvY2Vzc19zdGF0c19jb25maWcucHJvdG8SD3BlcmZldHRvLnByb3RvcyKmAwoSUHJvY2Vzc1N0YXRzQ29uZmlnEjoKBnF1aXJrcxgBIAMoDjIqLnBlcmZldHRvLnByb3Rvcy5Qcm9jZXNzU3RhdHNDb25maWcuUXVpcmtzEiMKG3NjYW5fYWxsX3Byb2Nlc3Nlc19vbl9zdGFydBgCIAEoCBIbChNyZWNvcmRfdGhyZWFkX25hbWVzGAMgASgIEhoKEnByb2Nfc3RhdHNfcG9sbF9tcxgEIAEoDRIfChdwcm9jX3N0YXRzX2NhY2hlX3R0bF9tcxgGIAEoDRIbChNyZXNvbHZlX3Byb2Nlc3NfZmRzGAkgASgIEhkKEXNjYW5fc21hcHNfcm9sbHVwGAogASgIEhoKEnJlY29yZF9wcm9jZXNzX2FnZRgLIAEoCBIeChZyZWNvcmRfcHJvY2Vzc19ydW50aW1lGAwgASgIIlUKBlF1aXJrcxIWChJRVUlSS1NfVU5TUEVDSUZJRUQQABIcChRESVNBQkxFX0lOSVRJQUxfRFVNUBABGgIIARIVChFESVNBQkxFX09OX0RFTUFORBACSgQIBxAISgQICBAJ");

/**
 * @generated from message perfetto.protos.ProcessStatsConfig
 */
export type ProcessStatsConfig = Message<"perfetto.protos.ProcessStatsConfig"> & {
  /**
   * @generated from field: repeated perfetto.protos.ProcessStatsConfig.Quirks quirks = 1;
   */
  quirks: ProcessStatsConfig_Quirks[];

  /**
   * If enabled all processes will be scanned and dumped when the trace starts.
   *
   * @generated from field: optional bool scan_all_processes_on_start = 2;
   */
  scanAllProcessesOnStart: boolean;

  /**
   * If enabled thread names are also recoded (this is redundant if sched_switch
   * is enabled).
   *
   * @generated from field: optional bool record_thread_names = 3;
   */
  recordThreadNames: boolean;

  /**
   * If > 0 samples counters (see process_stats.proto) from
   * /proc/pid/status and oom_score_adj every X ms.
   * It will also sample /proc/pid/smaps_rollup if scan_smaps_rollup = true.
   * This is required to be > 100ms to avoid excessive CPU usage.
   *
   * @generated from field: optional uint32 proc_stats_poll_ms = 4;
   */
  procStatsPollMs: number;

  /**
   * This is required to be either = 0 or a multiple of |proc_stats_poll_ms|
   * (default: |proc_stats_poll_ms|). If = 0, will be set to
   * |proc_stats_poll_ms|. Non-multiples will be rounded down to the nearest
   * multiple.
   *
   * @generated from field: optional uint32 proc_stats_cache_ttl_ms = 6;
   */
  procStatsCacheTtlMs: number;

  /**
   * Niche feature: If true this will resolve file descriptors for each process
   * so these can be mapped to their actual device or file.
   * Requires raw_syscalls/sys_{enter,exit} ftrace events to be enabled or
   * new fds opened after initially scanning a process will not be
   * recognized.
   *
   * @generated from field: optional bool resolve_process_fds = 9;
   */
  resolveProcessFds: boolean;

  /**
   * If true, output will include memory stats from /proc/pid/smaps_rollup.
   *
   * @generated from field: optional bool scan_smaps_rollup = 10;
   */
  scanSmapsRollup: boolean;

  /**
   * If true: process descriptions will include process age (starttime in
   * /proc/pid/stat).
   * Introduced in: perfetto v44.
   *
   * @generated from field: optional bool record_process_age = 11;
   */
  recordProcessAge: boolean;

  /**
   * If true and |proc_stats_poll_ms| is true, process stats will include time
   * spent running in user/kernel mode (utime/stime in /proc/pid/stat).
   * Introduced in: perfetto v44.
   *
   * @generated from field: optional bool record_process_runtime = 12;
   */
  recordProcessRuntime: boolean;
};

/**
 * Describes the message perfetto.protos.ProcessStatsConfig.
 * Use `create(ProcessStatsConfigSchema)` to create a new message.
 */
export const ProcessStatsConfigSchema: GenMessage<ProcessStatsConfig> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_config_process_stats_process_stats_config, 0);

/**
 * @generated from enum perfetto.protos.ProcessStatsConfig.Quirks
 */
export enum ProcessStatsConfig_Quirks {
  /**
   * @generated from enum value: QUIRKS_UNSPECIFIED = 0;
   */
  QUIRKS_UNSPECIFIED = 0,

  /**
   * This has been deprecated and ignored as per 2018-05-01. Full scan at
   * startup is now disabled by default and can be re-enabled using the
   * |scan_all_processes_on_start| arg.
   *
   * @generated from enum value: DISABLE_INITIAL_DUMP = 1 [deprecated = true];
   * @deprecated
   */
  DISABLE_INITIAL_DUMP = 1,

  /**
   * @generated from enum value: DISABLE_ON_DEMAND = 2;
   */
  DISABLE_ON_DEMAND = 2,
}

/**
 * Describes the enum perfetto.protos.ProcessStatsConfig.Quirks.
 */
export const ProcessStatsConfig_QuirksSchema: GenEnum<ProcessStatsConfig_Quirks> = /*@__PURE__*/
  enumDesc(file_protos_perfetto_config_process_stats_process_stats_config, 0, 0);

