Add thin abstraction layer for processes and filesystem

This is used instead of some hardcoded Unix calls and means this code
now works on Windows

(This is a rework of a previous patch which used boost, now that I have
been informed that we are trying to move towards removing boost).

Change-Id: Ib0d11055279bbd7b710f086e9890369e3ecbfe9a
Signed-off-by: Robert Hughes <robert.hughes@arm.com>
diff --git a/src/profiling/SendCounterPacket.cpp b/src/profiling/SendCounterPacket.cpp
index 5128331..4d305af 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 @@
         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 2663470..4112dba 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 @@
     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 1942316..83bffe4 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 @@
     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