//
// 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/trace/ps/process_stats.proto (package perfetto.protos, syntax proto2)
/* eslint-disable */

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

/**
 * Describes the file protos/perfetto/trace/ps/process_stats.proto.
 */
export const file_protos_perfetto_trace_ps_process_stats: GenFile = /*@__PURE__*/
  fileDesc("Cixwcm90b3MvcGVyZmV0dG8vdHJhY2UvcHMvcHJvY2Vzc19zdGF0cy5wcm90bxIPcGVyZmV0dG8ucHJvdG9zIqQGCgxQcm9jZXNzU3RhdHMSOAoJcHJvY2Vzc2VzGAEgAygLMiUucGVyZmV0dG8ucHJvdG9zLlByb2Nlc3NTdGF0cy5Qcm9jZXNzEiAKGGNvbGxlY3Rpb25fZW5kX3RpbWVzdGFtcBgCIAEoBBonCgZUaHJlYWQSCwoDdGlkGAEgASgFSgQIAhADSgQIAxAESgQIBBAFGiIKBkZESW5mbxIKCgJmZBgBIAEoBBIMCgRwYXRoGAIgASgJGuoECgdQcm9jZXNzEgsKA3BpZBgBIAEoBRI1Cgd0aHJlYWRzGAsgAygLMiQucGVyZmV0dG8ucHJvdG9zLlByb2Nlc3NTdGF0cy5UaHJlYWQSEgoKdm1fc2l6ZV9rYhgCIAEoBBIRCgl2bV9yc3Nfa2IYAyABKAQSEwoLcnNzX2Fub25fa2IYBCABKAQSEwoLcnNzX2ZpbGVfa2IYBSABKAQSFAoMcnNzX3NobWVtX2tiGAYgASgEEhIKCnZtX3N3YXBfa2IYByABKAQSFAoMdm1fbG9ja2VkX2tiGAggASgEEhEKCXZtX2h3bV9rYhgJIAEoBBIVCg1vb21fc2NvcmVfYWRqGAogASgDEh4KFmlzX3BlYWtfcnNzX3Jlc2V0dGFibGUYDCABKAgSIwobY2hyb21lX3ByaXZhdGVfZm9vdHByaW50X2tiGA0gASgNEiMKG2Nocm9tZV9wZWFrX3Jlc2lkZW50X3NldF9rYhgOIAEoDRIxCgNmZHMYDyADKAsyJC5wZXJmZXR0by5wcm90b3MuUHJvY2Vzc1N0YXRzLkZESW5mbxISCgpzbXJfcnNzX2tiGBAgASgEEhIKCnNtcl9wc3Nfa2IYESABKAQSFwoPc21yX3Bzc19hbm9uX2tiGBIgASgEEhcKD3Ntcl9wc3NfZmlsZV9rYhgTIAEoBBIYChBzbXJfcHNzX3NobWVtX2tiGBQgASgEEhcKD3Ntcl9zd2FwX3Bzc19rYhgXIAEoBBIZChFydW50aW1lX3VzZXJfbW9kZRgVIAEoBBIbChNydW50aW1lX2tlcm5lbF9tb2RlGBYgASgE");

/**
 * Per-process periodically sampled stats. These samples are wrapped in a
 * dedicated message (as opposite to be fields in process_tree.proto) because
 * they are dumped at a different rate than cmdline and thread list.
 * Note: not all of these stats will be present in every ProcessStats message
 * and sometimes processes may be missing. This is because counters are
 * cached to reduce emission of counters which do not change.
 *
 * @generated from message perfetto.protos.ProcessStats
 */
export type ProcessStats = Message<"perfetto.protos.ProcessStats"> & {
  /**
   * @generated from field: repeated perfetto.protos.ProcessStats.Process processes = 1;
   */
  processes: ProcessStats_Process[];

  /**
   * The time at which we finish collecting this batch of samples;
   * the top-level packet timestamp is the time at which
   * we begin collection.
   *
   * @generated from field: optional uint64 collection_end_timestamp = 2;
   */
  collectionEndTimestamp: bigint;
};

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

/**
 * Per-thread periodically sampled stats.
 * Note: not all of these stats will be present in every message. See the note
 * for ProcessStats.
 *
 * @generated from message perfetto.protos.ProcessStats.Thread
 */
export type ProcessStats_Thread = Message<"perfetto.protos.ProcessStats.Thread"> & {
  /**
   * @generated from field: optional int32 tid = 1;
   */
  tid: number;
};

/**
 * Describes the message perfetto.protos.ProcessStats.Thread.
 * Use `create(ProcessStats_ThreadSchema)` to create a new message.
 */
export const ProcessStats_ThreadSchema: GenMessage<ProcessStats_Thread> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_trace_ps_process_stats, 0, 0);

/**
 * @generated from message perfetto.protos.ProcessStats.FDInfo
 */
export type ProcessStats_FDInfo = Message<"perfetto.protos.ProcessStats.FDInfo"> & {
  /**
   * @generated from field: optional uint64 fd = 1;
   */
  fd: bigint;

  /**
   * @generated from field: optional string path = 2;
   */
  path: string;
};

/**
 * Describes the message perfetto.protos.ProcessStats.FDInfo.
 * Use `create(ProcessStats_FDInfoSchema)` to create a new message.
 */
export const ProcessStats_FDInfoSchema: GenMessage<ProcessStats_FDInfo> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_trace_ps_process_stats, 0, 1);

/**
 * @generated from message perfetto.protos.ProcessStats.Process
 */
export type ProcessStats_Process = Message<"perfetto.protos.ProcessStats.Process"> & {
  /**
   * @generated from field: optional int32 pid = 1;
   */
  pid: number;

  /**
   * @generated from field: repeated perfetto.protos.ProcessStats.Thread threads = 11;
   */
  threads: ProcessStats_Thread[];

  /**
   * See /proc/[pid]/status in `man 5 proc` for a description of these fields.
   *
   * @generated from field: optional uint64 vm_size_kb = 2;
   */
  vmSizeKb: bigint;

  /**
   * @generated from field: optional uint64 vm_rss_kb = 3;
   */
  vmRssKb: bigint;

  /**
   * @generated from field: optional uint64 rss_anon_kb = 4;
   */
  rssAnonKb: bigint;

  /**
   * @generated from field: optional uint64 rss_file_kb = 5;
   */
  rssFileKb: bigint;

  /**
   * @generated from field: optional uint64 rss_shmem_kb = 6;
   */
  rssShmemKb: bigint;

  /**
   * @generated from field: optional uint64 vm_swap_kb = 7;
   */
  vmSwapKb: bigint;

  /**
   * @generated from field: optional uint64 vm_locked_kb = 8;
   */
  vmLockedKb: bigint;

  /**
   * When adding a new field remember to update kProcMemCounterSize in
   * the trace processor.
   *
   * @generated from field: optional uint64 vm_hwm_kb = 9;
   */
  vmHwmKb: bigint;

  /**
   * @generated from field: optional int64 oom_score_adj = 10;
   */
  oomScoreAdj: bigint;

  /**
   * The peak resident set size is resettable in newer Posix kernels.
   * This field specifies if reset is supported and if the writer had reset
   * the peaks after each process stats recording.
   *
   * @generated from field: optional bool is_peak_rss_resettable = 12;
   */
  isPeakRssResettable: boolean;

  /**
   * Private, shared and swap footprint of the process as measured by
   * Chrome. To know more about these metrics refer to:
   * https://docs.google.com/document/d/1_WmgE1F5WUrhwkPqJis3dWyOiUmQKvpXp5cd4w86TvA
   *
   * @generated from field: optional uint32 chrome_private_footprint_kb = 13;
   */
  chromePrivateFootprintKb: number;

  /**
   * @generated from field: optional uint32 chrome_peak_resident_set_kb = 14;
   */
  chromePeakResidentSetKb: number;

  /**
   * @generated from field: repeated perfetto.protos.ProcessStats.FDInfo fds = 15;
   */
  fds: ProcessStats_FDInfo[];

  /**
   * These fields are set only when scan_smaps_rollup=true
   *
   * @generated from field: optional uint64 smr_rss_kb = 16;
   */
  smrRssKb: bigint;

  /**
   * @generated from field: optional uint64 smr_pss_kb = 17;
   */
  smrPssKb: bigint;

  /**
   * @generated from field: optional uint64 smr_pss_anon_kb = 18;
   */
  smrPssAnonKb: bigint;

  /**
   * @generated from field: optional uint64 smr_pss_file_kb = 19;
   */
  smrPssFileKb: bigint;

  /**
   * @generated from field: optional uint64 smr_pss_shmem_kb = 20;
   */
  smrPssShmemKb: bigint;

  /**
   * @generated from field: optional uint64 smr_swap_pss_kb = 23;
   */
  smrSwapPssKb: bigint;

  /**
   * Time spent scheduled in user mode in nanoseconds. Parsed from utime in
   * /proc/pid/stat. Recorded if record_process_runtime config option is set.
   * Resolution of "clock ticks", usually 10ms.
   *
   * @generated from field: optional uint64 runtime_user_mode = 21;
   */
  runtimeUserMode: bigint;

  /**
   * Time spent scheduled in kernel mode in nanoseconds. Parsed from stime in
   * /proc/pid/stat. Recorded if record_process_runtime config option is set.
   * Resolution of "clock ticks", usually 10ms.
   *
   * @generated from field: optional uint64 runtime_kernel_mode = 22;
   */
  runtimeKernelMode: bigint;
};

/**
 * Describes the message perfetto.protos.ProcessStats.Process.
 * Use `create(ProcessStats_ProcessSchema)` to create a new message.
 */
export const ProcessStats_ProcessSchema: GenMessage<ProcessStats_Process> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_trace_ps_process_stats, 0, 2);

