Skip to content

Commit 9a978c4

Browse files
committed
fixed usage of default c++ new/delete memory resource
1 parent 6ed86a4 commit 9a978c4

File tree

5 files changed

+21
-14
lines changed

5 files changed

+21
-14
lines changed

libcyphal_demo/src/application.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,15 @@ namespace
2525
constexpr std::size_t HeapSize = 16ULL * 1024ULL;
2626
alignas(O1HEAP_ALIGNMENT) std::array<cetl::byte, HeapSize> s_heap_arena{}; // NOLINT
2727

28+
constexpr std::size_t BlockHeapSize = 128ULL * 1024ULL;
29+
alignas(O1HEAP_ALIGNMENT) std::array<cetl::byte, BlockHeapSize> s_block_heap_arena{}; // NOLINT
30+
2831
} // namespace
2932

3033
Application::Application(const char* const root_path)
3134
: o1_heap_mr_{s_heap_arena}
32-
, media_block_mr_{*cetl::pmr::new_delete_resource()}
35+
, o1_block_heap_mr_{s_block_heap_arena}
36+
, media_block_mr_{o1_block_heap_mr_}
3337
, storage_{root_path}
3438
, registry_{o1_heap_mr_}
3539
, regs_{o1_heap_mr_, registry_, media_block_mr_}

libcyphal_demo/src/application.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
#include <cetl/pf17/cetlpf.hpp>
1717
#include <libcyphal/application/registry/register.hpp>
1818
#include <libcyphal/application/registry/registry_impl.hpp>
19-
#include <libcyphal/platform/storage.hpp>
2019

2120
#include <algorithm>
2221
#include <array>
@@ -247,6 +246,7 @@ class Application final
247246

248247
platform::Linux::EpollSingleThreadedExecutor executor_;
249248
platform::O1HeapMemoryResource o1_heap_mr_;
249+
platform::O1HeapMemoryResource o1_block_heap_mr_;
250250
platform::BlockMemoryResource media_block_mr_;
251251
platform::storage::KeyValue storage_;
252252
libcyphal::application::registry::Registry registry_;

libcyphal_demo/src/no_cpp_heap.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
#include <cetl/cetl.hpp>
88

99
#include <cstddef>
10+
#include <cstdlib>
1011
#include <iostream>
1112

1213
#if (__cplusplus >= CETL_CPP_STANDARD_17)

libcyphal_demo/src/platform/block_memory_resource.hpp

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,8 @@ class BlockMemoryResource final : public cetl::pmr::memory_resource
3636
}; // Diagnostics
3737

3838
explicit BlockMemoryResource(cetl::pmr::memory_resource& memory)
39-
: pool_ptr_{nullptr, {&memory, 0U}}
39+
: memory_{memory}
40+
, pool_ptr_{nullptr, {&memory, 0U}}
4041
{
4142
}
4243

@@ -63,8 +64,7 @@ class BlockMemoryResource final : public cetl::pmr::memory_resource
6364
CETL_DEBUG_ASSERT(pool_size >= alignment, "");
6465
CETL_DEBUG_ASSERT(alignment && !(alignment & (alignment - 1)), "Should be a power of 2");
6566

66-
auto* const mr = pool_ptr_.get_deleter().resource();
67-
pool_ptr_ = PoolPtr{mr->allocate(pool_size), {mr, pool_size}};
67+
pool_ptr_ = PoolPtr{memory_.allocate(pool_size), {&memory_, pool_size}};
6868
if (!pool_ptr_)
6969
{
7070
CETL_DEBUG_ASSERT(false, "Failed to allocate memory pool");
@@ -176,15 +176,16 @@ class BlockMemoryResource final : public cetl::pmr::memory_resource
176176
private:
177177
using PoolPtr = std::unique_ptr<void, cetl::pmr::MemoryResourceDeleter<cetl::pmr::memory_resource>>;
178178

179-
PoolPtr pool_ptr_;
180-
std::size_t alignment_{0U};
181-
void** head_{nullptr};
182-
std::size_t block_count_{0U};
183-
std::size_t block_size_{0U};
184-
std::size_t used_blocks_{0U};
185-
std::size_t used_blocks_peak_{0U};
186-
std::size_t request_count_{0U};
187-
std::size_t oom_count_{0U};
179+
cetl::pmr::memory_resource& memory_;
180+
PoolPtr pool_ptr_;
181+
std::size_t alignment_{0U};
182+
void** head_{nullptr};
183+
std::size_t block_count_{0U};
184+
std::size_t block_size_{0U};
185+
std::size_t used_blocks_{0U};
186+
std::size_t used_blocks_peak_{0U};
187+
std::size_t request_count_{0U};
188+
std::size_t oom_count_{0U};
188189

189190
// See `do_allocate` special case for zero bytes.
190191
// Note that we still need at least one byte - b/c `std::array<..., 0>::data()` returns `nullptr`.

libcyphal_demo/src/platform/o1_heap_memory_resource.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
#include <algorithm>
1515
#include <array>
1616
#include <cstddef>
17+
#include <cstdint>
1718
#include <cstring>
1819

1920
namespace platform

0 commit comments

Comments
 (0)