QP/C++ 8.1.3
Real-Time Event Framework
Loading...
Searching...
No Matches
Preemptive Non-Blocking Kernel

Non-Preemptive Kernelsrs-qp_qxk

Remarks
The concepts & definitions related to this SRS section are provided in Annex A: Concepts & Definitions, Section Preemptive Non-Blocking Kernel.

Requirements


SRS_QP_QK_00

QP/C++ Framework component shall provide preemptive non-blocking QK kernel as one of the built-in kernels.

Description
QP/C++ Framework component shall provide the QK kernel implementation and ports to the supported CPU/compiler combinations as one of the optional software components. QP/C++ Application can then choose the QK kernel to execute Active Objects. Such a selection is exclusive, meaning that when the QP/C++ Application selects the QK kernel, other kernels are excluded and cannot be used.

Description
QP/C++ Framework component can implement the QK kernel component by reusing already existing mechanisms, such as event queues for Active Objects, event delivery mechanisms, event memory management, etc. That way, the QK kernel implementation can be quite small and consist only of the missing pieces, such as the QK scheduler and "activator".

Forward Traceability (truncated to 2 level(s))



SRS_QP_QK_10

QK kernel shall provide an idle-callback defined in QP/C++ Application.

Description
When QK kernel finishes processing all RTC steps in all Active Objects, it shall execute the QK idle loop. This QK idle loop shall invoke an idle-callback (a function) defined in QP/C++ Application. The idle-callback can perform any processing, including putting the CPU and peripherals in a low-power sleep mode.

Use Case
The idle-callback shall be invoked with interrupts enabled and can perform Software Tracing data transfer to the host, or other processing.

Forward Traceability (truncated to 2 level(s))



SRS_QP_QK_20

QK kernel shall provide API to selectively lock scheduling Active Objects below the specified scheduler-lock ceiling priority.

Description
The selective scheduler locking API shall prevent scheduling any Active Objects whose unique priority is below the specified scheduler-lock ceiling priority.

Use Case
The main use case for selective scheduler locking is during multicasting events to prevent unexpected and confusing event sequences (see SRS_QP_EDM_55).

Forward Traceability (truncated to 2 level(s))



SRS_QP_QK_21

QK kernel shall provide API to unlock scheduling Active Objects.

Description
The scheduler unlocking API shall complement the scheduler locking API (see SRS_QP_QK_20). The scheduler unlocking API shall restore the scheduler-lock ceiling established in the most recent call to the scheduler locking API.

Use Case
The main use case for selective scheduler locking (matching the use case in SRS_QP_QK_20) is enabling the QV scheduler in the system clock tick.

Forward Traceability (truncated to 2 level(s))



SRS_QP_QK_30

QK kernel shall support preemption-threshold scheduling (PTS).

Description
Support for preemption-threshold scheduling (PTS) means that each Active Object can be assigned a preemption-threshold (alongside its unique %QP priority). The Active Object with a given preemption-threshold cannot be preempted by Active Objects with the unique QP priorities below the preemption threshold.

Forward Traceability (truncated to 2 level(s))



SRS_QP_QK_31

The preemption-threshold assigned to an Active Object must be consistent with its unique QP priority.

Description
The preemption-threshold assigned to an Active Object can be only higher than the unique QP priority. Additionally, the preemption-threshold cannot exceed preemption thresholds assigned to any higher-priority Active Objects.

Forward Traceability (truncated to 2 level(s))


Non-Preemptive KernelNon-Functional Requirements