diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/armnnUtils/Threads.cpp | 31 | ||||
-rw-r--r-- | src/armnnUtils/Threads.hpp | 16 | ||||
-rw-r--r-- | src/profiling/ProfilingUtils.cpp | 4 | ||||
-rw-r--r-- | src/profiling/ProfilingUtils.hpp | 6 | ||||
-rw-r--r-- | src/profiling/SendTimelinePacket.cpp | 4 | ||||
-rw-r--r-- | src/profiling/SendTimelinePacket.hpp | 4 | ||||
-rw-r--r-- | src/profiling/TimelineUtilityMethods.cpp | 6 | ||||
-rw-r--r-- | src/profiling/test/ProfilingTestUtils.cpp | 5 | ||||
-rw-r--r-- | src/profiling/test/ProfilingTestUtils.hpp | 2 | ||||
-rw-r--r-- | src/profiling/test/SendTimelinePacketTests.cpp | 3 | ||||
-rw-r--r-- | src/profiling/test/TimelinePacketTests.cpp | 9 | ||||
-rw-r--r-- | src/timelineDecoder/tests/TimelineTests.cpp | 7 |
12 files changed, 74 insertions, 23 deletions
diff --git a/src/armnnUtils/Threads.cpp b/src/armnnUtils/Threads.cpp new file mode 100644 index 0000000000..561edcb8b7 --- /dev/null +++ b/src/armnnUtils/Threads.cpp @@ -0,0 +1,31 @@ +// +// Copyright © 2020 Arm Ltd and Contributors. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#include "Threads.hpp" + +#if defined(__linux__) +#include <unistd.h> +#include <sys/syscall.h> +#define gettid() syscall(SYS_gettid) +#elif defined(_MSC_VER) +#include "WindowsWrapper.hpp" +#endif + +namespace armnnUtils +{ +namespace Threads +{ + +int GetCurrentThreadId() +{ +#if defined(__linux__) + return static_cast<int>(gettid()); +#elif defined(_MSC_VER) + return ::GetCurrentThreadId(); +#endif +} + +} +} diff --git a/src/armnnUtils/Threads.hpp b/src/armnnUtils/Threads.hpp new file mode 100644 index 0000000000..4cecfd5079 --- /dev/null +++ b/src/armnnUtils/Threads.hpp @@ -0,0 +1,16 @@ +// +// Copyright © 2020 Arm Ltd and Contributors. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#pragma once + +namespace armnnUtils +{ +namespace Threads +{ + +int GetCurrentThreadId(); + +} +} diff --git a/src/profiling/ProfilingUtils.cpp b/src/profiling/ProfilingUtils.cpp index d67694fc33..3f6e56349b 100644 --- a/src/profiling/ProfilingUtils.cpp +++ b/src/profiling/ProfilingUtils.cpp @@ -802,7 +802,7 @@ TimelinePacketStatus WriteTimelineEventClassBinary(uint64_t profilingGuid, } TimelinePacketStatus WriteTimelineEventBinary(uint64_t timestamp, - std::thread::id threadId, + int threadId, uint64_t profilingGuid, unsigned char* buffer, unsigned int remainingBufferSize, @@ -1093,7 +1093,7 @@ Packet ReceivePacket(const unsigned char* buffer, uint32_t length) namespace std { -bool operator==(const std::vector<uint8_t>& left, std::thread::id right) +bool operator==(const std::vector<uint8_t>& left, int right) { return std::memcmp(left.data(), &right, left.size()) == 0; } diff --git a/src/profiling/ProfilingUtils.hpp b/src/profiling/ProfilingUtils.hpp index 95fa780934..2ead31652d 100644 --- a/src/profiling/ProfilingUtils.hpp +++ b/src/profiling/ProfilingUtils.hpp @@ -28,7 +28,7 @@ namespace armnn namespace profiling { -constexpr unsigned int ThreadIdSize = sizeof(std::thread::id); // Is platform dependent +constexpr unsigned int ThreadIdSize = sizeof(int); // Is platform dependent struct SwTraceHeader { @@ -245,7 +245,7 @@ TimelinePacketStatus WriteTimelineEventClassBinary(uint64_t profilingGuid, unsigned int& numberOfBytesWritten); TimelinePacketStatus WriteTimelineEventBinary(uint64_t timestamp, - std::thread::id threadId, + int threadId, uint64_t profilingGuid, unsigned char* buffer, unsigned int bufferSize, @@ -271,6 +271,6 @@ Packet ReceivePacket(const unsigned char* buffer, uint32_t length); namespace std { -bool operator==(const std::vector<uint8_t>& left, std::thread::id right); +bool operator==(const std::vector<uint8_t>& left, int right); } // namespace std diff --git a/src/profiling/SendTimelinePacket.cpp b/src/profiling/SendTimelinePacket.cpp index 2ca5f5470b..11e3d2f489 100644 --- a/src/profiling/SendTimelinePacket.cpp +++ b/src/profiling/SendTimelinePacket.cpp @@ -1,5 +1,5 @@ // -// Copyright © 2019 Arm Ltd. All rights reserved. +// Copyright © 2019 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // @@ -89,7 +89,7 @@ void SendTimelinePacket::SendTimelineEntityBinaryPacket(uint64_t profilingGuid) } void SendTimelinePacket::SendTimelineEventBinaryPacket(uint64_t timestamp, - std::thread::id threadId, + int threadId, uint64_t profilingGuid) { ForwardWriteBinaryFunction(WriteTimelineEventBinary, diff --git a/src/profiling/SendTimelinePacket.hpp b/src/profiling/SendTimelinePacket.hpp index 2b710c7a25..90016d06f3 100644 --- a/src/profiling/SendTimelinePacket.hpp +++ b/src/profiling/SendTimelinePacket.hpp @@ -1,5 +1,5 @@ // -// Copyright © 2019 Arm Ltd. All rights reserved. +// Copyright © 2019 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // @@ -36,7 +36,7 @@ public: void SendTimelineEntityBinaryPacket(uint64_t profilingGuid) override; /// Create and write a TimelineEventBinaryPacket from the parameters to the buffer. - void SendTimelineEventBinaryPacket(uint64_t timestamp, std::thread::id threadId, uint64_t profilingGuid) override; + void SendTimelineEventBinaryPacket(uint64_t timestamp, int threadId, uint64_t profilingGuid) override; /// Create and write a TimelineEventClassBinaryPacket from the parameters to the buffer. void SendTimelineEventClassBinaryPacket(uint64_t profilingGuid, uint64_t nameGuid) override; diff --git a/src/profiling/TimelineUtilityMethods.cpp b/src/profiling/TimelineUtilityMethods.cpp index 2727bd6e9b..fe5c6b1340 100644 --- a/src/profiling/TimelineUtilityMethods.cpp +++ b/src/profiling/TimelineUtilityMethods.cpp @@ -2,9 +2,9 @@ // Copyright © 2019 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // - -#include "TimelineUtilityMethods.hpp" #include "LabelsAndEventClasses.hpp" +#include <Threads.hpp> +#include "TimelineUtilityMethods.hpp" namespace armnn { @@ -368,7 +368,7 @@ ProfilingDynamicGuid TimelineUtilityMethods::RecordEvent(ProfilingGuid entityGui uint64_t timestamp = GetTimestamp(); // Get the thread id - std::thread::id threadId = std::this_thread::get_id(); + int threadId = armnnUtils::Threads::GetCurrentThreadId(); // Generate a GUID for the event ProfilingDynamicGuid eventGuid = profiling::ProfilingService::GetNextGuid(); diff --git a/src/profiling/test/ProfilingTestUtils.cpp b/src/profiling/test/ProfilingTestUtils.cpp index 9f6bc43be8..526f3f95fd 100644 --- a/src/profiling/test/ProfilingTestUtils.cpp +++ b/src/profiling/test/ProfilingTestUtils.cpp @@ -8,6 +8,7 @@ #include <armnn/Descriptors.hpp> #include <LabelsAndEventClasses.hpp> +#include <Threads.hpp> #include <ProfilingService.hpp> #include <test/TestUtils.hpp> @@ -295,7 +296,7 @@ ProfilingGuid VerifyTimelineEntityBinaryPacketData(Optional<ProfilingGuid> guid, } ProfilingGuid VerifyTimelineEventBinaryPacket(Optional<uint64_t> timestamp, - Optional<std::thread::id> threadId, + Optional<int> threadId, Optional<ProfilingGuid> eventGuid, const unsigned char* readableData, unsigned int& offset) @@ -333,7 +334,7 @@ ProfilingGuid VerifyTimelineEventBinaryPacket(Optional<uint64_t> timestamp, } else { - BOOST_CHECK(readThreadId == std::this_thread::get_id()); + BOOST_CHECK(readThreadId == armnnUtils::Threads::GetCurrentThreadId()); } // Check the event GUID diff --git a/src/profiling/test/ProfilingTestUtils.hpp b/src/profiling/test/ProfilingTestUtils.hpp index 8f138bb315..4daf9d5f4a 100644 --- a/src/profiling/test/ProfilingTestUtils.hpp +++ b/src/profiling/test/ProfilingTestUtils.hpp @@ -53,7 +53,7 @@ ProfilingGuid VerifyTimelineEntityBinaryPacketData(Optional<ProfilingGuid> guid, unsigned int& offset); ProfilingGuid VerifyTimelineEventBinaryPacket(Optional<uint64_t> timestamp, - Optional<std::thread::id> threadId, + Optional<int> threadId, Optional<ProfilingGuid> eventGuid, const unsigned char* readableData, unsigned int& offset); diff --git a/src/profiling/test/SendTimelinePacketTests.cpp b/src/profiling/test/SendTimelinePacketTests.cpp index 4b45cfef76..da30cef90c 100644 --- a/src/profiling/test/SendTimelinePacketTests.cpp +++ b/src/profiling/test/SendTimelinePacketTests.cpp @@ -6,6 +6,7 @@ #include "ProfilingMocks.hpp" #include <BufferManager.hpp> +#include <Threads.hpp> #include <ProfilingService.hpp> #include <ProfilingUtils.hpp> #include <SendTimelinePacket.hpp> @@ -322,7 +323,7 @@ BOOST_AUTO_TEST_CASE(SendEventClassAfterTimelineEntityPacketTest) // Send TimelineEventBinaryPacket const uint64_t timestamp = 456789u; - const std::thread::id threadId = std::this_thread::get_id(); + const int threadId = armnnUtils::Threads::GetCurrentThreadId(); const uint64_t eventProfilingGuid = 123456u; sendTimelinePacket->SendTimelineEventBinaryPacket(timestamp, threadId, eventProfilingGuid); diff --git a/src/profiling/test/TimelinePacketTests.cpp b/src/profiling/test/TimelinePacketTests.cpp index 96e9bf2400..71c6915a8c 100644 --- a/src/profiling/test/TimelinePacketTests.cpp +++ b/src/profiling/test/TimelinePacketTests.cpp @@ -3,6 +3,7 @@ // SPDX-License-Identifier: MIT // +#include <Threads.hpp> #include <ProfilingUtils.hpp> #include <boost/test/unit_test.hpp> @@ -724,7 +725,7 @@ BOOST_AUTO_TEST_CASE(TimelineEventClassTestFullConstructionOfData) BOOST_AUTO_TEST_CASE(TimelineEventPacketTestNoBuffer) { const uint64_t timestamp = 456789u; - const std::thread::id threadId = std::this_thread::get_id(); + const int threadId = armnnUtils::Threads::GetCurrentThreadId(); const uint64_t profilingGuid = 123456u; unsigned int numberOfBytesWritten = 789u; TimelinePacketStatus result = WriteTimelineEventBinary(timestamp, @@ -742,7 +743,7 @@ BOOST_AUTO_TEST_CASE(TimelineEventPacketTestBufferExhaustionZeroValue) std::vector<unsigned char> buffer(512, 0); const uint64_t timestamp = 456789u; - const std::thread::id threadId = std::this_thread::get_id(); + const int threadId = armnnUtils::Threads::GetCurrentThreadId(); const uint64_t profilingGuid = 123456u; unsigned int numberOfBytesWritten = 789u; TimelinePacketStatus result = WriteTimelineEventBinary(timestamp, @@ -760,7 +761,7 @@ BOOST_AUTO_TEST_CASE(TimelineEventPacketTestBufferExhaustionFixedValue) std::vector<unsigned char> buffer(10, 0); const uint64_t timestamp = 456789u; - const std::thread::id threadId = std::this_thread::get_id(); + const int threadId = armnnUtils::Threads::GetCurrentThreadId(); const uint64_t profilingGuid = 123456u; unsigned int numberOfBytesWritten = 789u; TimelinePacketStatus result = WriteTimelineEventBinary(timestamp, @@ -778,7 +779,7 @@ BOOST_AUTO_TEST_CASE(TimelineEventPacketTestFullConstructionOfData) std::vector<unsigned char> buffer(512, 0); const uint64_t timestamp = 456789u; - const std::thread::id threadId = std::this_thread::get_id(); + const int threadId = armnnUtils::Threads::GetCurrentThreadId(); const uint64_t profilingGuid = 123456u; unsigned int numberOfBytesWritten = 789u; TimelinePacketStatus result = WriteTimelineEventBinary(timestamp, diff --git a/src/timelineDecoder/tests/TimelineTests.cpp b/src/timelineDecoder/tests/TimelineTests.cpp index 8d0b8a0f08..08d29d0f6a 100644 --- a/src/timelineDecoder/tests/TimelineTests.cpp +++ b/src/timelineDecoder/tests/TimelineTests.cpp @@ -1,5 +1,5 @@ // -// Copyright © 2019 Arm Ltd. All rights reserved. +// Copyright © 2019 Arm Ltd and Contributors. All rights reserved. // SPDX-License-Identifier: MIT // @@ -8,6 +8,7 @@ #include <TimelineDecoder.hpp> #include <CommandHandlerFunctor.hpp> +#include <Threads.hpp> #include <ProfilingService.hpp> #include <PacketBuffer.hpp> #include <TimelinePacketWriterFactory.hpp> @@ -172,7 +173,7 @@ BOOST_AUTO_TEST_CASE(TimelineCaptureTest) const uint64_t timestamp = 33333u; const uint64_t eventGuid = 44444u; - const std::thread::id threadId = std::this_thread::get_id(); + const int threadId = armnnUtils::Threads::GetCurrentThreadId(); // need to do a bit of work here to extract the value from threadId unsigned char* uCharThreadId = new unsigned char[armnn::profiling::ThreadIdSize]();; @@ -285,7 +286,7 @@ BOOST_AUTO_TEST_CASE(TimelineCaptureTestMultipleStringsInBuffer) const uint64_t timestamp = 33333u; const uint64_t eventGuid = 44444u; - const std::thread::id threadId = std::this_thread::get_id(); + const int threadId = armnnUtils::Threads::GetCurrentThreadId(); // need to do a bit of work here to extract the value from threadId unsigned char* uCharThreadId = new unsigned char[armnn::profiling::ThreadIdSize](); |