QK preemptive non-blocking kernel (QK namespace emulated as a "class" in C)
More...
#include "qk.h"
QK preemptive non-blocking kernel (QK namespace emulated as a "class" in C)
Definition at line 42 of file qk.h.
◆ QK_schedLock()
QK selective scheduler lock
This function locks the QK scheduler to the specified ceiling.
- Parameters
-
[in] | ceiling | preemption ceiling to which the QK scheduler needs to be locked |
- Returns
- The previous QK Scheduler lock status, which is to be used to unlock the scheduler by restoring its previous lock status in QK_schedUnlock().
- Precondition
qk:100
- The QK scheduler lock cannot be called from an ISR
- Note
- QK_schedLock() must be always followed by the corresponding QK_schedUnlock().
- See also
- QK_schedUnlock()
- Usage
- The following example shows how to lock and unlock the QK scheduler:
uint32_t BSP_random(void) {
uint32_rnd;
. . .
return rnd;
}
uint_fast8_t QSchedStatus
QSchedStatus QK_schedLock(uint_fast8_t const ceiling)
void QK_schedUnlock(QSchedStatus const prevCeil)
◆ QK_schedUnlock()
QK selective scheduler unlock
This function unlocks the QK scheduler to the previous status.
- Parameters
-
- Precondition
qk:200
- the QK scheduler cannot be unlocked: from the ISR context
- the current lock ceiling must be greater than the previous
- Note
- QK_schedUnlock() must always follow the corresponding QK_schedLock().
- See also
- QK_schedLock()
- Usage
- The following example shows how to lock and unlock the QK scheduler:
uint32_t BSP_random(void) {
uint32_rnd;
. . .
return rnd;
}
Definition at line 105 of file qk.c.
◆ QK_onIdle()
QK idle callback (customized in BSPs for QK)
QK_onIdle() is called continuously by the QK idle loop. This callback gives the application an opportunity to enter a power-saving CPU mode, or perform some other idle processing.
- Note
- QK_onIdle() is invoked with interrupts enabled and must also return with interrupts enabled.
◆ QK_sched_()
uint_fast8_t QK_sched_ |
( |
void | | ) |
|
|
staticprivate |
QK scheduler finds the highest-priority AO ready to run
The QK scheduler finds out the priority of the highest-priority AO that (1) has events to process and (2) has priority that is above the current priority.
- Returns
- The QF-priority of the next active object to activate, or zero if no activation of AO is needed.
- Precondition
qk:400
- check the internal integrity (duplicate inverse storage)
- Attention
- QK_sched_() must be always called with interrupts disabled and returns with interrupts disabled.
Definition at line 141 of file qk.c.
◆ QK_activate_()
void QK_activate_ |
( |
void | | ) |
|
|
staticprivate |
QK activator activates the next active object. The activated AO preempts the currently executing AOs.
QK_activate_() activates ready-to run AOs that are above the initial preemption-threshold.
- Precondition
qk:500
- QK_attr_.actPrio and QK_attr_.nextPrio must be in range
- Attention
- QK_activate_() must be always called with interrupts disabled and returns with interrupts disabled.
Definition at line 185 of file qk.c.
◆ QK_priv_
Definition at line 108 of file qk.h.
The documentation for this class was generated from the following files: