diff options
Diffstat (limited to 'src/trace_processor/slice_tracker.h')
-rw-r--r-- | src/trace_processor/slice_tracker.h | 86 |
1 files changed, 29 insertions, 57 deletions
diff --git a/src/trace_processor/slice_tracker.h b/src/trace_processor/slice_tracker.h index 726c25f77..e4986b628 100644 --- a/src/trace_processor/slice_tracker.h +++ b/src/trace_processor/slice_tracker.h @@ -24,83 +24,55 @@ namespace perfetto { namespace trace_processor { -class ArgsTracker; class TraceProcessorContext; class SliceTracker { public: - using SetArgsCallback = std::function<void(ArgsTracker*, RowId row_id)>; - explicit SliceTracker(TraceProcessorContext*); virtual ~SliceTracker(); - base::Optional<uint32_t> BeginAndroid(int64_t timestamp, - uint32_t ftrace_tid, - uint32_t atrace_tgid, - StringId category, - StringId name); + void BeginAndroid(int64_t timestamp, + uint32_t ftrace_tid, + uint32_t atrace_tgid, + StringId cat, + StringId name); // virtual for testing - virtual base::Optional<uint32_t> Begin( - int64_t timestamp, - TrackId track_id, - int64_t ref, - RefType ref_type, - StringId category, - StringId name, - SetArgsCallback args_callback = SetArgsCallback()); + virtual void Begin(int64_t timestamp, + UniqueTid utid, + StringId cat, + StringId name); // virtual for testing - virtual base::Optional<uint32_t> Scoped( - int64_t timestamp, - TrackId track_id, - int64_t ref, - RefType ref_type, - StringId category, - StringId name, - int64_t duration, - SetArgsCallback args_callback = SetArgsCallback()); - - base::Optional<uint32_t> EndAndroid(int64_t timestamp, - uint32_t ftrace_tid, - uint32_t atrace_tgid); + virtual void Scoped(int64_t timestamp, + UniqueTid utid, + StringId cat, + StringId name, + int64_t duration); - // virtual for testing - virtual base::Optional<uint32_t> End( - int64_t timestamp, - TrackId track_id, - StringId opt_category = {}, - StringId opt_name = {}, - SetArgsCallback args_callback = SetArgsCallback()); + void EndAndroid(int64_t timestamp, uint32_t ftrace_tid, uint32_t atrace_tgid); - void FlushPendingSlices(); + // virtual for testing + virtual void End(int64_t timestamp, + UniqueTid utid, + StringId opt_cat = {}, + StringId opt_name = {}); private: - using SlicesStack = std::vector<std::pair<uint32_t /* row */, ArgsTracker>>; - using StackMap = std::unordered_map<TrackId, SlicesStack>; - - base::Optional<uint32_t> StartSlice(int64_t timestamp, - int64_t duration, - TrackId track_id, - int64_t ref, - RefType ref_type, - StringId category, - StringId name, - SetArgsCallback args_callback); - base::Optional<uint32_t> CompleteSlice(TrackId track_id); + using SlicesStack = std::vector<size_t>; + + void StartSlice(int64_t timestamp, + int64_t duration, + UniqueTid utid, + StringId cat, + StringId name); + void CompleteSlice(UniqueTid tid); void MaybeCloseStack(int64_t end_ts, SlicesStack*); - base::Optional<size_t> MatchingIncompleteSliceIndex(SlicesStack& stack, - StringId name, - StringId category); int64_t GetStackHash(const SlicesStack&); - // Timestamp of the previous event. Used to discard events arriving out - // of order. - int64_t prev_timestamp_ = 0; - TraceProcessorContext* const context_; - StackMap stacks_; + std::unordered_map<UniqueTid, SlicesStack> threads_; std::unordered_map<uint32_t, uint32_t> ftrace_to_atrace_tgid_; }; |