43#define QF_EQUEUE_TYPE QEQueue
48#define QF_THREAD_TYPE void*
72std::uint_fast8_t
QK_sched_(
void)
noexcept;
78#ifdef QK_ON_CONTEXT_SW
158 #ifndef QK_ISR_CONTEXT_
163 #define QK_ISR_CONTEXT_() (QK_attr_.intNest != 0U)
170 #define QF_SCHED_STAT_ QSchedStatus lockStat_;
173 #define QF_SCHED_LOCK_(prio_) do { \
174 if (QK_ISR_CONTEXT_()) { \
177 lockStat_ = QK::schedLock((prio_)); \
182 #define QF_SCHED_UNLOCK_() do { \
183 if (lockStat_ != 0xFFU) { \
184 QK::schedUnlock(lockStat_); \
189 #define QACTIVE_EQUEUE_WAIT_(me_) \
190 Q_ASSERT_ID(110, (me_)->m_eQueue.m_frontEvt != nullptr)
192 #define QACTIVE_EQUEUE_SIGNAL_(me_) do { \
193 QK_attr_.readySet.insert( \
194 static_cast<std::uint_fast8_t>((me_)->m_prio)); \
195 if (!QK_ISR_CONTEXT_()) { \
196 if (QK_sched_() != 0U) { \
203 #define QF_EPOOL_TYPE_ QMPool
204 #define QF_EPOOL_INIT_(p_, poolSto_, poolSize_, evtSize_) \
205 (p_).init((poolSto_), (poolSize_), (evtSize_))
206 #define QF_EPOOL_EVENT_SIZE_(p_) ((p_).m_blockSize)
207 #define QF_EPOOL_GET_(p_, e_, m_, qs_id_) \
208 ((e_) = static_cast<QEvt *>((p_).get((m_), (qs_id_))))
209 #define QF_EPOOL_PUT_(p_, e_, qs_id_) ((p_).put((e_), (qs_id_)))
QActive active object (based on QP::QHsm implementation)
static QSchedStatus schedLock(std::uint_fast8_t const ceiling) noexcept
QK selective scheduler lock.
static void schedUnlock(QSchedStatus const stat) noexcept
QK selective scheduler unlock.
static void onIdle(void)
QK idle callback (customized in BSPs for QK)
static char const * getVersion(void) noexcept
get the current QK version number string of the form X.Y.Z
namespace associated with the QP/C++ framework
constexpr char const versionStr[]
the current QP version number string based on QP_VERSION_STR
std::uint_fast16_t QSchedStatus
The scheduler lock status.
platform-independent fast "raw" thread-safe event queue interface
std::uint8_t volatile lockPrio
lock prio (0 == no-lock)
QK_Attr QK_attr_
global attributes of the QK kernel
std::uint8_t volatile lockHolder
prio of the lock holder
void QK_activate_(void) noexcept
QK activator activates the next active object. The activated AO preempts.
std::uint8_t volatile actPrio
prio of the active AO
QP::QPSet readySet
QK ready-set of AOs and "naked" threads.
void QK_onContextSw(QP::QActive *prev, QP::QActive *next)
QK context switch callback (customized in BSPs for QK)
std::uint8_t volatile nextPrio
prio of the next AO to execute
std::uint8_t volatile intNest
ISR nesting level.
std::uint_fast8_t QK_sched_(void) noexcept
QK scheduler finds the highest-priority thread ready to run.
attributes of the QK kernel (in C for easy access in assembly)
platform-independent memory pool QP::QMPool interface.
platform-independent priority sets of 8 or 64 elements.
Priority Set of up to 32 elements */.