QXK/C (preemptive dual-mode kernel) platform-independent public interface. More...
Go to the source code of this file.
Classes | |
| class | QP::QXThread |
| eXtended (blocking) thread of the QXK preemptive kernel More... | |
| class | QP::QXSemaphore |
| Counting Semaphore of the QXK preemptive kernel. More... | |
| class | QP::QXMutex |
| Blocking Mutex of the QXK preemptive kernel. More... | |
| class | QXK_Attr |
| Private attributes of the QXK kernel. More... | |
Namespaces | |
| namespace | QP |
| QP/C++ framework. | |
| namespace | QP::QXK |
| preemptive, dual-mode (non-blocking / blocking) kernel | |
Macros | |
| #define | QF_SCHED_STAT_ QSchedStatus lockStat_; |
| #define | QF_SCHED_LOCK_(ceil_) |
| #define | QF_SCHED_UNLOCK_() |
| #define | QACTIVE_EQUEUE_WAIT_(me_) Q_ASSERT_INCRIT(310, (me_)->m_eQueue.m_frontEvt != nullptr) |
| #define | QACTIVE_EQUEUE_SIGNAL_(me_) |
| #define | QXTHREAD_EQUEUE_SIGNAL_(me_) |
| #define | QXTHREAD_CAST_(ptr_) (static_cast<QP::QXThread *>(ptr_)) |
| #define | QXK_PTR_CAST_(type_, ptr_) (reinterpret_cast<type_>(ptr_)) |
| #define | QF_EPOOL_TYPE_ QMPool |
| #define | QF_EPOOL_INIT_(p_, poolSto_, poolSize_, evtSize_) (p_).init((poolSto_), (poolSize_), (evtSize_)) |
| #define | QF_EPOOL_EVENT_SIZE_(p_) ((p_).getBlockSize()) |
| #define | QF_EPOOL_GET_(p_, e_, m_, qsId_) ((e_) = static_cast<QEvt *>((p_).get((m_), (qsId_)))) |
| #define | QF_EPOOL_PUT_(p_, e_, qsId_) ((p_).put((e_), (qsId_))) |
Enumerations | |
| enum | QP::QXK::TimeoutSigs : QSignal { QP::QXK::DELAY_SIG = 1U , QP::QXK::TIMEOUT_SIG } |
Functions | |
| void | QP::QXK::onIdle () |
| QSchedStatus | QP::QXK::schedLock (std::uint_fast8_t const ceiling) noexcept |
| void | QP::QXK::schedUnlock (QSchedStatus const stat) noexcept |
| QP::QActive * | QP::QXK::current () noexcept |
| std::uint_fast8_t | QXK_sched_ () noexcept |
| void | QXK_activate_ () noexcept |
| void | QXK_contextSw_ (QP::QActive *const next) |
| void | QXK_threadExit_ () |
Variables | |
| constexpr QTimeEvtCtr | QP::QXTHREAD_NO_TIMEOUT {0U} |
| QXK_Attr | QXK_priv_ |
QXK/C (preemptive dual-mode kernel) platform-independent public interface.
Definition in file qxk.hpp.
| #define QF_SCHED_LOCK_ | ( | ceil_ | ) |
| #define QF_SCHED_UNLOCK_ | ( | ) |
| #define QACTIVE_EQUEUE_WAIT_ | ( | me_ | ) | Q_ASSERT_INCRIT(310, (me_)->m_eQueue.m_frontEvt != nullptr) |
| #define QACTIVE_EQUEUE_SIGNAL_ | ( | me_ | ) |
| #define QXTHREAD_EQUEUE_SIGNAL_ | ( | me_ | ) |
| #define QXTHREAD_CAST_ | ( | ptr_ | ) | (static_cast<QP::QXThread *>(ptr_)) |
Internal macro to encapsulate casting of pointers for MISRA deviations
| #define QXK_PTR_CAST_ | ( | type_, | |
| ptr_ ) (reinterpret_cast<type_>(ptr_)) |
Internal macro to encapsulate casting of pointers for MISRA deviations
| #define QF_EPOOL_INIT_ | ( | p_, | |
| poolSto_, | |||
| poolSize_, | |||
| evtSize_ ) (p_).init((poolSto_), (poolSize_), (evtSize_)) |
| #define QF_EPOOL_GET_ | ( | p_, | |
| e_, | |||
| m_, | |||
| qsId_ ) ((e_) = static_cast<QEvt *>((p_).get((m_), (qsId_)))) |
| #define QF_EPOOL_PUT_ | ( | p_, | |
| e_, | |||
| qsId_ ) ((p_).put((e_), (qsId_))) |
|
noexcept |
QXK scheduler finds the highest-priority thread ready to run
qxk:402
|
noexcept |
QXK activator activates the next active object. The activated AO preempts the currently executing AOs.
qxk:500| void QXK_contextSw_ | ( | QP::QActive *const | next | ) |
| QXK_threadExit_ | ( | ) |
Called when QP::QXThread exits
qxk:900qxk:901