[Pure ACL NN Runtime] Implement ANeuralNetworksMemory (#424)
author박종현/동작제어Lab(SR)/Senior Engineer/삼성전자 <jh1302.park@samsung.com>
Thu, 5 Apr 2018 04:08:09 +0000 (13:08 +0900)
committer서상민/동작제어Lab(SR)/Senior Engineer/삼성전자 <sangmin7.seo@samsung.com>
Thu, 5 Apr 2018 04:08:09 +0000 (13:08 +0900)
This commit implements ANeuralNetworksMemory in experimental pure ACL NN
runtime.

Signed-off-by: Jonghyun Park <jh1302.park@samsung.com>
tools/nnapi_bindings/bindings/pure_arm_compute/src/memory.cc
tools/nnapi_bindings/bindings/pure_arm_compute/src/memory.h

index f031933..6200c16 100644 (file)
@@ -1,11 +1,12 @@
 #include <nnapi.h>
+#include <sys/mman.h>
 
 #include "memory.h"
 
 ResultCode
 ANeuralNetworksMemory_createFromFd(size_t size, int protect, int fd, size_t offset, ANeuralNetworksMemory** memory)
 {
-  *memory = new ANeuralNetworksMemory{};
+  *memory = new ANeuralNetworksMemory{size, protect, fd, offset};
 
   return ANEURALNETWORKS_NO_ERROR;
 }
@@ -17,3 +18,17 @@ ANeuralNetworksMemory_free(ANeuralNetworksMemory* memory)
 
   return ANEURALNETWORKS_NO_ERROR;
 }
+
+//
+// ANeuralNetworksMemory
+//
+ANeuralNetworksMemory::ANeuralNetworksMemory(size_t size, int protect, int fd, size_t offset)
+{
+  _base = reinterpret_cast<uint8_t *>(mmap(nullptr, size, protect, MAP_PRIVATE, fd, offset));
+  _size = size;
+}
+
+ANeuralNetworksMemory::~ANeuralNetworksMemory()
+{
+  munmap(reinterpret_cast<void *>(_base), _size);
+}
index a4fed82..fc0453c 100644 (file)
@@ -1,8 +1,21 @@
 #ifndef __MEMORY_H__
 #define __MEMORY_H__
 
+#include <cstdint>
+
 struct ANeuralNetworksMemory
 {
+public:
+  ANeuralNetworksMemory(size_t size, int protect, int fd, size_t offset);
+  ~ANeuralNetworksMemory();
+
+public:
+  size_t size(void) const { return _size; }
+  uint8_t *base(void) { return _base; }
+
+private:
+  size_t _size;
+  uint8_t *_base;
 };
 
 #endif // __MEMORY_H__