1*89c4ff92SAndroid Build Coastguard Worker // 2*89c4ff92SAndroid Build Coastguard Worker // Copyright © 2019 Arm Ltd and Contributors. All rights reserved. 3*89c4ff92SAndroid Build Coastguard Worker // SPDX-License-Identifier: MIT 4*89c4ff92SAndroid Build Coastguard Worker // 5*89c4ff92SAndroid Build Coastguard Worker 6*89c4ff92SAndroid Build Coastguard Worker #pragma once 7*89c4ff92SAndroid Build Coastguard Worker 8*89c4ff92SAndroid Build Coastguard Worker #include <algorithm> 9*89c4ff92SAndroid Build Coastguard Worker #include <string> 10*89c4ff92SAndroid Build Coastguard Worker #include <vector> 11*89c4ff92SAndroid Build Coastguard Worker 12*89c4ff92SAndroid Build Coastguard Worker namespace arm 13*89c4ff92SAndroid Build Coastguard Worker { 14*89c4ff92SAndroid Build Coastguard Worker 15*89c4ff92SAndroid Build Coastguard Worker namespace pipe 16*89c4ff92SAndroid Build Coastguard Worker { 17*89c4ff92SAndroid Build Coastguard Worker 18*89c4ff92SAndroid Build Coastguard Worker enum class ProfilingRelationshipType 19*89c4ff92SAndroid Build Coastguard Worker { 20*89c4ff92SAndroid Build Coastguard Worker RetentionLink, /// Head retains(parents) Tail 21*89c4ff92SAndroid Build Coastguard Worker ExecutionLink, /// Head execution start depends on Tail execution completion 22*89c4ff92SAndroid Build Coastguard Worker DataLink, /// Head uses data of Tail 23*89c4ff92SAndroid Build Coastguard Worker LabelLink /// Head uses label Tail (Tail MUST be a guid of a label). 24*89c4ff92SAndroid Build Coastguard Worker }; 25*89c4ff92SAndroid Build Coastguard Worker 26*89c4ff92SAndroid Build Coastguard Worker class ISendTimelinePacket 27*89c4ff92SAndroid Build Coastguard Worker { 28*89c4ff92SAndroid Build Coastguard Worker public: ~ISendTimelinePacket()29*89c4ff92SAndroid Build Coastguard Worker virtual ~ISendTimelinePacket() 30*89c4ff92SAndroid Build Coastguard Worker {} 31*89c4ff92SAndroid Build Coastguard Worker 32*89c4ff92SAndroid Build Coastguard Worker /// Commits the current buffer and reset the member variables 33*89c4ff92SAndroid Build Coastguard Worker virtual void Commit() = 0; 34*89c4ff92SAndroid Build Coastguard Worker 35*89c4ff92SAndroid Build Coastguard Worker /// Create and write a TimelineEntityBinaryPacket from the parameters to the buffer. 36*89c4ff92SAndroid Build Coastguard Worker virtual void SendTimelineEntityBinaryPacket(uint64_t profilingGuid) = 0; 37*89c4ff92SAndroid Build Coastguard Worker 38*89c4ff92SAndroid Build Coastguard Worker /// Create and write a TimelineEventBinaryPacket from the parameters to the buffer. 39*89c4ff92SAndroid Build Coastguard Worker virtual void 40*89c4ff92SAndroid Build Coastguard Worker SendTimelineEventBinaryPacket(uint64_t timestamp, int threadId, uint64_t profilingGuid) = 0; 41*89c4ff92SAndroid Build Coastguard Worker 42*89c4ff92SAndroid Build Coastguard Worker /// Create and write a TimelineEventClassBinaryPacket from the parameters to the buffer. 43*89c4ff92SAndroid Build Coastguard Worker virtual void SendTimelineEventClassBinaryPacket(uint64_t profilingGuid, uint64_t nameGuid) = 0; 44*89c4ff92SAndroid Build Coastguard Worker 45*89c4ff92SAndroid Build Coastguard Worker /// Create and write a TimelineLabelBinaryPacket from the parameters to the buffer. 46*89c4ff92SAndroid Build Coastguard Worker virtual void SendTimelineLabelBinaryPacket(uint64_t profilingGuid, const std::string& label) = 0; 47*89c4ff92SAndroid Build Coastguard Worker 48*89c4ff92SAndroid Build Coastguard Worker /// Create and write a TimelineMessageDirectoryPackage in the buffer 49*89c4ff92SAndroid Build Coastguard Worker virtual void SendTimelineMessageDirectoryPackage() = 0; 50*89c4ff92SAndroid Build Coastguard Worker 51*89c4ff92SAndroid Build Coastguard Worker /// Create and write a TimelineRelationshipBinaryPacket from the parameters to the buffer. 52*89c4ff92SAndroid Build Coastguard Worker virtual void SendTimelineRelationshipBinaryPacket(ProfilingRelationshipType relationshipType, 53*89c4ff92SAndroid Build Coastguard Worker uint64_t relationshipGuid, 54*89c4ff92SAndroid Build Coastguard Worker uint64_t headGuid, 55*89c4ff92SAndroid Build Coastguard Worker uint64_t tailGuid, 56*89c4ff92SAndroid Build Coastguard Worker uint64_t attributeGuid) = 0; 57*89c4ff92SAndroid Build Coastguard Worker }; 58*89c4ff92SAndroid Build Coastguard Worker 59*89c4ff92SAndroid Build Coastguard Worker } // namespace pipe 60*89c4ff92SAndroid Build Coastguard Worker 61*89c4ff92SAndroid Build Coastguard Worker } // namespace arm 62