aboutsummaryrefslogtreecommitdiff
path: root/src/trace_processor/slice_tracker.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/trace_processor/slice_tracker.h')
-rw-r--r--src/trace_processor/slice_tracker.h86
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_;
};