#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;
}
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);
+}
#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__