26#define Q_NORETURN [[ noreturn ]] void
34#define QACTIVE_EQUEUE_TYPE QEQueue
41#define QACTIVE_OS_OBJ_TYPE void*
48#define QACTIVE_THREAD_TYPE void const *
57#define QF_INT_DISABLE() intDisable()
65#define QF_INT_ENABLE() intEnable()
77#define QF_CRIT_STAT crit_stat_t crit_stat_;
87#define QF_CRIT_ENTRY() (crit_stat_ = critEntry())
97#define QF_CRIT_EXIT() critExit(crit_stat_)
107#define QF_CRIT_EXIT_NOP() __asm volatile ("isb" ::: "memory")
117#define QF_CRIT_EST() (static_cast<void>(critEntry()))
141#define QF_LOG2(bitmask_) QF_qlog2(static_cast<std::uint32_t>(bitmask_))
159 #define QF_ON_CONTEXT_SW 1U
167 #define QF_MEM_SYS() QF_onMemSys()
175 #define QF_MEM_APP() QF_onMemApp()
185#define QV_CPU_SLEEP() \
187 __disable_interrupt(); \
190 __enable_interrupt(); \
202#define QK_ISR_CONTEXT_() (QK_priv_.intNest != 0U)
210#define QK_ISR_ENTRY() \
213 ++QK::priv_.intNest; \
214 QF_QS_ISR_ENTRY(QK::priv_.intNest, QK_currPrio_);\
224#define QK_ISR_EXIT() \
227 --QP::QK::priv_.intNest; \
228 if (QP::QK::priv_.intNest == 0U) {\
229 if (QP::QK::sched_() != 0U) { \
230 QP::QK::activate_(); \
244#define QXK_ISR_CONTEXT_() (QXK_get_IPSR() != 0U)
252#define QXK_CONTEXT_SWITCH_() (trigPendSV())
260#define QXK_ISR_ENTRY() ((void)0)
268#define QXK_ISR_EXIT() do { \
270 if (QP::QXK::sched_() != 0U) { \
271 *Q_UINT2PTR_CAST(uint32_t, 0xE000ED04U) = (1U << 28U);\
274 QXK_ARM_ERRATUM_838869(); \
283#define QF_SCHED_STAT_ QSchedStatus lockStat_;
292#define QF_SCHED_LOCK_(ceil_) do { \
293 if (QK_ISR_CONTEXT_()) { \
296 lockStat_ = QK::schedLock((ceil_)); \
306#define QF_SCHED_UNLOCK_() do { \
307 if (lockStat_ != 0xFFU) { \
308 QP::QK::schedUnlock(lockStat_); \
321#define QACTIVE_EQUEUE_WAIT_(me_) (static_cast<void>(0))
330#define QACTIVE_EQUEUE_SIGNAL_(me_) do { \
331 QP::QK::priv_.readySet.insert( \
332 static_cast<std::uint_fast8_t>((me_)->m_prio)); \
333 if (!QP::QK_ISR_CONTEXT_()) { \
334 if (QP::QK::sched_() != 0U) { \
335 QP::QK::activate_(); \
347#define QXTHREAD_EQUEUE_SIGNAL_(me_) do { \
348 if ((me_)->m_temp.obj == QXK::qmstate_cast_(&(me_)->m_eQueue)) { \
349 static_cast<void>(static_cast<QP::QXThread *>(me_)->teDisarm_()); \
350 QXK_priv_.readySet.insert( \
351 static_cast<std::uint_fast8_t>((me_)->m_prio)); \
352 QXK_priv_.readySet.update_(&QXK_priv_.readySet_dis); \
353 if (!QXK_ISR_CONTEXT_()) { \
354 static_cast<void>(QXK::sched_()); \
365#define QF_EPOOL_TYPE_ QMPool
377#define QF_EPOOL_INIT_(p_, poolSto_, poolSize_, evtSize_) \
378 (p_).init((poolSto_), (poolSize_), (evtSize_))
387#define QF_EPOOL_EVENT_SIZE_(p_) ((p_).getBlockSize())
399#define QF_EPOOL_GET_(p_, e_, m_, qsId_) \
400 ((e_) = static_cast<QEvt *>((p_).get((m_), (qsId_))))
412#define QF_EPOOL_PUT_(p_, e_, qsId_) ((p_).put((e_), (qsId_)))
422#define QF_EPOOL_USE_(ePool_) ((ePool_)->getUse())
432#define QF_EPOOL_FREE_(ePool_) ((ePool_)->getFree())
442#define QF_EPOOL_MIN_(ePool_) ((ePool_)->getMin())
QP native platform-independent QEQueue event queue interface.
QK (preemptive non-blocking kernel) platform-independent public interface.
QP/C++ native platform-independent memory pool QP::QMPool interface.
QP/C++ Framework platform-independent public interface.