32#ifndef QF_MPOOL_SIZ_SIZE
33 #define QF_MPOOL_SIZ_SIZE 2U
35#ifndef QF_MPOOL_CTR_SIZE
36 #define QF_MPOOL_CTR_SIZE 2U
39#define QF_MPOOL_EL(evType_) struct { \
40 void * sto_[((sizeof(evType_) - 1U) / sizeof(void *)) + \
41 (sizeof(evType_) < (2U * sizeof(void *)) ? 2U : 1U)]; \
47#if (QF_MPOOL_SIZ_SIZE == 1U)
49#elif (QF_MPOOL_SIZ_SIZE == 2U)
51#elif (QF_MPOOL_SIZ_SIZE == 4U)
54 #error QF_MPOOL_SIZ_SIZE defined incorrectly, expected 1U, 2U, or 4U
57#if (QF_MPOOL_CTR_SIZE == 1U)
59#elif (QF_MPOOL_CTR_SIZE == 2U)
61#elif (QF_MPOOL_CTR_SIZE == 4U)
64 #error QF_MPOOL_CTR_SIZE defined incorrectly, expected 1U, 2U, or 4U
90 std::uint_fast32_t
const poolSize,
91 std::uint_fast16_t
const blockSize)
noexcept;
93 std::uint_fast16_t
const margin,
94 std::uint_fast8_t
const qsId)
noexcept;
97 std::uint_fast8_t
const qsId)
noexcept;
120 std::uint_fast16_t
const margin,
121 std::uint_fast8_t
const qsId)
noexcept;
127 std::uint_fast8_t
const qsId)
noexcept;
void * get(std::uint_fast16_t const margin, 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
void init(void *const poolSto, std::uint_fast32_t const poolSize, std::uint_fast16_t const blockSize) noexcept
QMPoolSize getBlockSize() const noexcept
void **volatile m_freeHead
void putFromISR(void *const b, std::uint_fast8_t const qsId) noexcept
void put(void *const block, std::uint_fast8_t const qsId) noexcept
void * getFromISR(std::uint_fast16_t const margin, std::uint_fast8_t const qsId) noexcept
QMPoolCtr getNMin() const noexcept