//
// 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/sys_stats/sys_stats.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 { MeminfoCounters, VmstatCounters } from "../../common/sys_stats_counters_pb";
import { file_protos_perfetto_common_sys_stats_counters } from "../../common/sys_stats_counters_pb";
import type { Message } from "@bufbuild/protobuf";

/**
 * Describes the file protos/perfetto/trace/sys_stats/sys_stats.proto.
 */
export const file_protos_perfetto_trace_sys_stats_sys_stats: GenFile = /*@__PURE__*/
  fileDesc("Ci9wcm90b3MvcGVyZmV0dG8vdHJhY2Uvc3lzX3N0YXRzL3N5c19zdGF0cy5wcm90bxIPcGVyZmV0dG8ucHJvdG9zItYPCghTeXNTdGF0cxI3CgdtZW1pbmZvGAEgAygLMiYucGVyZmV0dG8ucHJvdG9zLlN5c1N0YXRzLk1lbWluZm9WYWx1ZRI1CgZ2bXN0YXQYAiADKAsyJS5wZXJmZXR0by5wcm90b3MuU3lzU3RhdHMuVm1zdGF0VmFsdWUSNAoIY3B1X3N0YXQYAyADKAsyIi5wZXJmZXR0by5wcm90b3MuU3lzU3RhdHMuQ3B1VGltZXMSEQoJbnVtX2ZvcmtzGAQgASgEEhUKDW51bV9pcnFfdG90YWwYBSABKAQSOQoHbnVtX2lycRgGIAMoCzIoLnBlcmZldHRvLnByb3Rvcy5TeXNTdGF0cy5JbnRlcnJ1cHRDb3VudBIZChFudW1fc29mdGlycV90b3RhbBgHIAEoBBI9CgtudW1fc29mdGlycRgIIAMoCzIoLnBlcmZldHRvLnByb3Rvcy5TeXNTdGF0cy5JbnRlcnJ1cHRDb3VudBIgChhjb2xsZWN0aW9uX2VuZF90aW1lc3RhbXAYCSABKAQSNwoHZGV2ZnJlcRgKIAMoCzImLnBlcmZldHRvLnByb3Rvcy5TeXNTdGF0cy5EZXZmcmVxVmFsdWUSEwoLY3B1ZnJlcV9raHoYCyADKA0SNwoKYnVkZHlfaW5mbxgMIAMoCzIjLnBlcmZldHRvLnByb3Rvcy5TeXNTdGF0cy5CdWRkeUluZm8SNQoJZGlza19zdGF0GA0gAygLMiIucGVyZmV0dG8ucHJvdG9zLlN5c1N0YXRzLkRpc2tTdGF0EjAKA3BzaRgOIAMoCzIjLnBlcmZldHRvLnByb3Rvcy5TeXNTdGF0cy5Qc2lTYW1wbGUSOwoMdGhlcm1hbF96b25lGA8gAygLMiUucGVyZmV0dG8ucHJvdG9zLlN5c1N0YXRzLlRoZXJtYWxab25lEj0KDWNwdWlkbGVfc3RhdGUYECADKAsyJi5wZXJmZXR0by5wcm90b3MuU3lzU3RhdHMuQ3B1SWRsZVN0YXRlEhMKC2dwdWZyZXFfbWh6GBEgAygEGkwKDE1lbWluZm9WYWx1ZRItCgNrZXkYASABKA4yIC5wZXJmZXR0by5wcm90b3MuTWVtaW5mb0NvdW50ZXJzEg0KBXZhbHVlGAIgASgEGkoKC1Ztc3RhdFZhbHVlEiwKA2tleRgBIAEoDjIfLnBlcmZldHRvLnByb3Rvcy5WbXN0YXRDb3VudGVycxINCgV2YWx1ZRgCIAEoBBqiAQoIQ3B1VGltZXMSDgoGY3B1X2lkGAEgASgNEg8KB3VzZXJfbnMYAiABKAQSFAoMdXNlcl9uaWNlX25zGAMgASgEEhYKDnN5c3RlbV9tb2RlX25zGAQgASgEEg8KB2lkbGVfbnMYBSABKAQSEgoKaW9fd2FpdF9ucxgGIAEoBBIOCgZpcnFfbnMYByABKAQSEgoKc29mdGlycV9ucxgIIAEoBBosCg5JbnRlcnJ1cHRDb3VudBILCgNpcnEYASABKAUSDQoFY291bnQYAiABKAQaKgoMRGV2ZnJlcVZhbHVlEgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoBBo8CglCdWRkeUluZm8SDAoEbm9kZRgBIAEoCRIMCgR6b25lGAIgASgJEhMKC29yZGVyX3BhZ2VzGAMgAygNGtcBCghEaXNrU3RhdBITCgtkZXZpY2VfbmFtZRgBIAEoCRIUCgxyZWFkX3NlY3RvcnMYAiABKAQSFAoMcmVhZF90aW1lX21zGAMgASgEEhUKDXdyaXRlX3NlY3RvcnMYBCABKAQSFQoNd3JpdGVfdGltZV9tcxgFIAEoBBIXCg9kaXNjYXJkX3NlY3RvcnMYBiABKAQSFwoPZGlzY2FyZF90aW1lX21zGAcgASgEEhMKC2ZsdXNoX2NvdW50GAggASgEEhUKDWZsdXNoX3RpbWVfbXMYCSABKAQatAIKCVBzaVNhbXBsZRJBCghyZXNvdXJjZRgBIAEoDjIvLnBlcmZldHRvLnByb3Rvcy5TeXNTdGF0cy5Qc2lTYW1wbGUuUHNpUmVzb3VyY2USEAoIdG90YWxfbnMYAiABKAQi0QEKC1BzaVJlc291cmNlEhwKGFBTSV9SRVNPVVJDRV9VTlNQRUNJRklFRBAAEhkKFVBTSV9SRVNPVVJDRV9DUFVfU09NRRABEhkKFVBTSV9SRVNPVVJDRV9DUFVfRlVMTBACEhgKFFBTSV9SRVNPVVJDRV9JT19TT01FEAMSGAoUUFNJX1JFU09VUkNFX0lPX0ZVTEwQBBIcChhQU0lfUkVTT1VSQ0VfTUVNT1JZX1NPTUUQBRIcChhQU0lfUkVTT1VSQ0VfTUVNT1JZX0ZVTEwQBho3CgtUaGVybWFsWm9uZRIMCgRuYW1lGAEgASgJEgwKBHRlbXAYAiABKAQSDAoEdHlwZRgDIAEoCRo3ChFDcHVJZGxlU3RhdGVFbnRyeRINCgVzdGF0ZRgBIAEoCRITCgtkdXJhdGlvbl91cxgCIAEoBBpoCgxDcHVJZGxlU3RhdGUSDgoGY3B1X2lkGAEgASgNEkgKE2NwdWlkbGVfc3RhdGVfZW50cnkYAiADKAsyKy5wZXJmZXR0by5wcm90b3MuU3lzU3RhdHMuQ3B1SWRsZVN0YXRlRW50cnk", [file_protos_perfetto_common_sys_stats_counters]);

/**
 * Various Linux system stat counters from /proc.
 * The fields in this message can be reported at different rates and with
 * different granularity. See sys_stats_config.proto.
 *
 * @generated from message perfetto.protos.SysStats
 */
export type SysStats = Message<"perfetto.protos.SysStats"> & {
  /**
   * @generated from field: repeated perfetto.protos.SysStats.MeminfoValue meminfo = 1;
   */
  meminfo: SysStats_MeminfoValue[];

  /**
   * @generated from field: repeated perfetto.protos.SysStats.VmstatValue vmstat = 2;
   */
  vmstat: SysStats_VmstatValue[];

  /**
   * One entry per cpu.
   *
   * @generated from field: repeated perfetto.protos.SysStats.CpuTimes cpu_stat = 3;
   */
  cpuStat: SysStats_CpuTimes[];

  /**
   * Num processes forked since boot.
   * Populated only if FORK_COUNT in config.stat_counters.
   *
   * @generated from field: optional uint64 num_forks = 4;
   */
  numForks: bigint;

  /**
   * Total num of irqs serviced since boot.
   *
   * @generated from field: optional uint64 num_irq_total = 5;
   */
  numIrqTotal: bigint;

  /**
   * @generated from field: repeated perfetto.protos.SysStats.InterruptCount num_irq = 6;
   */
  numIrq: SysStats_InterruptCount[];

  /**
   * Total num of softirqs since boot.
   *
   * @generated from field: optional uint64 num_softirq_total = 7;
   */
  numSoftirqTotal: bigint;

  /**
   * Per-softirq count.
   *
   * @generated from field: repeated perfetto.protos.SysStats.InterruptCount num_softirq = 8;
   */
  numSoftirq: SysStats_InterruptCount[];

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

  /**
   * One entry per device.
   *
   * @generated from field: repeated perfetto.protos.SysStats.DevfreqValue devfreq = 10;
   */
  devfreq: SysStats_DevfreqValue[];

  /**
   * Cpu current frequency from
   * /sys/devices/system/cpu/cpu*\/cpufreq/cpuinfo_cur_freq in kHz.
   * One entry per cpu. Report 0 for offline cpu
   *
   * @generated from field: repeated uint32 cpufreq_khz = 11;
   */
  cpufreqKhz: number[];

  /**
   * One entry per each node's zones.
   *
   * @generated from field: repeated perfetto.protos.SysStats.BuddyInfo buddy_info = 12;
   */
  buddyInfo: SysStats_BuddyInfo[];

  /**
   * One entry per disk device.
   *
   * @generated from field: repeated perfetto.protos.SysStats.DiskStat disk_stat = 13;
   */
  diskStat: SysStats_DiskStat[];

  /**
   * One entry per PsiResource type.
   *
   * @generated from field: repeated perfetto.protos.SysStats.PsiSample psi = 14;
   */
  psi: SysStats_PsiSample[];

  /**
   * @generated from field: repeated perfetto.protos.SysStats.ThermalZone thermal_zone = 15;
   */
  thermalZone: SysStats_ThermalZone[];

  /**
   * @generated from field: repeated perfetto.protos.SysStats.CpuIdleState cpuidle_state = 16;
   */
  cpuidleState: SysStats_CpuIdleState[];

  /**
   * Read GPU frequency info on Intel/AMD devices.
   *
   * @generated from field: repeated uint64 gpufreq_mhz = 17;
   */
  gpufreqMhz: bigint[];
};

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

/**
 * Counters from /proc/meminfo. Values are in KB.
 *
 * @generated from message perfetto.protos.SysStats.MeminfoValue
 */
export type SysStats_MeminfoValue = Message<"perfetto.protos.SysStats.MeminfoValue"> & {
  /**
   * @generated from field: optional perfetto.protos.MeminfoCounters key = 1;
   */
  key: MeminfoCounters;

  /**
   * @generated from field: optional uint64 value = 2;
   */
  value: bigint;
};

/**
 * Describes the message perfetto.protos.SysStats.MeminfoValue.
 * Use `create(SysStats_MeminfoValueSchema)` to create a new message.
 */
export const SysStats_MeminfoValueSchema: GenMessage<SysStats_MeminfoValue> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_trace_sys_stats_sys_stats, 0, 0);

/**
 * Counter from /proc/vmstat. Units are often pages, not KB.
 *
 * @generated from message perfetto.protos.SysStats.VmstatValue
 */
export type SysStats_VmstatValue = Message<"perfetto.protos.SysStats.VmstatValue"> & {
  /**
   * @generated from field: optional perfetto.protos.VmstatCounters key = 1;
   */
  key: VmstatCounters;

  /**
   * @generated from field: optional uint64 value = 2;
   */
  value: bigint;
};

/**
 * Describes the message perfetto.protos.SysStats.VmstatValue.
 * Use `create(SysStats_VmstatValueSchema)` to create a new message.
 */
export const SysStats_VmstatValueSchema: GenMessage<SysStats_VmstatValue> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_trace_sys_stats_sys_stats, 0, 1);

/**
 * Times in each mode, since boot. Unit: nanoseconds.
 *
 * @generated from message perfetto.protos.SysStats.CpuTimes
 */
export type SysStats_CpuTimes = Message<"perfetto.protos.SysStats.CpuTimes"> & {
  /**
   * @generated from field: optional uint32 cpu_id = 1;
   */
  cpuId: number;

  /**
   * Time spent in user mode.
   *
   * @generated from field: optional uint64 user_ns = 2;
   */
  userNs: bigint;

  /**
   * Time spent in user mode (low prio).
   *
   * @generated from field: optional uint64 user_nice_ns = 3;
   */
  userNiceNs: bigint;

  /**
   * Time spent in system mode.
   *
   * @generated from field: optional uint64 system_mode_ns = 4;
   */
  systemModeNs: bigint;

  /**
   * Time spent in the idle task.
   *
   * @generated from field: optional uint64 idle_ns = 5;
   */
  idleNs: bigint;

  /**
   * Time spent waiting for I/O.
   *
   * @generated from field: optional uint64 io_wait_ns = 6;
   */
  ioWaitNs: bigint;

  /**
   * Time spent servicing interrupts.
   *
   * @generated from field: optional uint64 irq_ns = 7;
   */
  irqNs: bigint;

  /**
   * Time spent servicing softirqs.
   *
   * @generated from field: optional uint64 softirq_ns = 8;
   */
  softirqNs: bigint;
};

/**
 * Describes the message perfetto.protos.SysStats.CpuTimes.
 * Use `create(SysStats_CpuTimesSchema)` to create a new message.
 */
export const SysStats_CpuTimesSchema: GenMessage<SysStats_CpuTimes> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_trace_sys_stats_sys_stats, 0, 2);

/**
 * @generated from message perfetto.protos.SysStats.InterruptCount
 */
export type SysStats_InterruptCount = Message<"perfetto.protos.SysStats.InterruptCount"> & {
  /**
   * @generated from field: optional int32 irq = 1;
   */
  irq: number;

  /**
   * @generated from field: optional uint64 count = 2;
   */
  count: bigint;
};

/**
 * Describes the message perfetto.protos.SysStats.InterruptCount.
 * Use `create(SysStats_InterruptCountSchema)` to create a new message.
 */
export const SysStats_InterruptCountSchema: GenMessage<SysStats_InterruptCount> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_trace_sys_stats_sys_stats, 0, 3);

/**
 * Frequencies for /sys/class/devfreq/ entries in kHz.
 *
 * @generated from message perfetto.protos.SysStats.DevfreqValue
 */
export type SysStats_DevfreqValue = Message<"perfetto.protos.SysStats.DevfreqValue"> & {
  /**
   * @generated from field: optional string key = 1;
   */
  key: string;

  /**
   * @generated from field: optional uint64 value = 2;
   */
  value: bigint;
};

/**
 * Describes the message perfetto.protos.SysStats.DevfreqValue.
 * Use `create(SysStats_DevfreqValueSchema)` to create a new message.
 */
export const SysStats_DevfreqValueSchema: GenMessage<SysStats_DevfreqValue> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_trace_sys_stats_sys_stats, 0, 4);

/**
 * @generated from message perfetto.protos.SysStats.BuddyInfo
 */
export type SysStats_BuddyInfo = Message<"perfetto.protos.SysStats.BuddyInfo"> & {
  /**
   * @generated from field: optional string node = 1;
   */
  node: string;

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

  /**
   * @generated from field: repeated uint32 order_pages = 3;
   */
  orderPages: number[];
};

/**
 * Describes the message perfetto.protos.SysStats.BuddyInfo.
 * Use `create(SysStats_BuddyInfoSchema)` to create a new message.
 */
export const SysStats_BuddyInfoSchema: GenMessage<SysStats_BuddyInfo> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_trace_sys_stats_sys_stats, 0, 5);

/**
 * Counters from /proc/diskstats.
 *
 * @generated from message perfetto.protos.SysStats.DiskStat
 */
export type SysStats_DiskStat = Message<"perfetto.protos.SysStats.DiskStat"> & {
  /**
   * @generated from field: optional string device_name = 1;
   */
  deviceName: string;

  /**
   * @generated from field: optional uint64 read_sectors = 2;
   */
  readSectors: bigint;

  /**
   * @generated from field: optional uint64 read_time_ms = 3;
   */
  readTimeMs: bigint;

  /**
   * @generated from field: optional uint64 write_sectors = 4;
   */
  writeSectors: bigint;

  /**
   * @generated from field: optional uint64 write_time_ms = 5;
   */
  writeTimeMs: bigint;

  /**
   * @generated from field: optional uint64 discard_sectors = 6;
   */
  discardSectors: bigint;

  /**
   * @generated from field: optional uint64 discard_time_ms = 7;
   */
  discardTimeMs: bigint;

  /**
   * @generated from field: optional uint64 flush_count = 8;
   */
  flushCount: bigint;

  /**
   * @generated from field: optional uint64 flush_time_ms = 9;
   */
  flushTimeMs: bigint;
};

/**
 * Describes the message perfetto.protos.SysStats.DiskStat.
 * Use `create(SysStats_DiskStatSchema)` to create a new message.
 */
export const SysStats_DiskStatSchema: GenMessage<SysStats_DiskStat> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_trace_sys_stats_sys_stats, 0, 6);

/**
 * Reading from /proc/pressure/*.
 *
 * @generated from message perfetto.protos.SysStats.PsiSample
 */
export type SysStats_PsiSample = Message<"perfetto.protos.SysStats.PsiSample"> & {
  /**
   * @generated from field: optional perfetto.protos.SysStats.PsiSample.PsiResource resource = 1;
   */
  resource: SysStats_PsiSample_PsiResource;

  /**
   * Total absolute stall time (in nanos) for a given resource.
   * While PSI readings are in micros, we store in nanos for consistency with
   * most other time-based counters.
   *
   * @generated from field: optional uint64 total_ns = 2;
   */
  totalNs: bigint;
};

/**
 * Describes the message perfetto.protos.SysStats.PsiSample.
 * Use `create(SysStats_PsiSampleSchema)` to create a new message.
 */
export const SysStats_PsiSampleSchema: GenMessage<SysStats_PsiSample> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_trace_sys_stats_sys_stats, 0, 7);

/**
 * Type of resource that may have exhibited pressure stalls.
 *    * _SOME indicates some resource tasks stalled.
 *    * _FULL indicates all non-idle resource tasks stalled simultaneously.
 *
 * @generated from enum perfetto.protos.SysStats.PsiSample.PsiResource
 */
export enum SysStats_PsiSample_PsiResource {
  /**
   * @generated from enum value: PSI_RESOURCE_UNSPECIFIED = 0;
   */
  UNSPECIFIED = 0,

  /**
   * @generated from enum value: PSI_RESOURCE_CPU_SOME = 1;
   */
  CPU_SOME = 1,

  /**
   * @generated from enum value: PSI_RESOURCE_CPU_FULL = 2;
   */
  CPU_FULL = 2,

  /**
   * @generated from enum value: PSI_RESOURCE_IO_SOME = 3;
   */
  IO_SOME = 3,

  /**
   * @generated from enum value: PSI_RESOURCE_IO_FULL = 4;
   */
  IO_FULL = 4,

  /**
   * @generated from enum value: PSI_RESOURCE_MEMORY_SOME = 5;
   */
  MEMORY_SOME = 5,

  /**
   * @generated from enum value: PSI_RESOURCE_MEMORY_FULL = 6;
   */
  MEMORY_FULL = 6,
}

/**
 * Describes the enum perfetto.protos.SysStats.PsiSample.PsiResource.
 */
export const SysStats_PsiSample_PsiResourceSchema: GenEnum<SysStats_PsiSample_PsiResource> = /*@__PURE__*/
  enumDesc(file_protos_perfetto_trace_sys_stats_sys_stats, 0, 7, 0);

/**
 * Reading from /sys/class/thermal/*.
 *
 * @generated from message perfetto.protos.SysStats.ThermalZone
 */
export type SysStats_ThermalZone = Message<"perfetto.protos.SysStats.ThermalZone"> & {
  /**
   * @generated from field: optional string name = 1;
   */
  name: string;

  /**
   * @generated from field: optional uint64 temp = 2;
   */
  temp: bigint;

  /**
   * @generated from field: optional string type = 3;
   */
  type: string;
};

/**
 * Describes the message perfetto.protos.SysStats.ThermalZone.
 * Use `create(SysStats_ThermalZoneSchema)` to create a new message.
 */
export const SysStats_ThermalZoneSchema: GenMessage<SysStats_ThermalZone> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_trace_sys_stats_sys_stats, 0, 8);

/**
 * Reading from /sys/devices/system/cpu/cpu*\/cpuidle/state*.
 *
 * @generated from message perfetto.protos.SysStats.CpuIdleStateEntry
 */
export type SysStats_CpuIdleStateEntry = Message<"perfetto.protos.SysStats.CpuIdleStateEntry"> & {
  /**
   * Name of the idle state, e.g. C1-C10
   *
   * @generated from field: optional string state = 1;
   */
  state: string;

  /**
   * @generated from field: optional uint64 duration_us = 2;
   */
  durationUs: bigint;
};

/**
 * Describes the message perfetto.protos.SysStats.CpuIdleStateEntry.
 * Use `create(SysStats_CpuIdleStateEntrySchema)` to create a new message.
 */
export const SysStats_CpuIdleStateEntrySchema: GenMessage<SysStats_CpuIdleStateEntry> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_trace_sys_stats_sys_stats, 0, 9);

/**
 * @generated from message perfetto.protos.SysStats.CpuIdleState
 */
export type SysStats_CpuIdleState = Message<"perfetto.protos.SysStats.CpuIdleState"> & {
  /**
   * @generated from field: optional uint32 cpu_id = 1;
   */
  cpuId: number;

  /**
   * @generated from field: repeated perfetto.protos.SysStats.CpuIdleStateEntry cpuidle_state_entry = 2;
   */
  cpuidleStateEntry: SysStats_CpuIdleStateEntry[];
};

/**
 * Describes the message perfetto.protos.SysStats.CpuIdleState.
 * Use `create(SysStats_CpuIdleStateSchema)` to create a new message.
 */
export const SysStats_CpuIdleStateSchema: GenMessage<SysStats_CpuIdleState> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_trace_sys_stats_sys_stats, 0, 10);

