non-preemptive kernel More...
Classes | |
class | Attr |
Private attributes of the QV kernel. More... | |
Functions | |
void | schedDisable (std::uint_fast8_t const ceiling) |
void | schedEnable () |
void | onIdle () |
Variables | |
QV::Attr | priv_ |
non-preemptive kernel
The QV namespace contains only QV facilities callable from C++. The following other QV facilities are defined in the global namespace to be callable from assembly (as extern "C"
):
void QP::QV::schedDisable | ( | std::uint_fast8_t const | ceiling | ) |
QV selective scheduler disable
This function disables the QV scheduler from scheduling threads below the specified ceiling. The main purpose of disabling the QV scheduler is to avoid scheduling threads that might take too long and overruon the next clock tick, for example.
[in] | ceiling | preemption ceiling upto which the QV scheduler needs to be disabled |
The following example shows how to disable the QV scheduler:
void QP::QV::schedEnable | ( | ) |
QV scheduler enable
This function re-enables the QV scheduler previously disabled with QV::schedDisable().
The following example shows how to enable the QV scheduler:
void QP::QV::onIdle | ( | ) |
QV idle callback (customized in BSPs for QV)
QV::onIdle() is called by the non-preemptive QV kernel (from QF::run()) when the scheduler detects that no events are available for active objects (the idle condition). This callback gives the application an opportunity to enter a power-saving CPU mode, or perform some other idle processing (such as QS software tracing output).