19#include "pw_allocator/allocator.h"
20#include "pw_sync/borrow.h"
21#include "pw_sync/lock_annotations.h"
23namespace pw::allocator {
34template <
typename LockType>
42 allocator_(allocator),
43 borrowable_(allocator_, lock_) {}
66 std::lock_guard lock(lock_);
72 std::lock_guard lock(lock_);
80 bool DoResize(
void* ptr,
size_t new_size)
override {
81 std::lock_guard lock(lock_);
82 return allocator_.
Resize(ptr, new_size);
86 std::lock_guard lock(lock_);
92 std::lock_guard lock(lock_);
97 Result<Layout>
DoGetInfo(InfoType info_type,
const void* ptr)
const override {
98 std::lock_guard lock(lock_);
99 return GetInfo(allocator_, info_type, ptr);
102 Allocator& allocator_ PW_GUARDED_BY(lock_);
103 mutable LockType lock_;
112 constexpr void lock() {}
113 constexpr void unlock() {}
Definition: allocator.h:34
constexpr Allocator()=default
TODO(b/326509341): Remove when downstream consumers migrate.
bool Resize(void *ptr, size_t new_size)
Definition: allocator.h:261
void * Reallocate(void *ptr, Layout new_layout)
Definition: allocator.h:295
void * Allocate(Layout layout)
Definition: allocator.h:45
size_t GetAllocated() const
Definition: allocator.h:320
void Deallocate(void *ptr)
Definition: deallocator.h:57
Definition: synchronized_allocator.h:35
void DoDeallocate(void *ptr, Layout) override
Definition: synchronized_allocator.h:77
size_t DoGetAllocated() const override
Definition: synchronized_allocator.h:91
Result< Layout > DoGetInfo(InfoType info_type, const void *ptr) const override
Definition: synchronized_allocator.h:97
Pointer Borrow() const
Definition: synchronized_allocator.h:61
void DoDeallocate(void *ptr) override
Definition: synchronized_allocator.h:71
bool DoResize(void *ptr, size_t new_size) override
Definition: synchronized_allocator.h:80
void * DoAllocate(Layout layout) override
Definition: synchronized_allocator.h:65
void * DoReallocate(void *ptr, Layout new_layout) override
Definition: synchronized_allocator.h:85
Definition: synchronized_allocator.h:111