25#define Q_NORETURN _Noreturn void
33#define QACTIVE_EQUEUE_TYPE QEQueue
40#define QACTIVE_OS_OBJ_TYPE void*
47#define QACTIVE_THREAD_TYPE void const *
56#define QF_INT_DISABLE() intDisable()
64#define QF_INT_ENABLE() intEnable()
76#define QF_CRIT_STAT crit_stat_t crit_stat_;
86#define QF_CRIT_ENTRY() (crit_stat_ = critEntry())
96#define QF_CRIT_EXIT() critExit(crit_stat_)
106#define QF_CRIT_EXIT_NOP() __asm volatile ("isb" ::: "memory")
116#define QF_CRIT_EST() ((void)critEntry())
140#define QF_LOG2(bitmask_) QF_qlog2((uint32_t)(bitmask_))
153 #define QF_ON_CONTEXT_SW 1U
161 #define QF_MEM_SYS() QF_onMemSys()
169 #define QF_MEM_APP() QF_onMemApp()
180#define QV_CPU_SLEEP() \
182 __disable_interrupt(); \
185 __enable_interrupt(); \
197#define QK_ISR_CONTEXT_() (QK_priv_.intNest != 0U)
205#define QK_ISR_ENTRY() \
208 ++QK_priv_.intNest; \
209 QF_QS_ISR_ENTRY(QK_priv_.intNest, QK_currPrio_); \
219#define QK_ISR_EXIT() \
222 --QK_priv_.intNest; \
223 if (QK_priv_.intNest == 0U) { \
224 if (QK_sched_() != 0U) { \
239#define QXK_ISR_CONTEXT_() (QXK_get_IPSR() != 0U)
247#define QXK_CONTEXT_SWITCH_() (trigPendSV())
255#define QXK_ISR_ENTRY() ((void)0)
263#define QXK_ISR_EXIT() do { \
265 if (QXK_sched_() != 0U) { \
266 *Q_UINT2PTR_CAST(uint32_t, 0xE000ED04U) = (1U << 28U);\
269 QXK_ARM_ERRATUM_838869(); \
278#define QF_SCHED_STAT_ QSchedStatus lockStat_;
287#define QF_SCHED_LOCK_(ceil_) do { \
288 if (QK_ISR_CONTEXT_()) { \
291 lockStat_ = QK_schedLock((ceil_)); \
301#define QF_SCHED_UNLOCK_() do { \
302 if (lockStat_ != 0xFFU) { \
303 QK_schedUnlock(lockStat_); \
316#define QACTIVE_EQUEUE_WAIT_(me_) ((void)0)
325#define QACTIVE_EQUEUE_SIGNAL_(me_) do { \
326 QPSet_insert(&QK_priv_.readySet, (uint_fast8_t)(me_)->prio); \
327 QPSet_update_(&QK_priv_.readySet, &QK_priv_.readySet_dis); \
328 if (!QK_ISR_CONTEXT_()) { \
329 if (QK_sched_() != 0U) { \
342#define QXTHREAD_EQUEUE_SIGNAL_(me_) do { \
343 if (me->super.temp.obj == QXK_PTR_CAST_(QMState*, &me->eQueue)) { \
344 (void)QXThread_teDisarm_(QXTHREAD_CAST_(me)); \
345 QPSet_insert(&QXK_priv_.readySet, (uint_fast8_t)me->prio); \
346 QPSet_update_(&QXK_priv_.readySet, &QXK_priv_.readySet_dis); \
347 if (!QXK_ISR_CONTEXT_()) { \
348 (void)QXK_sched_(); \
359#define QF_EPOOL_TYPE_ QMPool
371#define QF_EPOOL_INIT_(p_, poolSto_, poolSize_, evtSize_) \
372 (QMPool_init(&(p_), (poolSto_), (poolSize_), (evtSize_)))
381#define QF_EPOOL_EVENT_SIZE_(p_) ((uint16_t)(p_).blockSize)
394#define QF_EPOOL_GET_(p_, e_, m_, qsId_) \
395 ((e_) = (QEvt *)QMPool_get(&(p_), (m_), (qsId_)))
406#define QF_EPOOL_PUT_(p_, e_, qsId_) (QMPool_put(&(p_), (e_), (qsId_)))
416#define QF_EPOOL_USE_(ePool_) (QMPool_getUse(ePool_))
426#define QF_EPOOL_FREE_(ePool_) ((uint16_t)(ePool_)->nFree)
436#define QF_EPOOL_MIN_(ePool_) ((uint16_t)(ePool_)->nMin)
QK (preemptive non-blocking kernel) platform-independent public interface.
QP/C native platform-independent memory pool QMPool interface.
QP Framework platform-independent public interface