Dawn Framework 1.0
Universal data acquisition framework for embedded systems
memory.cxx
1// dawn/src/porting/nuttx/memory.cxx
2//
3// SPDX-License-Identifier: Apache-2.0
4//
5
6#include "dawn/porting/memory.hxx"
7
8#include <cstring>
9#include <errno.h>
10#include <nuttx/mm/mm.h>
11
12namespace dawn
13{
14namespace porting
15{
16
17int memory_pool_init(memory_pool_s *pool, const char *name, void *buffer, size_t size)
18{
19 if (pool == nullptr || buffer == nullptr || size == 0)
20 {
21 return -EINVAL;
22 }
23
24 if (pool->heap != nullptr)
25 {
26 return OK;
27 }
28
29 pool->heap = mm_initialize(name, buffer, size);
30 return pool->heap == nullptr ? -ENOMEM : OK;
31}
32
33void *memory_pool_zalloc(memory_pool_s *pool, size_t size)
34{
35 void *ptr;
36
37 if (pool == nullptr || pool->heap == nullptr || size == 0)
38 {
39 return nullptr;
40 }
41
42 ptr = mm_malloc(static_cast<mm_heap_s *>(pool->heap), size);
43 if (ptr != nullptr)
44 {
45 std::memset(ptr, 0, size);
46 }
47
48 return ptr;
49}
50
51void memory_pool_free(memory_pool_s *pool, void *ptr)
52{
53 if (pool == nullptr || pool->heap == nullptr || ptr == nullptr)
54 {
55 return;
56 }
57
58 mm_free(static_cast<mm_heap_s *>(pool->heap), ptr);
59}
60
61} // namespace porting
62} // namespace dawn
Out-of-tree user-extension hooks for Dawn.
Definition bindable.hxx:13