diff options
Diffstat (limited to 'profiling/client/include/IProfilingService.hpp')
-rw-r--r-- | profiling/client/include/IProfilingService.hpp | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/profiling/client/include/IProfilingService.hpp b/profiling/client/include/IProfilingService.hpp new file mode 100644 index 0000000000..21d5c9ce77 --- /dev/null +++ b/profiling/client/include/IProfilingService.hpp @@ -0,0 +1,81 @@ +// +// Copyright © 2020 Arm Ltd and Contributors. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#pragma once + +#include "CounterIdMap.hpp" +#include "Holder.hpp" +#include "ICounterValues.hpp" +#include "IInitialiseProfilingService.hpp" +#include "IProfilingServiceStatus.hpp" +#include "ISendCounterPacket.hpp" +#include "IReportStructure.hpp" +#include "ProfilingOptions.hpp" +#include "ProfilingState.hpp" + +#include <client/include/backends/IBackendProfilingContext.hpp> + +#include <common/include/ICounterRegistry.hpp> +#include <common/include/Optional.hpp> +#include <common/include/ProfilingGuidGenerator.hpp> + + +namespace arm +{ + +namespace pipe +{ + +class IProfilingService : public IProfilingGuidGenerator, + public IProfilingServiceStatus, + public IReadWriteCounterValues +{ +public: + static std::unique_ptr<IProfilingService> CreateProfilingService( + uint16_t maxGlobalCounterId, + IInitialiseProfilingService& initialiser, + const std::string& softwareInfo, + const std::string& softwareVersion, + const std::string& hardwareVersion, + arm::pipe::Optional<IReportStructure&> reportStructure = arm::pipe::EmptyOptional()); + virtual ~IProfilingService() {}; + virtual std::unique_ptr<ISendTimelinePacket> GetSendTimelinePacket() const = 0; + virtual const ICounterMappings& GetCounterMappings() const = 0; + virtual ISendCounterPacket& GetSendCounterPacket() = 0; + virtual bool IsProfilingEnabled() const = 0; + virtual bool IsTimelineReportingEnabled() const = 0; + virtual CaptureData GetCaptureData() = 0; + virtual ProfilingState GetCurrentState() const = 0; + // Resets the profiling options, optionally clears the profiling service entirely + virtual void ResetExternalProfilingOptions(const ProfilingOptions& options, + bool resetProfilingService = false) = 0; + virtual ProfilingState ConfigureProfilingService(const ProfilingOptions& options, + bool resetProfilingService = false) = 0; + // Store a profiling context returned from a backend that support profiling. + virtual void AddBackendProfilingContext(const std::string& backendId, + std::shared_ptr<IBackendProfilingContext> profilingContext) = 0; + virtual ICounterRegistry& GetCounterRegistry() = 0; + virtual IRegisterCounterMapping& GetCounterMappingRegistry() = 0; + virtual bool IsCategoryRegistered(const std::string& categoryName) const = 0; + virtual void InitializeCounterValue(uint16_t counterUid) = 0; + + // IProfilingGuidGenerator functions + /// Return the next random Guid in the sequence + ProfilingDynamicGuid NextGuid() override; + /// Create a ProfilingStaticGuid based on a hash of the string + ProfilingStaticGuid GenerateStaticId(const std::string& str) override; + static ProfilingDynamicGuid GetNextGuid(); + static ProfilingStaticGuid GetStaticId(const std::string& str); + void ResetGuidGenerator(); + + virtual void Disconnect() = 0; + +private: + static ProfilingGuidGenerator m_GuidGenerator; +}; + +} // namespace pipe + +} // namespace arm |