aboutsummaryrefslogtreecommitdiff
path: root/src/armnnUtils/HeapProfiling.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/armnnUtils/HeapProfiling.hpp')
-rw-r--r--src/armnnUtils/HeapProfiling.hpp47
1 files changed, 47 insertions, 0 deletions
diff --git a/src/armnnUtils/HeapProfiling.hpp b/src/armnnUtils/HeapProfiling.hpp
new file mode 100644
index 0000000000..febcbfe2b3
--- /dev/null
+++ b/src/armnnUtils/HeapProfiling.hpp
@@ -0,0 +1,47 @@
+//
+// Copyright © 2017 Arm Ltd. All rights reserved.
+// See LICENSE file in the project root for full license information.
+//
+#pragma once
+
+#ifdef ARMNN_HEAP_PROFILING_ENABLED
+
+#include <string>
+#include <cstddef>
+
+// this is conditional so we can change the environment variable
+// at build time
+#ifndef ARMNN_HEAP_PROFILE_DUMP_DIR
+#define ARMNN_HEAP_PROFILE_DUMP_DIR "ARMNN_HEAP_PROFILE_DUMP_DIR"
+#endif // ARMNN_HEAP_PROFILE_DUMP_DIR
+
+namespace armnnUtils
+{
+class ScopedHeapProfiler final
+{
+public:
+ ScopedHeapProfiler(const std::string & tag);
+ ~ScopedHeapProfiler();
+
+private:
+ // Location comes from the ARMNN_HEAP_PROFILE_DUMP_DIR
+ // if not available then it dumps to /tmp
+ std::string m_Location;
+ std::string m_Tag;
+
+ // No default construction and copying
+ ScopedHeapProfiler() = delete;
+ ScopedHeapProfiler(const ScopedHeapProfiler &) = delete;
+ ScopedHeapProfiler & operator=(const ScopedHeapProfiler &) = delete;
+};
+
+} // namespace armnnUtils
+
+#define ARMNN_SCOPED_HEAP_PROFILING(TAG) \
+ armnnUtils::ScopedHeapProfiler __scoped_armnn_heap_profiler__(TAG)
+
+#else // ARMNN_HEAP_PROFILING_ENABLED
+
+#define ARMNN_SCOPED_HEAP_PROFILING(TAG)
+
+#endif // ARMNN_HEAP_PROFILING_ENABLED