µOS++ IIIe Reference 7.0.0
The third edition of µOS++, a POSIX inspired open source framework, written in C++
Loading...
Searching...
No Matches
os::rtos::memory_pool_inclusive< T, N > Class Template Reference

Template of a synchronised memory pool with block type and local storage. More...

#include <cmsis-plus/rtos/os.h>

+ Inheritance diagram for os::rtos::memory_pool_inclusive< T, N >:

Public Types

using allocator_type = memory::allocator< thread::stack::allocation_element_t >
 Default RTOS allocator.
 
using size_t = uint16_t
 Type of memory pool size storage.
 
using value_type = T
 Local type of message.
 

Public Member Functions

template<typename T >
constexpr std::size_t compute_allocated_size_bytes (std::size_t blocks, std::size_t block_size_bytes)
 Calculator for pool storage requirements.
 
Constructors & Destructor
 memory_pool_inclusive (const attributes &attr=initializer)
 Construct a memory pool object instance.
 
 memory_pool_inclusive (const char *name, const attributes &attr=initializer)
 Construct a named memory pool object instance.
 
virtual ~memory_pool_inclusive () override
 Destruct the memory pool object instance.
 
Public Member Functions
value_typealloc (void)
 Allocate a memory block.
 
value_typetry_alloc (void)
 Allocate a memory block.
 
value_typetimed_alloc (clock::duration_t timeout)
 Allocate a memory block with timeout.
 
result_t free (value_type *block)
 Free the memory block.
 
Operators
bool operator== (const memory_pool &rhs) const
 Compare memory pools.
 
Public Member Functions
result_t free (void *block)
 Free the memory block.
 
std::size_t capacity (void) const
 Get memory pool capacity.
 
std::size_t count (void) const
 Get blocks count.
 
std::size_t block_size (void) const
 Get block size.
 
bool empty (void) const
 Check if the memory pool is empty.
 
bool full (void) const
 Check if the memory pool is full.
 
result_t reset (void)
 Reset the memory pool.
 
void * pool (void)
 Get the pool storage address.
 
Public Member Functions
const char * name (void) const
 Get object name.
 

Static Public Member Functions

Operators
static void * operator new (std::size_t bytes)
 Allocate space for a new object instance using the RTOS system allocator.
 
static void * operator new (std::size_t bytes, void *ptr)
 Emplace a new object instance.
 
static void * operator new[] (std::size_t bytes)
 Allocate space for an array of new object instances using the RTOS system allocator.
 
static void * operator new[] (std::size_t bytes, void *ptr)
 Emplace an array of new object instances.
 
static void operator delete (void *ptr, std::size_t bytes)
 Deallocate the dynamically allocated object instance. using the RTOS system allocator.
 
static void operator delete[] (void *ptr, std::size_t bytes)
 Deallocate the dynamically allocated array of object. instances using the RTOS system allocator.
 

Static Public Attributes

static const std::size_t blocks = N
 Local constant based on template definition.
 
static const attributes initializer
 Default memory pool initialiser.
 
static constexpr memory_pool::size_t max_size = static_cast<memory_pool::size_t> (0 - 1)
 Maximum pool size.
 

Protected Attributes

Private Member Variables
arena< void *, blocks, sizeof(T)> arena_
 Local storage for the pool.
 

Detailed Description

template<typename T, std::size_t N>
class os::rtos::memory_pool_inclusive< T, N >

Definition at line 755 of file os-mempool.h.

Member Typedef Documentation

◆ allocator_type

◆ value_type

template<typename T , std::size_t N>
using os::rtos::memory_pool_inclusive< T, N >::value_type = T

Definition at line 761 of file os-mempool.h.

Constructor & Destructor Documentation

◆ memory_pool_inclusive() [1/2]

template<typename T , std::size_t N>
os::rtos::memory_pool_inclusive< T, N >::memory_pool_inclusive ( const attributes attr = initializer)
Parameters
[in]attrReference to attributes.

This constructor shall initialise a memory pool object with attributes referenced by attr. If the attributes specified by attr are modified later, the memory pool attributes shall not be affected. Upon successful initialisation, the state of the memory pool variable shall become initialised.

Only the memory pool itself may be used for allocations. It is not allowed to make copies of condition variable objects.

In cases where default memory pool attributes are appropriate, the variable memory_pool::initializer can be used to initialise condition variables. The effect shall be equivalent to creating a memory pool object with the simple constructor.

The storage shall be statically allocated inside the memory pool object instance.

Implemented as a wrapper over the parent constructor, automatically passing the message size and the storage details.

Warning
Cannot be invoked from Interrupt Service Routines.

Definition at line 1291 of file os-mempool.h.

1292 {
1293 internal_construct_ (blocks, sizeof (T), attr, &arena_, sizeof (arena_));
1294 }
arena< void *, blocks, sizeof(T)> arena_
Local storage for the pool.
Definition os-mempool.h:829
static const std::size_t blocks
Local constant based on template definition.
Definition os-mempool.h:766

◆ memory_pool_inclusive() [2/2]

template<typename T , std::size_t N>
os::rtos::memory_pool_inclusive< T, N >::memory_pool_inclusive ( const char *  name,
const attributes attr = initializer 
)
Parameters
[in]namePointer to name.
[in]attrReference to attributes.

This constructor shall initialise a named memory pool object with attributes referenced by attr. If the attributes specified by attr are modified later, the memory pool attributes shall not be affected. Upon successful initialisation, the state of the memory pool variable shall become initialised.

Only the memory pool itself may be used for allocations. It is not allowed to make copies of condition variable objects.

In cases where default memory pool attributes are appropriate, the variable memory_pool::initializer can be used to initialise condition variables. The effect shall be equivalent to creating a memory pool object with the simple constructor.

The storage shall be statically allocated inside the memory pool object instance.

Implemented as a wrapper over the parent constructor, automatically passing the message size and the storage details.

Warning
Cannot be invoked from Interrupt Service Routines.

Definition at line 1323 of file os-mempool.h.

1325 : memory_pool{ name }
1326 {
1327 internal_construct_ (blocks, sizeof (T), attr, &arena_, sizeof (arena_));
1328 }
const char * name(void) const
Get object name.
Definition os-decls.h:753
memory_pool(std::size_t blocks, std::size_t block_size_bytes, const attributes &attr=initializer, const allocator_type &allocator=allocator_type())
Construct a memory pool object instance.

References os::rtos::memory_pool_inclusive< T, N >::arena_, and os::rtos::memory_pool_inclusive< T, N >::blocks.

◆ ~memory_pool_inclusive()

template<typename T , std::size_t N>
os::rtos::memory_pool_inclusive< T, N >::~memory_pool_inclusive
overridevirtual

This destructor shall destroy the memory pool object; the object becomes, in effect, uninitialised. An implementation may cause the destructor to set the object to an invalid value.

It shall be safe to destroy an initialised memory pool object upon which no threads are currently blocked. Attempting to destroy a memory pool object upon which other threads are currently blocked results in undefined behaviour.

Warning
Cannot be invoked from Interrupt Service Routines.

Definition at line 1344 of file os-mempool.h.

1345 {
1346 }

Member Function Documentation

◆ alloc()

template<typename T , std::size_t N>
memory_pool_inclusive< T, N >::value_type * os::rtos::memory_pool_inclusive< T, N >::alloc ( void  )
inline
Parameters
None.
Returns
Pointer to memory block, or nullptr if interrupted.

Wrapper over the parent method, automatically passing the cast.

See also
memory_pool::alloc().

Definition at line 1357 of file os-mempool.h.

1358 {
1359 return static_cast<value_type*> (memory_pool::alloc ());
1360 }
T value_type
Local type of message.
Definition os-mempool.h:761
void * alloc(void)
Allocate a memory block.

References os::rtos::memory_pool::alloc().

◆ block_size()

std::size_t os::rtos::memory_pool::block_size ( void  ) const
inlineinherited
Parameters
None.
Returns
The block size, in bytes.
Note
Can be invoked from Interrupt Service Routines.

Definition at line 923 of file os-mempool.h.

924 {
925 return block_size_bytes_;
926 }

◆ capacity()

std::size_t os::rtos::memory_pool::capacity ( void  ) const
inlineinherited
Parameters
None.
Returns
The max number of blocks in the pool.
Note
Can be invoked from Interrupt Service Routines.

Definition at line 914 of file os-mempool.h.

915 {
916 return blocks_;
917 }

Referenced by os::rtos::memory_pool::full().

◆ compute_allocated_size_bytes()

template<typename T >
constexpr std::size_t os::rtos::memory_pool::compute_allocated_size_bytes ( std::size_t  blocks,
std::size_t  block_size_bytes 
)
inlineconstexprinherited
Parameters
blocksNumber of blocks.
block_size_bytesSize of block.
Returns
Total required storage in bytes, including internal alignment.

Definition at line 188 of file os-mempool.h.

190 {
191 // Align each block
192 return (blocks
193 * ((block_size_bytes + (sizeof (T) - 1)) & ~(sizeof (T) - 1)));
194 }

Referenced by os::rtos::memory_pool::memory_pool(), and os::rtos::memory_pool_allocated< Allocator >::memory_pool_allocated().

◆ count()

std::size_t os::rtos::memory_pool::count ( void  ) const
inlineinherited
Parameters
None.
Returns
The number of blocks used from the queue.
Note
Can be invoked from Interrupt Service Routines.

Definition at line 932 of file os-mempool.h.

933 {
934 return count_;
935 }

Referenced by os::rtos::memory_pool::empty(), and os::rtos::memory_pool::full().

◆ empty()

bool os::rtos::memory_pool::empty ( void  ) const
inlineinherited
Parameters
None
Return values
trueThe memory pool has no allocated blocks.
falseThe memory pool has allocated blocks.
Note
Can be invoked from Interrupt Service Routines.

Definition at line 941 of file os-mempool.h.

942 {
943 return (count () == 0);
944 }
std::size_t count(void) const
Get blocks count.
Definition os-mempool.h:932

References os::rtos::memory_pool::count().

◆ free() [1/2]

template<typename T , std::size_t N>
result_t os::rtos::memory_pool_inclusive< T, N >::free ( value_type block)
inline
Parameters
None.
Return values
result::okThe memory block was released.
EINVALThe block does not belong to the memory pool.

Wrapper over the parent method, automatically passing the cast.

See also
memory_pool::free().

Definition at line 1399 of file os-mempool.h.

1400 {
1401 return memory_pool::free (block);
1402 }
result_t free(void *block)
Free the memory block.

References os::rtos::memory_pool::free().

◆ free() [2/2]

result_t os::rtos::memory_pool::free ( void *  block)
inherited
Parameters
[in]blockPointer to memory block to free.
Return values
result::okThe memory block was released.
EINVALThe block does not belong to the memory pool.

Return a memory block previously allocated by alloc() back to the memory pool.

It uses a critical section to protect simultaneous access from other threads or interrupts.

Note
Can be invoked from Interrupt Service Routines.

Definition at line 781 of file os-mempool.cpp.

782 {
783#if defined(OS_TRACE_RTOS_MEMPOOL)
784 trace::printf ("%s(%p) @%p %s\n", __func__, block, this, name ());
785#endif
786
787 // Don't call this from high priority interrupts.
788 assert (port::interrupts::is_priority_valid ());
789
790 // Validate pointer.
791#pragma GCC diagnostic push
792#if defined(__clang__)
793#pragma clang diagnostic ignored "-Wunsafe-buffer-usage"
794#endif
795 if ((block < pool_addr_)
796 || (block >= (static_cast<char*> (pool_addr_)
797 + blocks_ * block_size_bytes_)))
798 {
799#if defined(OS_TRACE_RTOS_MEMPOOL)
800 trace::printf ("%s(%p) EINVAL @%p %s\n", __func__, block, this,
801 name ());
802#endif
803 return EINVAL;
804 }
805#pragma GCC diagnostic pop
806
807 {
808 // ----- Enter critical section ---------------------------------------
809 interrupts::critical_section ics;
810
811 // Perform a push_front() on the single linked LIFO list,
812 // i.e. add the block to the beginning of the list.
813
814 // Link previous list to this block; may be null, but it does
815 // not matter.
816 *(static_cast<void**> (block)) = first_;
817
818 // Now this block is the first one.
819 first_ = block;
820
821#pragma GCC diagnostic push
822#if defined(__clang__)
823#pragma clang diagnostic ignored "-Wdeprecated-volatile"
824#elif defined(__GNUC__)
825#pragma GCC diagnostic ignored "-Wvolatile"
826#endif
827 --count_;
828#pragma GCC diagnostic pop
829
830 // ----- Exit critical section ----------------------------------------
831 }
832
833 // Wake-up one thread, if any.
834 list_.resume_one ();
835
836 return result::ok;
837 }
int printf(const char *format,...)
Write a formatted string to the trace device.
Definition trace.cpp:59
@ ok
Function completed; no errors or events occurred.
Definition os-decls.h:179

References os::rtos::internal::object_named::name(), os::rtos::result::ok, and os::trace::printf().

Referenced by os::rtos::memory_pool_typed< T, Allocator >::free(), and os::rtos::memory_pool_inclusive< T, N >::free().

◆ full()

bool os::rtos::memory_pool::full ( void  ) const
inlineinherited
Parameters
None.
Return values
trueAll memory blocks are allocated.
falseThere are still memory blocks that can be allocated.
Note
Can be invoked from Interrupt Service Routines.

Definition at line 950 of file os-mempool.h.

951 {
952 return (count () == capacity ());
953 }
std::size_t capacity(void) const
Get memory pool capacity.
Definition os-mempool.h:914

References os::rtos::memory_pool::capacity(), and os::rtos::memory_pool::count().

◆ name()

const char * os::rtos::internal::object_named::name ( void  ) const
inlineinherited
Parameters
None.
Returns
A null terminated string.

All objects return a non-null string; anonymous objects return "-".

Note
Can be invoked from Interrupt Service Routines.

Definition at line 753 of file os-decls.h.

754 {
755 return name_;
756 }

Referenced by os::memory::lifo::lifo(), os::memory::malloc_memory_resource::malloc_memory_resource(), os::rtos::message_queue_typed< T, Allocator >::message_queue_typed(), os::memory::block_pool::~block_pool(), os::rtos::event_flags::~event_flags(), os::memory::first_fit_top::~first_fit_top(), os::memory::lifo::~lifo(), os::memory::malloc_memory_resource::~malloc_memory_resource(), os::rtos::memory_pool::~memory_pool(), os::rtos::message_queue::~message_queue(), os::rtos::mutex::~mutex(), os::rtos::semaphore::~semaphore(), os::rtos::thread::~thread(), os::rtos::timer::~timer(), os::rtos::memory_pool::alloc(), os::rtos::thread::cancel(), os::rtos::event_flags::clear(), os::rtos::mutex::consistent(), os::rtos::thread::detach(), os::memory::new_delete_memory_resource::do_allocate(), os::memory::block_pool::do_allocate(), os::memory::first_fit_top::do_allocate(), os::memory::lifo::do_allocate(), os::memory::malloc_memory_resource::do_allocate(), os::rtos::thread::flags_raise(), os::rtos::memory_pool::free(), os::rtos::event_flags::get(), os::rtos::thread::interrupt(), os::rtos::thread::join(), os::rtos::thread::kill(), os::rtos::internal::terminated_threads_list::link(), os::rtos::mutex::lock(), os::rtos::memory::memory_resource::out_of_memory_handler(), os::rtos::semaphore::post(), os::rtos::mutex::prio_ceiling(), os::rtos::mutex::prio_ceiling(), os::rtos::thread::priority(), os::rtos::thread::priority_inherited(), os::rtos::event_flags::raise(), os::rtos::message_queue::receive(), os::rtos::memory_pool::reset(), os::rtos::message_queue::reset(), os::rtos::mutex::reset(), os::rtos::semaphore::reset(), os::rtos::thread::resume(), os::rtos::message_queue::send(), os::rtos::clock::sleep_for(), os::rtos::timer::start(), os::rtos::timer::stop(), os::rtos::memory_pool::timed_alloc(), os::rtos::mutex::timed_lock(), os::rtos::message_queue::timed_receive(), os::rtos::message_queue::timed_send(), os::rtos::semaphore::timed_wait(), os::rtos::event_flags::timed_wait(), os::rtos::memory::memory_resource::trace_print_statistics(), os::rtos::memory_pool::try_alloc(), os::rtos::mutex::try_lock(), os::rtos::message_queue::try_receive(), os::rtos::message_queue::try_send(), os::rtos::event_flags::try_wait(), os::rtos::semaphore::try_wait(), os::rtos::internal::ready_threads_list::unlink_head(), os::rtos::mutex::unlock(), os::rtos::event_flags::wait(), os::rtos::semaphore::wait(), and os::rtos::event_flags::waiting().

◆ operator delete()

void os::rtos::internal::object_named_system::operator delete ( void *  ptr,
std::size_t  bytes 
)
inlinestaticinherited
Parameters
ptrPointer to object.
bytesNumber of bytes to deallocate.
Returns
Nothing.

The deallocation function (3.7.4.2) called by a delete-expression to render the value of ptr invalid.

ptr shall be a null pointer or its value shall be a value returned by an earlier call to the (possibly replaced) operator new() which has not been invalidated by an intervening call to operator delete(void*).

If ptr is null, does nothing. Otherwise, reclaims the storage allocated by the earlier call to operator new.

The storage is deallocated using the RTOS system allocator.

Warning
Cannot be invoked from Interrupt Service Routines.

Definition at line 120 of file os-inlines.h.

121 {
122 assert (!interrupts::in_handler_mode ());
123
124 rtos::memory::allocator<char> ().deallocate (static_cast<char*> (ptr),
125 bytes);
126 }
bool in_handler_mode(void)
Check if the CPU is in handler mode.
Definition os-sched.h:1101

References os::rtos::memory::allocator_stateless_default_resource< T >::deallocate(), and os::rtos::interrupts::in_handler_mode().

◆ operator delete[]()

void os::rtos::internal::object_named_system::operator delete[] ( void *  ptr,
std::size_t  bytes 
)
inlinestaticinherited
Parameters
ptrPointer to array of objects.
bytesNumber of bytes to deallocate.
Returns
Nothing.

The deallocation function (3.7.4.2) called by the array form of a delete-expression to render the value of ptr invalid.

If ptr is null, does nothing. Otherwise, reclaims the storage allocated by the earlier call to operator new.

The storage is deallocated using the RTOS system allocator.

Warning
Cannot be invoked from Interrupt Service Routines.

Definition at line 141 of file os-inlines.h.

142 {
143 // Forward array deallocation to single element deallocation.
144 operator delete (ptr, bytes);
145 }

◆ operator new() [1/2]

void * os::rtos::internal::object_named_system::operator new ( std::size_t  bytes)
inlinestaticinherited
Parameters
bytesNumber of bytes to allocate.
Returns
Pointer to allocated object.

The allocation function (3.7.4.1) called by a new-expression (5.3.4) to allocate a storage of size bytes suitably aligned to represent any object of that size. Return a non-null pointer to suitably aligned storage (3.7.4).

The storage is allocated using the RTOS system allocator.

Warning
Cannot be invoked from Interrupt Service Routines.

Definition at line 43 of file os-inlines.h.

44 {
45 assert (!interrupts::in_handler_mode ());
46
47 return rtos::memory::allocator<char> ().allocate (bytes);
48 }

References os::rtos::memory::allocator_stateless_default_resource< T >::allocate(), and os::rtos::interrupts::in_handler_mode().

◆ operator new() [2/2]

void * os::rtos::internal::object_named_system::operator new ( std::size_t  bytes,
void *  ptr 
)
inlinestaticinherited
Parameters
bytesNumber of bytes to emplace.
ptrPointer to location to emplace the object.
Returns
Pointer to emplaced object.

The allocation function (3.7.4.1) called by a placement new-expression to allocate a storage of size bytes suitably aligned to represent any object of that size. Return a non-null pointer to suitably aligned storage (3.7.4).

The storage is allocated using the RTOS system allocator.

Warning
Cannot be invoked from Interrupt Service Routines.

Definition at line 80 of file os-inlines.h.

81 {
82 return ptr;
83 }

◆ operator new[]() [1/2]

void * os::rtos::internal::object_named_system::operator new[] ( std::size_t  bytes)
inlinestaticinherited
Parameters
bytesNumber of bytes to allocate.
Returns
Pointer to allocated array.

The allocation function (3.7.4.1) called by the array form of a new-expression (5.3.4) to allocate a storage of size bytes suitably aligned to represent any array object of that size or smaller.

The storage is allocated using the RTOS system allocator.

Warning
Cannot be invoked from Interrupt Service Routines.

Definition at line 61 of file os-inlines.h.

62 {
63 // Forward array allocation to single element allocation.
64 return operator new (bytes);
65 }

◆ operator new[]() [2/2]

void * os::rtos::internal::object_named_system::operator new[] ( std::size_t  bytes,
void *  ptr 
)
inlinestaticinherited
Parameters
bytesNumber of bytes to emplace.
ptrPointer to location to emplace the object.
Returns
Pointer to emplaced array.

The allocation function (3.7.4.1) called by the array form of a placement new-expression to allocate a storage of size bytes suitably aligned to represent any array object of that size or smaller.

The storage is allocated using the RTOS system allocator.

Warning
Cannot be invoked from Interrupt Service Routines.

Definition at line 97 of file os-inlines.h.

98 {
99 // Forward array allocation to single element allocation.
100 return operator new (bytes, ptr);
101 }

◆ operator==()

bool os::rtos::memory_pool::operator== ( const memory_pool rhs) const
inlineinherited
Return values
trueThe given memory pool is the same as this memory pool.
falseThe memory pools are different.

Identical memory pools should have the same memory address.

Definition at line 905 of file os-mempool.h.

906 {
907 return this == &rhs;
908 }

◆ pool()

void * os::rtos::memory_pool::pool ( void  )
inlineinherited
Parameters
None.
Returns
Pointer to storage.
Note
Can be invoked from Interrupt Service Routines.

Definition at line 959 of file os-mempool.h.

960 {
961 return pool_addr_;
962 }

◆ reset()

result_t os::rtos::memory_pool::reset ( void  )
inherited
Parameters
None.
Return values
result::okThe memory pool was reset.
EPERMCannot be invoked from an Interrupt Service Routines.

Reset the memory pool to the initial state, with all blocks free.

Warning
Cannot be invoked from Interrupt Service Routines.

Definition at line 846 of file os-mempool.cpp.

847 {
848#if defined(OS_TRACE_RTOS_MEMPOOL)
849 trace::printf ("%s() @%p %s\n", __func__, this, name ());
850#endif
851
852 // Don't call this from interrupt handlers.
854
855 {
856 // ----- Enter critical section ---------------------------------------
857 interrupts::critical_section ics;
858
859 internal_init_ ();
860 // ----- Exit critical section ----------------------------------------
861 }
862
863 // Wake-up all threads, if any.
864 // Need not be inside the critical section,
865 // the list is protected by inner `resume_one()`.
866 list_.resume_all ();
867
868 return result::ok;
869 }
#define os_assert_err(__e, __er)
Assert or return an error.
Definition os-decls.h:1101

References os::rtos::interrupts::in_handler_mode(), os::rtos::internal::object_named::name(), os::rtos::result::ok, os_assert_err, and os::trace::printf().

◆ timed_alloc()

template<typename T , std::size_t N>
memory_pool_inclusive< T, N >::value_type * os::rtos::memory_pool_inclusive< T, N >::timed_alloc ( clock::duration_t  timeout)
inline
Parameters
[in]timeoutTimeout to wait, in clock units (ticks or seconds).
Returns
Pointer to memory block, or nullptr if timeout.

Wrapper over the parent method, automatically passing the cast.

See also
memory_pool::timed_alloc().

Definition at line 1385 of file os-mempool.h.

1386 {
1387 return static_cast<value_type*> (memory_pool::timed_alloc (timeout));
1388 }
void * timed_alloc(clock::duration_t timeout)
Allocate a memory block with timeout.

References os::rtos::memory_pool::timed_alloc().

◆ try_alloc()

template<typename T , std::size_t N>
memory_pool_inclusive< T, N >::value_type * os::rtos::memory_pool_inclusive< T, N >::try_alloc ( void  )
inline
Parameters
None.
Returns
Pointer to memory block, or nullptr if no memory available.

Wrapper over the parent method, automatically passing the cast.

See also
memory_pool::try_alloc().

Definition at line 1371 of file os-mempool.h.

1372 {
1373 return static_cast<value_type*> (memory_pool::try_alloc ());
1374 }
void * try_alloc(void)
Try to allocate a memory block.

References os::rtos::memory_pool::try_alloc().

Member Data Documentation

◆ arena_

template<typename T , std::size_t N>
arena<void*, blocks, sizeof (T)> os::rtos::memory_pool_inclusive< T, N >::arena_
protected

The local storage is large enough to include blocks blocks of type T. For performance reasons, the individual components are aligned as pointers.

Definition at line 829 of file os-mempool.h.

Referenced by os::rtos::memory_pool_inclusive< T, N >::memory_pool_inclusive().

◆ blocks

template<typename T , std::size_t N>
const std::size_t os::rtos::memory_pool_inclusive< T, N >::blocks = N
static

The documentation for this class was generated from the following file: