perfetto-protos
Version:
Perfetto protos exposed via protobuf-es for browser and node
456 lines (405 loc) • 14.3 kB
text/typescript
//
// Copyright (C) 2021 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/common/perf_events.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 { Message } from "@bufbuild/protobuf";
/**
* Describes the file protos/perfetto/common/perf_events.proto.
*/
export const file_protos_perfetto_common_perf_events: GenFile = /*@__PURE__*/
fileDesc("Cihwcm90b3MvcGVyZmV0dG8vY29tbW9uL3BlcmZfZXZlbnRzLnByb3RvEg9wZXJmZXR0by5wcm90b3MixwgKClBlcmZFdmVudHMaxQIKCFRpbWViYXNlEhMKCWZyZXF1ZW5jeRgCIAEoBEgAEhAKBnBlcmlvZBgBIAEoBEgAEjYKB2NvdW50ZXIYBCABKA4yIy5wZXJmZXR0by5wcm90b3MuUGVyZkV2ZW50cy5Db3VudGVySAESPAoKdHJhY2Vwb2ludBgDIAEoCzImLnBlcmZldHRvLnByb3Rvcy5QZXJmRXZlbnRzLlRyYWNlcG9pbnRIARI5CglyYXdfZXZlbnQYBSABKAsyJC5wZXJmZXR0by5wcm90b3MuUGVyZkV2ZW50cy5SYXdFdmVudEgBEj4KD3RpbWVzdGFtcF9jbG9jaxgLIAEoDjIlLnBlcmZldHRvLnByb3Rvcy5QZXJmRXZlbnRzLlBlcmZDbG9jaxIMCgRuYW1lGAogASgJQgoKCGludGVydmFsQgcKBWV2ZW50GioKClRyYWNlcG9pbnQSDAoEbmFtZRgBIAEoCRIOCgZmaWx0ZXIYAiABKAkaSgoIUmF3RXZlbnQSDAoEdHlwZRgBIAEoDRIOCgZjb25maWcYAiABKAQSDwoHY29uZmlnMRgDIAEoBBIPCgdjb25maWcyGAQgASgEIugDCgdDb3VudGVyEhMKD1VOS05PV05fQ09VTlRFUhAAEhAKDFNXX0NQVV9DTE9DSxABEhIKDlNXX1BBR0VfRkFVTFRTEAISEQoNU1dfVEFTS19DTE9DSxADEhcKE1NXX0NPTlRFWFRfU1dJVENIRVMQBBIVChFTV19DUFVfTUlHUkFUSU9OUxAFEhYKElNXX1BBR0VfRkFVTFRTX01JThAGEhYKElNXX1BBR0VfRkFVTFRTX01BShAHEhcKE1NXX0FMSUdOTUVOVF9GQVVMVFMQCBIXChNTV19FTVVMQVRJT05fRkFVTFRTEAkSDAoIU1dfRFVNTVkQFBIRCg1IV19DUFVfQ1lDTEVTEAoSEwoPSFdfSU5TVFJVQ1RJT05TEAsSFwoTSFdfQ0FDSEVfUkVGRVJFTkNFUxAMEhMKD0hXX0NBQ0hFX01JU1NFUxANEhoKFkhXX0JSQU5DSF9JTlNUUlVDVElPTlMQDhIUChBIV19CUkFOQ0hfTUlTU0VTEA8SEQoNSFdfQlVTX0NZQ0xFUxAQEh4KGkhXX1NUQUxMRURfQ1lDTEVTX0ZST05URU5EEBESHQoZSFdfU1RBTExFRF9DWUNMRVNfQkFDS0VORBASEhUKEUhXX1JFRl9DUFVfQ1lDTEVTEBMijQEKCVBlcmZDbG9jaxIWChJVTktOT1dOX1BFUkZfQ0xPQ0sQABIXChNQRVJGX0NMT0NLX1JFQUxUSU1FEAESGAoUUEVSRl9DTE9DS19NT05PVE9OSUMQAhIcChhQRVJGX0NMT0NLX01PTk9UT05JQ19SQVcQAxIXChNQRVJGX0NMT0NLX0JPT1RUSU1FEAQi1wEKDUZvbGxvd2VyRXZlbnQSNgoHY291bnRlchgBIAEoDjIjLnBlcmZldHRvLnByb3Rvcy5QZXJmRXZlbnRzLkNvdW50ZXJIABI8Cgp0cmFjZXBvaW50GAIgASgLMiYucGVyZmV0dG8ucHJvdG9zLlBlcmZFdmVudHMuVHJhY2Vwb2ludEgAEjkKCXJhd19ldmVudBgDIAEoCzIkLnBlcmZldHRvLnByb3Rvcy5QZXJmRXZlbnRzLlJhd0V2ZW50SAASDAoEbmFtZRgEIAEoCUIHCgVldmVudA");
/**
* Next id: 12
*
* @generated from message perfetto.protos.PerfEvents
*/
export type PerfEvents = Message<"perfetto.protos.PerfEvents"> & {
};
/**
* Describes the message perfetto.protos.PerfEvents.
* Use `create(PerfEventsSchema)` to create a new message.
*/
export const PerfEventsSchema: GenMessage<PerfEvents> = /*@__PURE__*/
messageDesc(file_protos_perfetto_common_perf_events, 0);
/**
* What event to sample on, and how often. Commented from the perspective of
* its use in |PerfEventConfig|.
*
* @generated from message perfetto.protos.PerfEvents.Timebase
*/
export type PerfEvents_Timebase = Message<"perfetto.protos.PerfEvents.Timebase"> & {
/**
* How often the per-cpu sampling will occur. Not guaranteed to be honored
* as the kernel can throttle the sampling rate if it's too high.
* If unset, an implementation-defined default is used.
*
* @generated from oneof perfetto.protos.PerfEvents.Timebase.interval
*/
interval: {
/**
* Per-cpu sampling frequency in Hz, as requested from the kernel. Not the
* same as 1/period.
* Details: the actual sampling will still be based on a period, but the
* kernel will dynamically adjust it based on the observed event rate, to
* approximate this frequency. Works best with steady-rate events like
* timers.
*
* @generated from field: uint64 frequency = 2;
*/
value: bigint;
case: "frequency";
} | {
/**
* Per-cpu sampling will occur every |period| counts of |event|.
* Prefer |frequency| by default, as it's easier to oversample with a
* fixed period.
*
* @generated from field: uint64 period = 1;
*/
value: bigint;
case: "period";
} | { case: undefined; value?: undefined };
/**
* Counting event to use as a timebase for the sampling.
* If unset, implies the CPU timer (SW_CPU_CLOCK) as the event,
* which is what you usually want.
* See common/perf_events.proto for the definitions.
*
* @generated from oneof perfetto.protos.PerfEvents.Timebase.event
*/
event: {
/**
* @generated from field: perfetto.protos.PerfEvents.Counter counter = 4;
*/
value: PerfEvents_Counter;
case: "counter";
} | {
/**
* @generated from field: perfetto.protos.PerfEvents.Tracepoint tracepoint = 3;
*/
value: PerfEvents_Tracepoint;
case: "tracepoint";
} | {
/**
* @generated from field: perfetto.protos.PerfEvents.RawEvent raw_event = 5;
*/
value: PerfEvents_RawEvent;
case: "rawEvent";
} | { case: undefined; value?: undefined };
/**
* If set, samples will be timestamped with the given clock.
* If unset, the clock is chosen by the implementation.
* For software events, prefer PERF_CLOCK_BOOTTIME. However it cannot be
* used for hardware events (due to interrupt safety), for which the
* recommendation is to use one of the monotonic clocks.
*
* @generated from field: optional perfetto.protos.PerfEvents.PerfClock timestamp_clock = 11;
*/
timestampClock: PerfEvents_PerfClock;
/**
* Optional arbitrary name for the event, to identify it in the parsed
* trace. Does *not* affect the profiling itself. If unset, the trace
* parser will choose a suitable name.
*
* @generated from field: optional string name = 10;
*/
name: string;
};
/**
* Describes the message perfetto.protos.PerfEvents.Timebase.
* Use `create(PerfEvents_TimebaseSchema)` to create a new message.
*/
export const PerfEvents_TimebaseSchema: GenMessage<PerfEvents_Timebase> = /*@__PURE__*/
messageDesc(file_protos_perfetto_common_perf_events, 0, 0);
/**
* @generated from message perfetto.protos.PerfEvents.Tracepoint
*/
export type PerfEvents_Tracepoint = Message<"perfetto.protos.PerfEvents.Tracepoint"> & {
/**
* Group and name for the tracepoint, acceptable forms:
* * "sched/sched_switch"
* * "sched:sched_switch"
*
* @generated from field: optional string name = 1;
*/
name: string;
/**
* Optional field-level filter for the tracepoint. Only events matching this
* filter will be counted (and therefore contribute to the sampling period).
* Example: "prev_pid >= 42 && next_pid == 0".
* For full syntax, see kernel documentation on "Event filtering":
* https://www.kernel.org/doc/Documentation/trace/events.txt
*
* @generated from field: optional string filter = 2;
*/
filter: string;
};
/**
* Describes the message perfetto.protos.PerfEvents.Tracepoint.
* Use `create(PerfEvents_TracepointSchema)` to create a new message.
*/
export const PerfEvents_TracepointSchema: GenMessage<PerfEvents_Tracepoint> = /*@__PURE__*/
messageDesc(file_protos_perfetto_common_perf_events, 0, 1);
/**
* Syscall-level description of the event, propagated to the perf_event_attr
* struct. Primarily for local use-cases, since the event availability and
* encoding is hardware-specific.
*
* @generated from message perfetto.protos.PerfEvents.RawEvent
*/
export type PerfEvents_RawEvent = Message<"perfetto.protos.PerfEvents.RawEvent"> & {
/**
* @generated from field: optional uint32 type = 1;
*/
type: number;
/**
* @generated from field: optional uint64 config = 2;
*/
config: bigint;
/**
* @generated from field: optional uint64 config1 = 3;
*/
config1: bigint;
/**
* @generated from field: optional uint64 config2 = 4;
*/
config2: bigint;
};
/**
* Describes the message perfetto.protos.PerfEvents.RawEvent.
* Use `create(PerfEvents_RawEventSchema)` to create a new message.
*/
export const PerfEvents_RawEventSchema: GenMessage<PerfEvents_RawEvent> = /*@__PURE__*/
messageDesc(file_protos_perfetto_common_perf_events, 0, 2);
/**
* Builtin counter names from the uapi header. Commented with their perf tool
* aliases.
* TODO(rsavitski): consider generating enums for cache events (should be
* finite), and generally make this list as extensive as possible. Excluding
* things like dynamic PMUs since those don't fit into a static enum.
* Next id: 21
*
* @generated from enum perfetto.protos.PerfEvents.Counter
*/
export enum PerfEvents_Counter {
/**
* @generated from enum value: UNKNOWN_COUNTER = 0;
*/
UNKNOWN_COUNTER = 0,
/**
* cpu-clock
*
* @generated from enum value: SW_CPU_CLOCK = 1;
*/
SW_CPU_CLOCK = 1,
/**
* page-faults, faults
*
* @generated from enum value: SW_PAGE_FAULTS = 2;
*/
SW_PAGE_FAULTS = 2,
/**
* task-clock
*
* @generated from enum value: SW_TASK_CLOCK = 3;
*/
SW_TASK_CLOCK = 3,
/**
* context-switches, cs
*
* @generated from enum value: SW_CONTEXT_SWITCHES = 4;
*/
SW_CONTEXT_SWITCHES = 4,
/**
* cpu-migrations, migrations
*
* @generated from enum value: SW_CPU_MIGRATIONS = 5;
*/
SW_CPU_MIGRATIONS = 5,
/**
* minor-faults
*
* @generated from enum value: SW_PAGE_FAULTS_MIN = 6;
*/
SW_PAGE_FAULTS_MIN = 6,
/**
* major-faults
*
* @generated from enum value: SW_PAGE_FAULTS_MAJ = 7;
*/
SW_PAGE_FAULTS_MAJ = 7,
/**
* alignment-faults
*
* @generated from enum value: SW_ALIGNMENT_FAULTS = 8;
*/
SW_ALIGNMENT_FAULTS = 8,
/**
* emulation-faults
*
* @generated from enum value: SW_EMULATION_FAULTS = 9;
*/
SW_EMULATION_FAULTS = 9,
/**
* dummy
*
* @generated from enum value: SW_DUMMY = 20;
*/
SW_DUMMY = 20,
/**
* cpu-cycles, cycles
*
* @generated from enum value: HW_CPU_CYCLES = 10;
*/
HW_CPU_CYCLES = 10,
/**
* instructions
*
* @generated from enum value: HW_INSTRUCTIONS = 11;
*/
HW_INSTRUCTIONS = 11,
/**
* cache-references
*
* @generated from enum value: HW_CACHE_REFERENCES = 12;
*/
HW_CACHE_REFERENCES = 12,
/**
* cache-misses
*
* @generated from enum value: HW_CACHE_MISSES = 13;
*/
HW_CACHE_MISSES = 13,
/**
* branch-instructions, branches
*
* @generated from enum value: HW_BRANCH_INSTRUCTIONS = 14;
*/
HW_BRANCH_INSTRUCTIONS = 14,
/**
* branch-misses
*
* @generated from enum value: HW_BRANCH_MISSES = 15;
*/
HW_BRANCH_MISSES = 15,
/**
* bus-cycles
*
* @generated from enum value: HW_BUS_CYCLES = 16;
*/
HW_BUS_CYCLES = 16,
/**
* stalled-cycles-frontend, idle-cycles-frontend
*
* @generated from enum value: HW_STALLED_CYCLES_FRONTEND = 17;
*/
HW_STALLED_CYCLES_FRONTEND = 17,
/**
* stalled-cycles-backend, idle-cycles-backend
*
* @generated from enum value: HW_STALLED_CYCLES_BACKEND = 18;
*/
HW_STALLED_CYCLES_BACKEND = 18,
/**
* ref-cycles
*
* @generated from enum value: HW_REF_CPU_CYCLES = 19;
*/
HW_REF_CPU_CYCLES = 19,
}
/**
* Describes the enum perfetto.protos.PerfEvents.Counter.
*/
export const PerfEvents_CounterSchema: GenEnum<PerfEvents_Counter> = /*@__PURE__*/
enumDesc(file_protos_perfetto_common_perf_events, 0, 0);
/**
* Subset of clocks that is supported by perf timestamping.
* CLOCK_TAI is excluded since it's not expected to be used in practice, but
* would require additions to the trace clock synchronisation logic.
*
* @generated from enum perfetto.protos.PerfEvents.PerfClock
*/
export enum PerfEvents_PerfClock {
/**
* @generated from enum value: UNKNOWN_PERF_CLOCK = 0;
*/
UNKNOWN_PERF_CLOCK = 0,
/**
* @generated from enum value: PERF_CLOCK_REALTIME = 1;
*/
PERF_CLOCK_REALTIME = 1,
/**
* @generated from enum value: PERF_CLOCK_MONOTONIC = 2;
*/
PERF_CLOCK_MONOTONIC = 2,
/**
* @generated from enum value: PERF_CLOCK_MONOTONIC_RAW = 3;
*/
PERF_CLOCK_MONOTONIC_RAW = 3,
/**
* @generated from enum value: PERF_CLOCK_BOOTTIME = 4;
*/
PERF_CLOCK_BOOTTIME = 4,
}
/**
* Describes the enum perfetto.protos.PerfEvents.PerfClock.
*/
export const PerfEvents_PerfClockSchema: GenEnum<PerfEvents_PerfClock> = /*@__PURE__*/
enumDesc(file_protos_perfetto_common_perf_events, 0, 1);
/**
* Additional events associated with a leader.
* Configuration is similar to Timebase event. Because data acquisition is
* driven by the leader there is no option to configure the clock or the
* frequency.
*
* @generated from message perfetto.protos.FollowerEvent
*/
export type FollowerEvent = Message<"perfetto.protos.FollowerEvent"> & {
/**
* @generated from oneof perfetto.protos.FollowerEvent.event
*/
event: {
/**
* @generated from field: perfetto.protos.PerfEvents.Counter counter = 1;
*/
value: PerfEvents_Counter;
case: "counter";
} | {
/**
* @generated from field: perfetto.protos.PerfEvents.Tracepoint tracepoint = 2;
*/
value: PerfEvents_Tracepoint;
case: "tracepoint";
} | {
/**
* @generated from field: perfetto.protos.PerfEvents.RawEvent raw_event = 3;
*/
value: PerfEvents_RawEvent;
case: "rawEvent";
} | { case: undefined; value?: undefined };
/**
* @generated from field: optional string name = 4;
*/
name: string;
};
/**
* Describes the message perfetto.protos.FollowerEvent.
* Use `create(FollowerEventSchema)` to create a new message.
*/
export const FollowerEventSchema: GenMessage<FollowerEvent> = /*@__PURE__*/
messageDesc(file_protos_perfetto_common_perf_events, 1);