52 static std::uint_fast8_t
sched_() noexcept;
55 std::uint_fast8_t const pthre_in) noexcept;
71#define QF_SCHED_STAT_ QSchedStatus lockStat_;
72#define QF_SCHED_LOCK_(ceil_) do { \
73 if (QK_ISR_CONTEXT_()) { \
76 lockStat_ = QK::schedLock((ceil_)); \
80#define QF_SCHED_UNLOCK_() do { \
81 if (lockStat_ != 0xFFU) { \
82 QK::schedUnlock(lockStat_); \
87#define QACTIVE_EQUEUE_WAIT_(me_) (static_cast<void>(0))
88#define QACTIVE_EQUEUE_SIGNAL_(me_) do { \
89 QK::priv_.readySet.insert( \
90 static_cast<std::uint_fast8_t>((me_)->m_prio)); \
91 if (!QK_ISR_CONTEXT_()) { \
92 if (QK::sched_() != 0U) { \
99#define QF_EPOOL_TYPE_ QMPool
100#define QF_EPOOL_INIT_(p_, poolSto_, poolSize_, evtSize_) \
101 (p_).init((poolSto_), (poolSize_), (evtSize_))
102#define QF_EPOOL_EVENT_SIZE_(p_) ((p_).getBlockSize())
103#define QF_EPOOL_GET_(p_, e_, m_, qsId_) \
104 ((e_) = static_cast<QEvt *>((p_).get((m_), (qsId_))))
105#define QF_EPOOL_PUT_(p_, e_, qsId_) ((p_).put((e_), (qsId_)))
106#define QF_EPOOL_USE_(ePool_) ((ePool_)->getUse())
107#define QF_EPOOL_FREE_(ePool_) ((ePool_)->getFree())
108#define QF_EPOOL_MIN_(ePool_) ((ePool_)->getMin())
Active object class (based on the QP::QHsm implementation strategy).
QK preemptive non-blocking kernel.
std::uint8_t intNest
Up-down counter indicating current interrupt nesting (used in some QK ports).
static std::uint_fast8_t sched_act_(QActive const *const act, std::uint_fast8_t const pthre_in) noexcept
QK internal helper function to determine whether activation is needed.
static void schedUnlock(QSchedStatus const prevCeil) noexcept
QK selective scheduler unlock.
QP::QPSet readySet
Set of active-objects/threads that are ready to run in the QK kernel.
std::uint8_t lockCeil
Scheduler lock-ceiling (0 if scheduler unlocked).
static std::uint_fast8_t sched_() noexcept
QK scheduler finds the highest-priority AO ready to run.
std::uint8_t actPrio
Priority of the currently active AO.
static QSchedStatus schedLock(std::uint8_t const ceiling) noexcept
QK selective scheduler lock.
std::uint8_t nextPrio
Next AO priority scheduled by QK.
static void activate_()
QK activator activates the next active object. The activated AO preempts the currently executing AOs.
static void onIdle()
QK idle callback (customized in BSPs for QK).
std::uint8_t actThre
Preemption threshold of the currently active AO.
Set of Active Objects of up to QF_MAX_ACTIVE elements.
QP/C++ Framework namespace.
std::uint8_t QSchedStatus
The scheduler lock status for QK::schedLock() and QK::schedUnlock().