//
// Copyright (C) 2024 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/metrics/android/android_garbage_collection_unagg_metric.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 { AndroidProcessMetadata } from "./process_metadata_pb";
import { file_protos_perfetto_metrics_android_process_metadata } from "./process_metadata_pb";
import type { Message } from "@bufbuild/protobuf";

/**
 * Describes the file protos/perfetto/metrics/android/android_garbage_collection_unagg_metric.proto.
 */
export const file_protos_perfetto_metrics_android_android_garbage_collection_unagg_metric: GenFile = /*@__PURE__*/
  fileDesc("Ck1wcm90b3MvcGVyZmV0dG8vbWV0cmljcy9hbmRyb2lkL2FuZHJvaWRfZ2FyYmFnZV9jb2xsZWN0aW9uX3VuYWdnX21ldHJpYy5wcm90bxIPcGVyZmV0dG8ucHJvdG9zIvwECiNBbmRyb2lkR2FyYmFnZUNvbGxlY3Rpb25VbmFnZ01ldHJpYxJeCglnY19ldmVudHMYASADKAsySy5wZXJmZXR0by5wcm90b3MuQW5kcm9pZEdhcmJhZ2VDb2xsZWN0aW9uVW5hZ2dNZXRyaWMuR2FyYmFnZUNvbGxlY3Rpb25FdmVudBr0AwoWR2FyYmFnZUNvbGxlY3Rpb25FdmVudBITCgt0aHJlYWRfbmFtZRgBIAEoCRIUCgxwcm9jZXNzX25hbWUYAiABKAkSDwoHZ2NfdHlwZRgDIAEoCRIXCg9pc19tYXJrX2NvbXBhY3QYBCABKAMSFAoMcmVjbGFpbWVkX21iGAUgASgBEhMKC21pbl9oZWFwX21iGAYgASgBEhMKC21heF9oZWFwX21iGAcgASgBEh8KF21iX3Blcl9tc19vZl9ydW5uaW5nX2djGAggASgBEhwKFG1iX3Blcl9tc19vZl93YWxsX2djGAkgASgBEg4KBmdjX2R1chgKIAEoAxIWCg5nY19ydW5uaW5nX2R1chgLIAEoAxIXCg9nY19ydW5uYWJsZV9kdXIYDCABKAMSFwoPZ2NfdW5pbnRfaW9fZHVyGA0gASgDEhsKE2djX3VuaW50X25vbl9pb19kdXIYDiABKAMSEgoKZ2NfaW50X2R1chgPIAEoAxINCgVnY190cxgQIAEoAxILCgNwaWQYESABKAMSCwoDdGlkGBIgASgDEhgKEGdjX21vbm90b25pY19kdXIYEyABKAMSOAoHcHJvY2VzcxgUIAEoCzInLnBlcmZldHRvLnByb3Rvcy5BbmRyb2lkUHJvY2Vzc01ldGFkYXRh", [file_protos_perfetto_metrics_android_process_metadata]);

/**
 * @generated from message perfetto.protos.AndroidGarbageCollectionUnaggMetric
 */
export type AndroidGarbageCollectionUnaggMetric = Message<"perfetto.protos.AndroidGarbageCollectionUnaggMetric"> & {
  /**
   * @generated from field: repeated perfetto.protos.AndroidGarbageCollectionUnaggMetric.GarbageCollectionEvent gc_events = 1;
   */
  gcEvents: AndroidGarbageCollectionUnaggMetric_GarbageCollectionEvent[];
};

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

/**
 * @generated from message perfetto.protos.AndroidGarbageCollectionUnaggMetric.GarbageCollectionEvent
 */
export type AndroidGarbageCollectionUnaggMetric_GarbageCollectionEvent = Message<"perfetto.protos.AndroidGarbageCollectionUnaggMetric.GarbageCollectionEvent"> & {
  /**
   * Name of thread running garbage collection.
   *
   * @generated from field: optional string thread_name = 1;
   */
  threadName: string;

  /**
   * Name of process running garbage collection.
   *
   * @generated from field: optional string process_name = 2;
   */
  processName: string;

  /**
   * Type of garbage collection.
   *
   * @generated from field: optional string gc_type = 3;
   */
  gcType: string;

  /**
   * Whether gargage collection is mark compact or copying.
   *
   * @generated from field: optional int64 is_mark_compact = 4;
   */
  isMarkCompact: bigint;

  /**
   * MB reclaimed after garbage collection.
   *
   * @generated from field: optional double reclaimed_mb = 5;
   */
  reclaimedMb: number;

  /**
   * Minimum heap size in MB during garbage collection.
   *
   * @generated from field: optional double min_heap_mb = 6;
   */
  minHeapMb: number;

  /**
   * Maximum heap size in MB during garbage collection.
   *
   * @generated from field: optional double max_heap_mb = 7;
   */
  maxHeapMb: number;

  /**
   * Memory reclaimed per ms of running time.
   *
   * @generated from field: optional double mb_per_ms_of_running_gc = 8;
   */
  mbPerMsOfRunningGc: number;

  /**
   * Memory reclaimed per ms of wall time.
   *
   * @generated from field: optional double mb_per_ms_of_wall_gc = 9;
   */
  mbPerMsOfWallGc: number;

  /**
   * Garbage collection wall duration.
   *
   * @generated from field: optional int64 gc_dur = 10;
   */
  gcDur: bigint;

  /**
   * Garbage collection duration spent executing on CPU.
   *
   * @generated from field: optional int64 gc_running_dur = 11;
   */
  gcRunningDur: bigint;

  /**
   * Garbage collection duration spent waiting for CPU.
   *
   * @generated from field: optional int64 gc_runnable_dur = 12;
   */
  gcRunnableDur: bigint;

  /**
   * Garbage collection duration spent waiting in the Linux kernel on IO.
   *
   * @generated from field: optional int64 gc_unint_io_dur = 13;
   */
  gcUnintIoDur: bigint;

  /**
   * Garbage collection duration spent waiting in the Linux kernel without IO.
   *
   * @generated from field: optional int64 gc_unint_non_io_dur = 14;
   */
  gcUnintNonIoDur: bigint;

  /**
   * Garbage collection duration spent waiting in interruptible sleep.
   *
   * @generated from field: optional int64 gc_int_dur = 15;
   */
  gcIntDur: bigint;

  /**
   * ts of the event in trace.
   *
   * @generated from field: optional int64 gc_ts = 16;
   */
  gcTs: bigint;

  /**
   * pid of the event in trace.
   *
   * @generated from field: optional int64 pid = 17;
   */
  pid: bigint;

  /**
   * tid of the event in trace.
   *
   * @generated from field: optional int64 tid = 18;
   */
  tid: bigint;

  /**
   * monotonic duration of event.
   *
   * @generated from field: optional int64 gc_monotonic_dur = 19;
   */
  gcMonotonicDur: bigint;

  /**
   * Details about the process (uid, version, etc)
   *
   * @generated from field: optional perfetto.protos.AndroidProcessMetadata process = 20;
   */
  process?: AndroidProcessMetadata;
};

/**
 * Describes the message perfetto.protos.AndroidGarbageCollectionUnaggMetric.GarbageCollectionEvent.
 * Use `create(AndroidGarbageCollectionUnaggMetric_GarbageCollectionEventSchema)` to create a new message.
 */
export const AndroidGarbageCollectionUnaggMetric_GarbageCollectionEventSchema: GenMessage<AndroidGarbageCollectionUnaggMetric_GarbageCollectionEvent> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_metrics_android_android_garbage_collection_unagg_metric, 0, 0);

