18#include "pw_allocator/allocator.h"
19#include "pw_sync/borrow.h"
21namespace pw::allocator {
32template <
typename LockType>
36 :
Allocator(allocator.capabilities()), borrowable_(allocator, lock_) {}
42 void* DoAllocate(
Layout layout)
override {
43 Pointer allocator = borrowable_.acquire();
44 return allocator->Allocate(layout);
48 void DoDeallocate(
void* ptr)
override {
49 Pointer allocator = borrowable_.acquire();
50 return allocator->Deallocate(ptr);
54 void DoDeallocate(
void* ptr,
Layout)
override { DoDeallocate(ptr); }
57 bool DoResize(
void* ptr,
size_t new_size)
override {
58 Pointer allocator = borrowable_.acquire();
59 return allocator->Resize(ptr, new_size);
62 void* DoReallocate(
void* ptr,
Layout new_layout)
override {
63 Pointer allocator = borrowable_.acquire();
64 return allocator->Reallocate(ptr, new_layout);
68 Result<Layout> DoGetInfo(InfoType info_type,
const void* ptr)
const override {
69 Pointer allocator = borrowable_.acquire();
70 return GetInfo(*allocator, info_type, ptr);
Definition: allocator.h:32
constexpr Allocator()=default
TODO(b/326509341): Remove when downstream consumers migrate.
Definition: synchronized_allocator.h:33
Definition: synchronized_allocator.h:81