56 #error "Source file included in a project NOT based on the QV kernel"
59Q_DEFINE_THIS_MODULE(
"qv")
63#if (QP_VERSION < 730U) || (QP_VERSION != ((QP_RELEASE^4294967295U) % 0x3E8U))
64#error qpc version 7.3.0 or higher required
75void QV_schedDisable(uint_fast8_t
const ceiling) {
81 == (uint_fast8_t)(~QV_priv_.schedCeil_dis));
83 if (ceiling > QV_priv_.schedCeil) {
88 QS_2U8_PRE_((uint8_t)QV_priv_.schedCeil,
92 QV_priv_.schedCeil = ceiling;
94 QV_priv_.schedCeil_dis = (uint_fast8_t)(~ceiling);
103void QV_schedEnable(
void) {
109 == (uint_fast8_t)(~QV_priv_.schedCeil_dis));
111 if (QV_priv_.schedCeil != 0U) {
116 QS_2U8_PRE_((uint8_t)QV_priv_.schedCeil, 0U);
119 QV_priv_.schedCeil = 0U;
121 QV_priv_.schedCeil_dis = (uint_fast8_t)(~0U);
135 QF_bzero_(&QV_priv_,
sizeof(QV_priv_));
139 QPSet_update_(&QV_priv_.readySet, &QV_priv_.readySet_dis);
140 QV_priv_.schedCeil_dis = (uint_fast8_t)(~0U);
143 for (uint_fast8_t tickRate = 0U;
144 tickRate <
Q_DIM(QTimeEvt_timeEvtHead_);
147 QTimeEvt_ctorX(&QTimeEvt_timeEvtHead_[tickRate],
185 #if (defined QF_ON_CONTEXT_SW) || (defined Q_SPY)
186 uint_fast8_t pprev = 0U;
193 &QV_priv_.readySet_dis));
196 == (uint_fast8_t)(~QV_priv_.schedCeil_dis));
199 uint_fast8_t
const p = (QPSet_notEmpty(&QV_priv_.readySet)
200 ? QPSet_findMax(&QV_priv_.readySet)
203 if (p > QV_priv_.schedCeil) {
206 #if (defined QF_ON_CONTEXT_SW) || (defined Q_SPY)
209 QS_2U8_PRE_((uint8_t)p,
213 #ifdef QF_ON_CONTEXT_SW
214 QF_onContextSw(((pprev != 0U)
225 QEvt const *
const e = QActive_get_(a);
230 #if (QF_MAX_EPOOL > 0U)
237 QPSet_remove(&QV_priv_.readySet, p);
239 QPSet_update_(&QV_priv_.readySet, &QV_priv_.readySet_dis);
244 #if (defined QF_ON_CONTEXT_SW) || (defined Q_SPY)
248 QS_U8_PRE_((uint8_t)pprev);
251 #ifdef QF_ON_CONTEXT_SW
285void QActive_start_(
QActive *
const me,
287 QEvt const * *
const qSto,
288 uint_fast16_t
const qLen,
290 uint_fast16_t
const stkSize,
291 void const *
const par)
301 me->
prio = (uint8_t)(prioSpec & 0xFFU);
303 QActive_register_(me);
305 QEQueue_init(&me->
eQueue, qSto, qLen);
QActive * QActive_registry_[QF_MAX_ACTIVE+1U]
#define Q_UNUSED_PAR(par_)
@ Q_USER_SIG
offset for the user signals (QP Application)
Internal (package scope) QP/C interface.
#define QF_INT_DISABLE()
Disable interrupts.
#define QF_INT_ENABLE()
Enable interrupts.
@ QS_QF_RUN
QF_run() was entered.
@ QS_SCHED_IDLE
scheduler restored the idle task
@ QS_SCHED_LOCK
scheduler was locked
@ QS_SCHED_UNLOCK
scheduler was unlocked
@ QS_SCHED_NEXT
scheduler started next task
QS/C package-scope interface.
QP Functional Safety (FuSa) Subsystem.
#define Q_ASSERT_INCRIT(id_, expr_)
#define Q_REQUIRE_INCRIT(id_, expr_)
Active object class (based on the QHsm implementation strategy)
QACTIVE_EQUEUE_TYPE eQueue
struct QAsmVtable const * vptr
void(* init)(QAsm *const me, void const *const e, uint_fast8_t const qsId)
void(* dispatch)(QAsm *const me, QEvt const *const e, uint_fast8_t const qsId)
Private attributes of the QV kernel.