# Global OWNERS that can approve Perfetto changes.
# Please look first at OWNERS in the various subdirectories before falling back
# on this, as the former tend to be more brain-cache-hot.

# Perfetto tracing internals and API/ABI boundaries.
primiano@google.com
skyostil@google.com

# UI, Ftrace interop, traced_probes, protozero, Android internals.
hjd@google.com

# Trace Processor, metrics, infra.
lalitm@google.com
mayzner@google.com

# Callstack / memory profilers, traced_probes & Linux internals.
ddiproietto@google.com
rsavitski@google.com

# Chromium-related things and tracing SDK.
eseckler@google.com
nuskos@google.com
oysteine@google.com

# UI, Chromium-related metrics and simpler trace processor changes.
altimin@google.com

# Most Android-related metrics.
ilkos@google.com

# fmayer@ left the team. Please try first rsavitski@, ddiproietto@ or primiano@
# and leave fmayer@ as an emergency-only escalation on profilers.
fmayer@google.com

# chromium.org aliases for adding DEPS entries from chromium subprojects to
# third_party/perfetto.
eseckler@chromium.org
nuskos@chromium.org
skyostil@chromium.org
