Skip to content

Commit

Permalink
services/tracing: Add support for "all data sources started" event
Browse files Browse the repository at this point in the history
The Perfetto tracing muxer now uses the "all data sources started"
event[1] to detect when a tracing session is active (even if there are
no data sources in the session). This patch implements support for
emitting that notification in Chrome's Perfetto tracing backend.

[1] https://android-review.googlesource.com/c/platform/external/perfetto/+/1505634

Change-Id: I7dd82245caca45df2571b30e583f1f2814a972a1
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2551123
Commit-Queue: Sami Kyöstilä <skyostil@chromium.org>
Commit-Queue: Stephen Nusko <nuskos@chromium.org>
Commit-Queue: Eric Seckler <eseckler@chromium.org>
Auto-Submit: Sami Kyöstilä <skyostil@chromium.org>
Reviewed-by: Stephen Nusko <nuskos@chromium.org>
Reviewed-by: Eric Seckler <eseckler@chromium.org>
Cr-Commit-Position: refs/heads/master@{#829669}
  • Loading branch information
skyostil authored and Commit Bot committed Nov 20, 2020
1 parent 3190180 commit 179cb26
Showing 1 changed file with 6 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -492,8 +492,10 @@ class ConsumerEndpoint : public perfetto::ConsumerEndpoint,

void ObserveEvents(uint32_t events_mask) override {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
// Only some events are currently supported by this backend.
DCHECK(!(events_mask &
~perfetto::ObservableEvents::TYPE_DATA_SOURCES_INSTANCES));
~(perfetto::ObservableEvents::TYPE_DATA_SOURCES_INSTANCES |
perfetto::ObservableEvents::TYPE_ALL_DATA_SOURCES_STARTED)));
observed_events_mask_ = events_mask;
}

Expand All @@ -515,10 +517,12 @@ class ConsumerEndpoint : public perfetto::ConsumerEndpoint,
// TODO(skyostil): Wire up full data source state. For now Perfetto just
// needs to know all data sources have started.
if (observed_events_mask_ &
perfetto::ObservableEvents::TYPE_DATA_SOURCES_INSTANCES) {
(perfetto::ObservableEvents::TYPE_ALL_DATA_SOURCES_STARTED |
perfetto::ObservableEvents::TYPE_DATA_SOURCES_INSTANCES)) {
perfetto::ObservableEvents events;
events.add_instance_state_changes()->set_state(
perfetto::ObservableEvents::DATA_SOURCE_INSTANCE_STATE_STARTED);
events.set_all_data_sources_started(true);
consumer_->OnObservableEvents(events);
}
}
Expand Down

0 comments on commit 179cb26

Please sign in to comment.