// // Copyright © 2020 Arm Ltd. All rights reserved. // SPDX-License-Identifier: MIT // #pragma once #include #include #include #include #include #include #include #include #include #include #include namespace arm { namespace pipe { class IRegisterBackendCounters { public: virtual void RegisterCategory(const std::string& categoryName) = 0; virtual uint16_t RegisterDevice(const std::string& deviceName, uint16_t cores = 0, const arm::pipe::Optional& parentCategoryName = arm::pipe::EmptyOptional()) = 0; virtual uint16_t RegisterCounterSet(const std::string& counterSetName, uint16_t count = 0, const arm::pipe::Optional& parentCategoryName = arm::pipe::EmptyOptional()) = 0; virtual uint16_t RegisterCounter(const uint16_t uid, const std::string& parentCategoryName, uint16_t counterClass, uint16_t interpolation, double multiplier, const std::string& name, const std::string& description, const arm::pipe::Optional& units = arm::pipe::EmptyOptional(), const arm::pipe::Optional& numberOfCores = arm::pipe::EmptyOptional(), const arm::pipe::Optional& deviceUid = arm::pipe::EmptyOptional(), const arm::pipe::Optional& counterSetUid = arm::pipe::EmptyOptional()) = 0; virtual ~IRegisterBackendCounters() {} }; class IBackendProfiling { public: static std::unique_ptr CreateBackendProfiling(const ProfilingOptions& options, IProfilingService& profilingService, const std::string& backendId); virtual ~IBackendProfiling() {} virtual std::unique_ptr GetCounterRegistrationInterface(uint16_t currentMaxGlobalCounterID) = 0; virtual std::unique_ptr GetSendTimelinePacket() = 0; virtual IProfilingGuidGenerator& GetProfilingGuidGenerator() = 0; virtual void ReportCounters(const std::vector& counterValues) = 0; virtual CounterStatus GetCounterStatus(uint16_t backendCounterId) = 0; virtual std::vector GetActiveCounters() = 0; virtual bool IsProfilingEnabled() const = 0; }; } // namespace pipe } // namespace arm