Memory Domain Runtime: Explicit memory copying. - Implement ANNMemory_copy. - Add validation tests. Bug: 141353602 Bug: 141363565 Test: NNT_static Change-Id: Id0ec2431cf9cfff650cd8885de4d15abee306a9c Merged-In: Id0ec2431cf9cfff650cd8885de4d15abee306a9c (cherry picked from commit 9af11e783aadacf78330a5e6e4e8255f41789c13)
diff --git a/runtime/NeuralNetworks.cpp b/runtime/NeuralNetworks.cpp index f9d60d0..6b4114e 100644 --- a/runtime/NeuralNetworks.cpp +++ b/runtime/NeuralNetworks.cpp
@@ -909,10 +909,15 @@ return ANEURALNETWORKS_NO_ERROR; } -int ANeuralNetworksMemory_copy(const ANeuralNetworksMemory* /*src*/, - const ANeuralNetworksMemory* /*dst*/) { - // TODO(xusongw): Implement. - return ANEURALNETWORKS_OP_FAILED; +int ANeuralNetworksMemory_copy(const ANeuralNetworksMemory* src, const ANeuralNetworksMemory* dst) { + NNTRACE_RT(NNTRACE_PHASE_EXECUTION, "ANeuralNetworksMemory_copy"); + if (!src || !dst) { + LOG(ERROR) << "ANeuralNetworksMemory_copy passed a nullptr"; + return ANEURALNETWORKS_UNEXPECTED_NULL; + } + const Memory* s = reinterpret_cast<const Memory*>(src); + const Memory* d = reinterpret_cast<const Memory*>(dst); + return Memory::copy(*s, *d); } int ANeuralNetworksMemory_createFromFd(size_t size, int prot, int fd, size_t offset,