diff options
-rw-r--r-- | Android.mk | 2 | ||||
-rw-r--r-- | CMakeLists.txt | 4 | ||||
-rw-r--r-- | src/armnnUtils/Filesystem.cpp | 50 | ||||
-rw-r--r-- | src/armnnUtils/Filesystem.hpp | 18 | ||||
-rw-r--r-- | src/armnnUtils/Processes.cpp | 30 | ||||
-rw-r--r-- | src/armnnUtils/Processes.hpp | 16 | ||||
-rw-r--r-- | src/profiling/SendCounterPacket.cpp | 4 | ||||
-rw-r--r-- | src/profiling/test/FileOnlyProfilingDecoratorTests.cpp | 7 | ||||
-rw-r--r-- | src/profiling/test/SendCounterPacketTests.cpp | 4 |
9 files changed, 129 insertions, 6 deletions
diff --git a/Android.mk b/Android.mk index 8f348d9ec5..60d1f7ba58 100644 --- a/Android.mk +++ b/Android.mk @@ -118,6 +118,8 @@ LOCAL_SRC_FILES := \ src/armnnUtils/TensorUtils.cpp \ src/armnnUtils/VerificationHelpers.cpp \ src/armnnUtils/NetworkSockets.cpp \ + src/armnnUtils/Filesystem.cpp \ + src/armnnUtils/Processes.cpp \ src/armnn/layers/AbsLayer.cpp \ src/armnn/layers/ActivationLayer.cpp \ src/armnn/layers/AdditionLayer.cpp \ diff --git a/CMakeLists.txt b/CMakeLists.txt index e39c2b8871..14c2c0c90f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -40,6 +40,10 @@ list(APPEND armnnUtils_sources include/armnnUtils/Permute.hpp include/armnnUtils/FloatingPointConverter.hpp include/armnnUtils/TensorUtils.hpp + src/armnnUtils/Filesystem.hpp + src/armnnUtils/Filesystem.cpp + src/armnnUtils/Processes.hpp + src/armnnUtils/Processes.cpp src/armnnUtils/GraphTopologicalSort.hpp src/armnnUtils/Half.hpp src/armnnUtils/Permute.cpp diff --git a/src/armnnUtils/Filesystem.cpp b/src/armnnUtils/Filesystem.cpp new file mode 100644 index 0000000000..08c447b3f6 --- /dev/null +++ b/src/armnnUtils/Filesystem.cpp @@ -0,0 +1,50 @@ +// +// Copyright © 2020 Arm Ltd. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#include "Filesystem.hpp" + +#if defined(__unix__) +#include <sys/stat.h> +#include <stdio.h> +#elif defined(_MSC_VER) +#define WIN32_LEAN_AND_MEAN +#include <Windows.h> +#endif + +namespace armnnUtils +{ +namespace Filesystem +{ + +long GetFileSize(const char* path) +{ +#if defined(__unix__) + struct stat statusBuffer; + if (stat(path, & statusBuffer) != 0) + { + return -1; + } + return statusBuffer.st_size; +#elif defined(_MSC_VER) + WIN32_FILE_ATTRIBUTE_DATA attr; + if (::GetFileAttributesEx(path, GetFileExInfoStandard, &attr) == 0) + { + return -1; + } + return attr.nFileSizeLow; +#endif +} + +bool Remove(const char* path) +{ +#if defined(__unix__) + return remove(path) == 0; +#elif defined(_MSC_VER) + return ::DeleteFile(path); +#endif +} + +} +} diff --git a/src/armnnUtils/Filesystem.hpp b/src/armnnUtils/Filesystem.hpp new file mode 100644 index 0000000000..d6dc5b97fd --- /dev/null +++ b/src/armnnUtils/Filesystem.hpp @@ -0,0 +1,18 @@ +// +// Copyright © 2020 Arm Ltd. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#pragma once + +namespace armnnUtils +{ +namespace Filesystem +{ + +long GetFileSize(const char* path); + +bool Remove(const char* path); + +} +} diff --git a/src/armnnUtils/Processes.cpp b/src/armnnUtils/Processes.cpp new file mode 100644 index 0000000000..0e43e8cecd --- /dev/null +++ b/src/armnnUtils/Processes.cpp @@ -0,0 +1,30 @@ +// +// Copyright © 2020 Arm Ltd. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#include "Processes.hpp" + +#if defined(__unix__) +#include <unistd.h> +#elif defined(_MSC_VER) +#define WIN32_LEAN_AND_MEAN +#include <Windows.h> +#endif + +namespace armnnUtils +{ +namespace Processes +{ + +int GetCurrentId() +{ +#if defined(__unix__) + return getpid(); +#elif defined(_MSC_VER) + return ::GetCurrentProcessId(); +#endif +} + +} +} diff --git a/src/armnnUtils/Processes.hpp b/src/armnnUtils/Processes.hpp new file mode 100644 index 0000000000..0f1d955bb1 --- /dev/null +++ b/src/armnnUtils/Processes.hpp @@ -0,0 +1,16 @@ +// +// Copyright © 2020 Arm Ltd. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#pragma once + +namespace armnnUtils +{ +namespace Processes +{ + +int GetCurrentId(); + +} +} diff --git a/src/profiling/SendCounterPacket.cpp b/src/profiling/SendCounterPacket.cpp index 5128331c46..4d305af951 100644 --- a/src/profiling/SendCounterPacket.cpp +++ b/src/profiling/SendCounterPacket.cpp @@ -9,6 +9,7 @@ #include <armnn/Exceptions.hpp> #include <armnn/Conversion.hpp> +#include <Processes.hpp> #include <boost/format.hpp> #include <boost/numeric/conversion/cast.hpp> @@ -90,7 +91,8 @@ void SendCounterPacket::SendStreamMetaDataPacket() offset += sizeUint32; WriteUint32(writeBuffer, offset, MAX_METADATA_PACKET_LENGTH); // max_data_length offset += sizeUint32; - WriteUint32(writeBuffer, offset, numeric_cast<uint32_t>(getpid())); // pid + int pid = armnnUtils::Processes::GetCurrentId(); + WriteUint32(writeBuffer, offset, numeric_cast<uint32_t>(pid)); // pid offset += sizeUint32; uint32_t poolOffset = bodySize; WriteUint32(writeBuffer, offset, infoSize ? poolOffset : 0); // offset_info diff --git a/src/profiling/test/FileOnlyProfilingDecoratorTests.cpp b/src/profiling/test/FileOnlyProfilingDecoratorTests.cpp index 26634704ae..4112dbac03 100644 --- a/src/profiling/test/FileOnlyProfilingDecoratorTests.cpp +++ b/src/profiling/test/FileOnlyProfilingDecoratorTests.cpp @@ -7,6 +7,7 @@ #include <ProfilingService.hpp> #include <Runtime.hpp> +#include <Filesystem.hpp> #include <boost/core/ignore_unused.hpp> #include <boost/filesystem.hpp> @@ -94,12 +95,10 @@ BOOST_AUTO_TEST_CASE(DumpOutgoingValidFileEndToEnd) profilingService.ResetExternalProfilingOptions(options, true); // The output file size should be greater than 0. - struct stat statusBuffer; - BOOST_CHECK(stat(tempPath.c_str(), &statusBuffer) == 0); - BOOST_CHECK(statusBuffer.st_size > 0); + BOOST_CHECK(armnnUtils::Filesystem::GetFileSize(tempPath.string().c_str()) > 0); // Delete the tmp file. - BOOST_CHECK(remove(tempPath.c_str()) == 0); + BOOST_CHECK(armnnUtils::Filesystem::Remove(tempPath.string().c_str())); } BOOST_AUTO_TEST_SUITE_END() diff --git a/src/profiling/test/SendCounterPacketTests.cpp b/src/profiling/test/SendCounterPacketTests.cpp index 19423165a9..83bffe4686 100644 --- a/src/profiling/test/SendCounterPacketTests.cpp +++ b/src/profiling/test/SendCounterPacketTests.cpp @@ -10,6 +10,7 @@ #include <EncodeVersion.hpp> #include <ProfilingUtils.hpp> #include <SendCounterPacket.hpp> +#include <Processes.hpp> #include <armnn/Exceptions.hpp> #include <armnn/Conversion.hpp> @@ -335,7 +336,8 @@ BOOST_AUTO_TEST_CASE(SendStreamMetaDataPacketTest) offset += sizeUint32; BOOST_TEST(ReadUint32(readBuffer2, offset) == MAX_METADATA_PACKET_LENGTH); // max_data_len offset += sizeUint32; - BOOST_TEST(ReadUint32(readBuffer2, offset) == numeric_cast<uint32_t>(getpid())); // pid + int pid = armnnUtils::Processes::GetCurrentId(); + BOOST_TEST(ReadUint32(readBuffer2, offset) == numeric_cast<uint32_t>(pid)); offset += sizeUint32; uint32_t poolOffset = 10 * sizeUint32; BOOST_TEST(ReadUint32(readBuffer2, offset) == (infoSize ? poolOffset : 0)); // offset_info |