42 #error Source file included in a project NOT based on the QV kernel
45Q_DEFINE_THIS_MODULE(
"qv")
65 QV_priv_.schedCeil = (uint8_t)ceiling;
122#if (defined QF_ON_CONTEXT_SW) || (defined Q_SPY)
123 uint_fast8_t pprev = 0U;
125#ifdef QF_ON_CONTEXT_SW
139 uint_fast8_t
const p = (QPSet_notEmpty(&
QV_priv_.readySet)
144 QActive * const a = QActive_registry_[p];
146#if (defined QF_ON_CONTEXT_SW) || (defined Q_SPY)
149 QS_BEGIN_PRE(QS_SCHED_NEXT, p)
151 QS_2U8_PRE((uint8_t)p,
155#ifdef QF_ON_CONTEXT_SW
156 QF_onContextSw(((pprev != 0U)
157 ? QActive_registry_[pprev]
167 QEvt const *
const e = QActive_get_(a);
170 (*a->super.vptr->dispatch)(&a->super, e, p);
171#if (QF_MAX_EPOOL > 0U)
176 if (a->eQueue.frontEvt == (
QEvt *)0) {
177 QPSet_remove(&
QV_priv_.readySet, p);
181#if (defined QF_ON_CONTEXT_SW) || (defined Q_SPY)
188#ifdef QF_ON_CONTEXT_SW
189 QF_onContextSw(QActive_registry_[pprev], (
QActive *)0);
214 uint_fast16_t
const qLen,
216 uint_fast16_t
const stkSize,
217 void const *
const par)
233 me->
prio = (uint8_t)(prioSpec & 0xFFU);
237 QEQueue_init(&me->
eQueue, qSto, qLen);
#define Q_UNUSED_PAR(par_)
Helper macro to mark unused parameters of functions.
QEvt const * QEvtPtr
Pointer to const event instances passed around in QP/C Framework.
int int_t
Alias for assertion-ID numbers in QP assertions and return from QF_run().
uint16_t QPrioSpec
Priority specification for Active Objects in QP.
QP/C Framework in C internal (package-scope) interface.
#define QF_INT_DISABLE()
Port-specific interrupt disable.
#define QF_INT_ENABLE()
Port-specific interrupt enable.
@ 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 (QP/Spy software tracing) internal (package-scope) interface.
#define QS_2U8_PRE(data1_, data2_)
Output two pre-formatted unsigned 8-bit integer data elements.
#define QS_U8_PRE(data_)
Output pre-formatted unsigned 8-bit integer data element.
#define QS_END_PRE()
Pre-formatted QS trace record end.
#define QS_BEGIN_PRE(rec_, qsId_)
Pre-formatted QS trace record begin.
QP Functional Safety (FuSa) Subsystem.
#define Q_REQUIRE_INCRIT(id_, expr_)
Assertion for checking a precondition (in critical section).
Active object class (based on the QHsm implementation strategy).
QACTIVE_EQUEUE_TYPE eQueue
Port-dependent event-queue type (often QEQueue).
void QActive_register_(QActive *const me)
Register this active object to be managed by the framework.
uint8_t prio
QF-priority [1..QF_MAX_ACTIVE] of this AO.
void QActive_start(QActive *const me, QPrioSpec const prioSpec, QEvtPtr *const qSto, uint_fast16_t const qLen, void *const stkSto, uint_fast16_t const stkSize, void const *const par)
Starts execution of an active object and registers the object with the framework.
uint8_t pthre
Preemption-threshold [1..QF_MAX_ACTIVE] of this AO.
struct QAsmVtable const * vptr
Virtual pointer inherited by all QAsm subclasses (see also SAS_QP_OOA).
Virtual table for the QAsm class.
void(* init)(QAsm *const me, void const *const e, uint_fast8_t const qsId)
Virtual function to take the top-most initial transition in the state machine.
QV non-preemptive kernel.
void QV_schedDisable(uint8_t const ceiling)
QV selective scheduler disable.
void QV_schedEnable(void)
QV scheduler enable.