
syntax = "proto2";

option java_package = "com.google.common.logging";

option optimize_for = LITE_RUNTIME;

package wireless_android_play_playlog;

// An entry of the map from a stack of addresses to count.
// Address here is the offset of the instruction address to the load address
// of the load_module.
message AddressSample {
  // List of addresses that represents a call stack.
  // address[0] is the leaf of the call stack.
  repeated uint64 address = 1;

  // List of load_module_ids that represents a call stack.
  // load_module_id[0] is the leaf of the call stack.
  // This field can be set as empty if all frame share the same load_module_id
  // with LoadModuleSamples.load_module_id.
  repeated int32 load_module_id = 2;

  // Total count that the address/address_range is sampled.
  optional int64 count = 3;
};

// An entry of the map from address_range to count.
// [start, end] represents the range of addresses, end->to represents the
// taken branch that ends the range.
message RangeSample {
  // Start instruction address of a range.
  optional uint64 start = 1;

  // If "end" and "to" is not provided, "start" represents a single instruction.
  optional uint64 end = 2;
  optional uint64 to = 3;

  // Total count that the address/address_range is sampled.
  optional int64 count = 4;
};

// A load module.
message LoadModule {
  // Name of the load_module.
  optional string name = 1;

  // LoadModule's linker build_id.
  optional string build_id = 2;
}

// All samples for a load_module.
message LoadModuleSamples {
  optional int32 load_module_id = 1;

  // Map from a stack of addresses to count.
  repeated AddressSample address_samples = 2;

  // Map from a range triplet (start, end, to) to count.
  repeated RangeSample range_samples = 3;
}

// All samples for a program.
message ProgramSamples {
  // Name of the program.
  optional string name = 1;

  // Load module profiles.
  repeated LoadModuleSamples modules = 2;
}

// A compressed representation of a perf profile, which contains samples from
// multiple binaries.
message AndroidPerfProfile {

  // Type of the hardware event.
  enum EventType {
    CYCLE = 0;
    BRANCH = 1;
  }
  // Hardware event used in profiling.
  optional EventType event = 1;

  // Total number of samples in this profile.
  // This is the sum of counts of address_samples and range_samples in all
  // load_module_samples.
  optional int64 total_samples = 2;

  // Samples for all profiled programs.
  repeated ProgramSamples programs = 3;

  // List of all load modules.
  repeated LoadModule load_modules = 4;

  // is device screen on at point when profile is collected?
  optional bool display_on = 5;

  // system load at point when profile is collected; corresponds
  // to first value from /proc/loadavg multiplied by 100 then
  // converted to int32
  optional int32 sys_load_average = 6;

  // At the point when the profile was collected, was a camera active?
  optional bool camera_active = 7;

  // At the point when the profile was collected, was the device still booting?
  optional bool booting = 8;

  // At the point when the profile was collected, was the device plugged into
  // a charger?
  optional bool on_charger = 9;

  // CPU utilization measured prior to profile collection (expressed as
  // 100 minus the idle percentage).
  optional int32 cpu_utilization = 10;

}
