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:900
qxk:901