19#include "pw_containers/intrusive_forward_list.h"
20#include "pw_multibuf/config.h"
21#include "pw_multibuf/multibuf_v1.h"
22#include "pw_result/result.h"
23#include "pw_sync/mutex.h"
25namespace pw::multibuf {
29enum class PW_MULTIBUF_DEPRECATED ContiguityRequirement {
34inline constexpr ContiguityRequirement kAllowDiscontiguous =
35 ContiguityRequirement::kAllowDiscontiguous;
36inline constexpr ContiguityRequirement kNeedsContiguous =
37 ContiguityRequirement::kNeedsContiguous;
90 std::optional<MultiBuf>
Allocate(
size_t min_size,
size_t desired_size);
117 size_t desired_size);
136 size_t contiguous_size_available);
142 class MemoryAvailableDelegate
145 explicit MemoryAvailableDelegate() =
default;
146 MemoryAvailableDelegate(MemoryAvailableDelegate&) =
delete;
147 MemoryAvailableDelegate& operator=(MemoryAvailableDelegate&) =
delete;
148 MemoryAvailableDelegate(MemoryAvailableDelegate&&) =
delete;
149 MemoryAvailableDelegate& operator=(MemoryAvailableDelegate&&) =
delete;
150 virtual ~MemoryAvailableDelegate() =
default;
156 size_t size_available,
157 size_t contiguous_size_available)
const
161 void AddMemoryAvailableDelegate(MemoryAvailableDelegate& delegate)
163 mem_delegates_.push_front(delegate);
166 void RemoveMemoryAvailableDelegate(MemoryAvailableDelegate& delegate)
168 mem_delegates_.remove(delegate);
191 ContiguityRequirement contiguity_requirement) = 0;
Definition: intrusive_forward_list.h:91
Definition: allocator_async.h:93
Definition: allocator.h:57
std::optional< size_t > GetBackingCapacity()
Definition: allocator.h:126
std::optional< MultiBuf > AllocateContiguous(size_t size)
std::optional< MultiBuf > Allocate(size_t min_size, size_t desired_size)
virtual pw::Result< MultiBuf > DoAllocate(size_t min_size, size_t desired_size, ContiguityRequirement contiguity_requirement)=0
std::optional< MultiBuf > Allocate(size_t size)
virtual std::optional< size_t > DoGetBackingCapacity()=0
MultiBufAllocator(MultiBufAllocator &)=delete
`MultiBufAllocator is not copyable or movable.
std::optional< MultiBuf > AllocateContiguous(size_t min_size, size_t desired_size)
void MoreMemoryAvailable(size_t size_available, size_t contiguous_size_available)
#define PW_GUARDED_BY(x)
Definition: lock_annotations.h:60
#define PW_EXCLUSIVE_LOCKS_REQUIRED(...)
Definition: lock_annotations.h:146