aboutsummaryrefslogtreecommitdiff
path: root/profiling/client/include/TimelineUtilityMethods.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'profiling/client/include/TimelineUtilityMethods.hpp')
-rw-r--r--profiling/client/include/TimelineUtilityMethods.hpp98
1 files changed, 98 insertions, 0 deletions
diff --git a/profiling/client/include/TimelineUtilityMethods.hpp b/profiling/client/include/TimelineUtilityMethods.hpp
new file mode 100644
index 0000000000..5bb4e5ead0
--- /dev/null
+++ b/profiling/client/include/TimelineUtilityMethods.hpp
@@ -0,0 +1,98 @@
+//
+// Copyright © 2019 Arm Ltd and Contributors. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+
+#pragma once
+
+#include <client/include/IProfilingService.hpp>
+#include <client/include/ISendTimelinePacket.hpp>
+
+namespace arm
+{
+
+namespace pipe
+{
+
+class TimelineUtilityMethods
+{
+public:
+
+ // static factory method which will return a pointer to a timelie utility methods
+ // object if profiling is enabled. Otherwise will return a null unique_ptr
+ static std::unique_ptr<TimelineUtilityMethods> GetTimelineUtils(IProfilingService& profilingService);
+
+ TimelineUtilityMethods(
+ std::unique_ptr<ISendTimelinePacket>& sendTimelinePacket)
+ : m_SendTimelinePacket(std::move(sendTimelinePacket)) {}
+
+ TimelineUtilityMethods(TimelineUtilityMethods&& other)
+ : m_SendTimelinePacket(std::move(other.m_SendTimelinePacket)) {}
+
+ TimelineUtilityMethods(const TimelineUtilityMethods& other) = delete;
+
+ TimelineUtilityMethods& operator=(const TimelineUtilityMethods& other) = delete;
+
+ TimelineUtilityMethods& operator=(TimelineUtilityMethods&& other) = default;
+
+ ~TimelineUtilityMethods() = default;
+
+ static void SendWellKnownLabelsAndEventClasses(ISendTimelinePacket& timelinePacket);
+
+ ProfilingDynamicGuid CreateNamedTypedEntity(const std::string& name, const std::string& type);
+
+ void CreateNamedTypedEntity(ProfilingGuid entityGuid, const std::string& name, const std::string& type);
+
+ void CreateNamedTypedEntity(ProfilingGuid entityGuid, const std::string& name, ProfilingStaticGuid typeGuid);
+
+ void MarkEntityWithLabel(ProfilingGuid entityGuid, const std::string& labelName, ProfilingStaticGuid labelLinkGuid);
+
+ ProfilingStaticGuid DeclareLabel(const std::string& labelName);
+
+ void NameEntity(ProfilingGuid entityGuid, const std::string& name);
+
+ void TypeEntity(ProfilingGuid entityGuid, const std::string& type);
+
+ ProfilingDynamicGuid CreateNamedTypedChildEntity(ProfilingGuid parentEntityGuid,
+ const std::string& entityName,
+ const std::string& entityType);
+
+ void CreateNamedTypedChildEntity(ProfilingGuid entityGuid,
+ ProfilingGuid parentEntityGuid,
+ const std::string& entityName,
+ const std::string& entityType);
+
+ void CreateNamedTypedChildEntity(ProfilingGuid entityGuid,
+ ProfilingGuid parentEntityGuid,
+ const std::string& entityName,
+ ProfilingStaticGuid typeGuid);
+
+ ProfilingDynamicGuid CreateRelationship(ProfilingRelationshipType relationshipType,
+ ProfilingGuid headGuid,
+ ProfilingGuid tailGuid,
+ ProfilingGuid relationshipCategory);
+
+ ProfilingDynamicGuid CreateConnectionRelationship(ProfilingRelationshipType relationshipType,
+ ProfilingGuid headGuid,
+ ProfilingGuid tailGuid);
+
+ void CreateTypedEntity(ProfilingGuid entityGuid, ProfilingStaticGuid typeGuid);
+
+ void MarkEntityWithType(ProfilingGuid entityGuid, ProfilingStaticGuid typeNameGuid);
+
+ ProfilingDynamicGuid RecordEvent(ProfilingGuid entityGuid, ProfilingStaticGuid eventClassGuid);
+
+ ProfilingDynamicGuid RecordWorkloadInferenceAndStartOfLifeEvent(ProfilingGuid workloadGuid,
+ ProfilingGuid inferenceGuid);
+
+ void RecordEndOfLifeEvent(ProfilingGuid entityGuid);
+
+ void Commit() { m_SendTimelinePacket->Commit(); }
+
+private:
+ std::unique_ptr<ISendTimelinePacket> m_SendTimelinePacket;
+};
+
+} // namespace pipe
+
+} // namespace arm