// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Call stack sample data for a given profiling session.

syntax = "proto2";

option optimize_for = LITE_RUNTIME;

package metrics;

// Next tag: 5
message CallStackProfile {
  // Describes an entry in the callstack.
  message Entry {
    // Instruction pointer subtracted by module base.
    optional uint64 address = 1;

    // Index to the module identifier in |module_ids| of CallStackProfile.
    optional int32 module_id_index = 2;
  }

  // A sample consisting of one or more callstacks with the same stack frames
  // and instruction pointers.
  message Sample {
    // The callstack. Sample.entries[0] represents the call on the top of the
    // stack.
    repeated Entry entry = 1;

    // Number of times this stack signature occurs.
    optional int64 count = 2;
  }

  // Uniquely identifies a module.
  message ModuleIdentifier {
    // A hash that uniquely identifies a particular program version with high
    // probability. This is parsed from headers of the loaded module.
    // For binaries generated by GNU tools:
    //   Contents of the .note.gnu.build-id field.
    // On Windows:
    //   GUID + AGE in the debug image headers of a module.
    optional bytes build_id = 1;

    // MD5Sum Prefix of the module name. This is the same hashing scheme as used
    // to hash UMA histogram names.
    optional fixed64 name_md5_prefix = 2;
  }

  // The callstack and counts.
  repeated Sample sample = 1;

  // List of module ids found in this sample.
  repeated ModuleIdentifier module_id = 2;

  // Duration of this profile.
  optional int32 profile_duration_ms = 3;

  // Time between samples.
  optional int32 sampling_period_ms = 4;
}
