46#ifndef QF_MPOOL_SIZ_SIZE
47 #define QF_MPOOL_SIZ_SIZE 2U
49#ifndef QF_MPOOL_CTR_SIZE
50 #define QF_MPOOL_CTR_SIZE 2U
55#if (QF_MPOOL_SIZ_SIZE == 1U)
57#elif (QF_MPOOL_SIZ_SIZE == 2U)
59#elif (QF_MPOOL_SIZ_SIZE == 4U)
62 #error "QF_MPOOL_SIZ_SIZE defined incorrectly, expected 1U, 2U, or 4U"
65#if (QF_MPOOL_CTR_SIZE == 1U)
67#elif (QF_MPOOL_CTR_SIZE == 2U)
69#elif (QF_MPOOL_CTR_SIZE == 4U)
72 #error "QF_MPOOL_CTR_SIZE defined incorrectly, expected 1U, 2U, or 4U"
77#define QF_MPOOL_EL(evType_) struct { \
78 QP::QFreeBlock sto_[((sizeof(evType_) - 1U) \
79 / sizeof(QP::QFreeBlock)) + 1U]; }
126 void *
const poolSto,
127 std::uint_fast32_t
const poolSize,
128 std::uint_fast16_t
const blockSize)
noexcept;
130 std::uint_fast16_t
const margin,
131 std::uint_fast8_t
const qsId)
noexcept;
134 std::uint_fast8_t
const qsId)
noexcept;
151 std::uint_fast16_t
const margin,
152 std::uint_fast8_t
const qsId)
noexcept;
158 std::uint_fast8_t
const qsId)
noexcept;
Structure representing a free block in QP::QMPool.
std::uintptr_t m_next_dis
void put(void *const block, std::uint_fast8_t const qsId) noexcept
QMPool & operator=(QMPool const &other)=delete
QMPool(QEQueue const &other)=delete
QMPoolCtr volatile m_nFree
QMPoolCtr getNFree() const noexcept
QFreeBlock *volatile m_free_head
QMPoolSize getBlockSize() const noexcept
void putFromISR(void *const b, std::uint_fast8_t const qsId) noexcept
void * getFromISR(std::uint_fast16_t const margin, std::uint_fast8_t const qsId) noexcept
void init(void *const poolSto, std::uint_fast32_t const poolSize, std::uint_fast16_t const blockSize) noexcept
void * get(std::uint_fast16_t const margin, std::uint_fast8_t const qsId) noexcept
QMPoolCtr getNMin() const noexcept