38#ifndef QF_MPOOL_SIZ_SIZE
39 #define QF_MPOOL_SIZ_SIZE 2U
41#ifndef QF_MPOOL_CTR_SIZE
42 #define QF_MPOOL_CTR_SIZE 2U
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"
69#define QF_MPOOL_EL(evType_) struct { \
70 QP::QFreeBlock sto_[((sizeof(evType_) - 1U) / (2U * sizeof(void *))) + 1U]; \
130 void *
const poolSto,
131 std::uint_fast32_t
const poolSize,
132 std::uint_fast16_t
const blockSize)
noexcept;
134 std::uint_fast16_t
const margin,
135 std::uint_fast8_t
const qsId)
noexcept;
138 std::uint_fast8_t
const qsId)
noexcept;
159 std::uint_fast16_t
const margin,
160 std::uint_fast8_t
const qsId)
noexcept;
166 std::uint_fast8_t
const qsId)
noexcept;
Structure representing a free block in QP::QMPool.
std::uintptr_t m_next_dis
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
QFreeBlock *volatile m_free_head
std::uintptr_t m_free_head_dis
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
#define Q_UNSAFE
Disable the QP Functional Safety (FuSa) Subsystem.