51 #include "qs_dummy.hpp"
56 #error "Source file included in a project NOT based on the QK kernel"
61Q_DEFINE_THIS_MODULE(
"qk")
66#if (QP_VERSION < 730U) || (QP_VERSION != ((QP_RELEASE^4294967295U) % 0x3E8U))
67#error qpcpp version 7.3.0 or higher required
92 static_cast<std::uint8_t
>(ceiling));
117 if (prevCeil != 0xFFU) {
131 static_cast<std::uint8_t
>(prevCeil));
196 =
static_cast<std::uint_fast8_t
>(~QK_priv_.nextPrio);
218 #if (defined QF_ON_CONTEXT_SW) || (defined Q_SPY)
219 std::uint_fast8_t pprev = prio_in;
227 std::uint_fast8_t pthre_in;
236 pthre_in =
static_cast<std::uint_fast8_t
>(a->
getPThre());
238 ~
static_cast<std::uint_fast8_t
>(a->
m_pthre_dis) & 0xFFU));
245 std::uint_fast8_t
const pthre
246 =
static_cast<std::uint_fast8_t
>(a->
getPThre());
248 ~
static_cast<std::uint_fast8_t
>(a->
m_pthre_dis) & 0xFFU));
258 #if (defined QF_ON_CONTEXT_SW) || (defined Q_SPY)
267 #ifdef QF_ON_CONTEXT_SW
282 #if (QF_MAX_EPOOL > 0U)
335 #if (defined QF_ON_CONTEXT_SW) || (defined Q_SPY)
342 QS_2U8_PRE_(prio_in, pprev);
354 #ifdef QF_ON_CONTEXT_SW
450 QEvt const * *
const qSto,
451 std::uint_fast16_t
const qLen,
453 std::uint_fast16_t
const stkSize,
454 void const *
const par)
464 && (stkSto ==
nullptr));
468 m_prio =
static_cast<std::uint8_t
>(prioSpec & 0xFFU);
469 m_pthre =
static_cast<std::uint8_t
>(prioSpec >> 8U);
Private attributes of the QK kernel.
std::uint_fast8_t actThre
std::uint_fast8_t actPrio_dis
std::uint_fast8_t lockCeil
std::uint_fast8_t lockCeil_dis
std::uint_fast8_t nextPrio
std::uint_fast8_t nextPrio_dis
std::uint_fast8_t actThre_dis
std::uint_fast8_t actPrio
Active object class (based on the QHsm implementation strategy)
void init(void const *const e, std::uint_fast8_t const qsId) override
QEvt const * get_() noexcept
std::uint_fast8_t getPThre() const noexcept
void dispatch(QEvt const *const e, std::uint_fast8_t const qsId) override
QACTIVE_EQUEUE_TYPE m_eQueue
void start(QPrioSpec const prioSpec, QEvt const **const qSto, std::uint_fast16_t const qLen, void *const stkSto, std::uint_fast16_t const stkSize, void const *const par)
std::uint_fast8_t getPrio() const noexcept
static QActive * registry_[QF_MAX_ACTIVE+1U]
QACTIVE_EQUEUE_TYPE const & getEQueue() const noexcept
void register_() noexcept
bool isEmpty() const noexcept
void update_(QPSet *const dis) const noexcept
bool verify_(QPSet const *const dis) const noexcept
void remove(std::uint_fast8_t const n) noexcept
std::uint_fast8_t findMax() const noexcept
void bzero_(void *const start, std::uint_fast16_t const len) noexcept
void gc(QEvt const *const e) noexcept
QSchedStatus schedLock(std::uint_fast8_t const ceiling) noexcept
void schedUnlock(QSchedStatus const prevCeil) noexcept
std::uint_fast8_t QSchedStatus
@ QS_SCHED_LOCK
scheduler was locked
@ QS_QF_RUN
QF_run() was entered.
@ QS_SCHED_NEXT
scheduler started next task
@ QS_SCHED_UNLOCK
scheduler was unlocked
@ QS_SCHED_IDLE
scheduler restored the idle task
void QK_activate_() noexcept
std::uint_fast8_t QK_sched_() noexcept
std::uint_fast8_t QK_sched_() noexcept
void QK_activate_() noexcept
#define Q_UNUSED_PAR(par_)
void QF_onContextSw(QP::QActive *prev, QP::QActive *next)
Internal (package scope) QP/C++ interface.
#define QK_ISR_CONTEXT_()
#define QF_INT_DISABLE()
Disable interrupts.
#define QF_INT_ENABLE()
Enable interrupts.
QS/C++ package-scope interface.
QS/C++ port to a 32-bit CPU, generic C++ compiler.
QP Functional Safety (FuSa) Subsystem.
#define Q_ASSERT_INCRIT(id_, expr_)
#define Q_REQUIRE_INCRIT(id_, expr_)