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_) |
#define | QACTIVE_EQUEUE_SIGNAL_(me_) |
#define | QXTHREAD_EQUEUE_SIGNAL_(me_) |
#define | QXTHREAD_CAST_(ptr_) |
#define | QXK_PTR_CAST_(type_, ptr_) |
#define | QF_EPOOL_TYPE_ QMPool |
#define | QF_EPOOL_INIT_(p_, poolSto_, poolSize_, evtSize_) |
#define | QF_EPOOL_EVENT_SIZE_(p_) |
#define | QF_EPOOL_GET_(p_, e_, m_, qsId_) |
#define | QF_EPOOL_PUT_(p_, 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.
Backward Traceability
Definition in file qxk.hpp.
#define QF_SCHED_LOCK_ | ( | ceil_ | ) |
#define QF_SCHED_UNLOCK_ | ( | ) |
#define QACTIVE_EQUEUE_WAIT_ | ( | me_ | ) |
#define QACTIVE_EQUEUE_SIGNAL_ | ( | me_ | ) |
#define QXTHREAD_EQUEUE_SIGNAL_ | ( | me_ | ) |
#define QXTHREAD_CAST_ | ( | ptr_ | ) |
Internal macro to encapsulate casting of pointers for MISRA deviations
This macro is specifically and exclusively used for downcasting pointers to QActive to pointers to QXThread in situations when it is known that such downcasting is correct.However, such pointer casting is not compliant with MISRA-C:2023 Rule 11.3(R) as well as other messages (e.g., PC-Lint-Plus warning 826). Defining this specific macro for this purpose allows to selectively disable the warnings for this particular case.
Backward Traceability
#define QXK_PTR_CAST_ | ( | type_, | |
ptr_ ) |
Internal macro to encapsulate casting of pointers for MISRA deviations
This macro is specifically and exclusively used for casting pointers that are never de-referenced, but only used for internal bookkeeping and checking (via assertions) the correct operation of the QXK kernel. Such pointer casting is not compliant with MISRA-C:2023-Rule 11.3(R) as well as other messages (e.g., PC-Lint-Plus warning 826). Defining this specific macro for this purpose allows to selectively disable the warnings for this particular case.
Backward Traceability
#define QF_EPOOL_INIT_ | ( | p_, | |
poolSto_, | |||
poolSize_, | |||
evtSize_ ) |
#define QF_EPOOL_EVENT_SIZE_ | ( | p_ | ) |
#define QF_EPOOL_GET_ | ( | p_, | |
e_, | |||
m_, | |||
qsId_ ) |
#define QF_EPOOL_PUT_ | ( | p_, | |
e_, | |||
qsId_ ) |
|
noexcept |
QXK scheduler finds the highest-priority thread ready to run
The QXK scheduler finds the priority of the highest-priority thread that is ready to run.
qxk:402
|
noexcept |
QXK activator activates the next active object. The activated AO preempts the currently executing AOs.
QXK_activate_() activates ready-to run AOs that are above the initial active priority (QXK_priv_.actPrio).
qxk:500
void QXK_contextSw_ | ( | QP::QActive *const | next | ) |
void QXK_threadExit_ | ( | ) |
Called when QP::QXThread exits
Called when the extended-thread handler function returns.
qxk:900
qxk:901