Thread Scheduling
SPDX-License-Identifier: Apache-2.0
1. Thread Scheduling
The Zephyr RTOS shall support operation on more than one physical CPU sharing the same kernel state.
The Zephyr RTOS shall provide an interface for running threads on specific sets of CPUs ( default is 1 CPU).
As a Zephyr RTOS user I want Zephyr OS to be able to specify the CPU core or the set of CPU cores on which a thread shall be executed.
The Zephyr RTOS shall provide an interface for mutual exclusion between multiple physical CPUs.
As a Zephyr RTOS user I want Zephyr OS to provide synchronization mechanisms between the CPU cores and the access to common resources.
2. Thread Scheduling
The Zephyr RTOS shall provide an interface to schedule a thread based on an event.
As a Zephyr RTOS user, I want to be able to execute work which reacts on events and interrupts the current executed work.
The Zephyr RTOS shall organize running threads by earliest deadline first priority.
As a Zephyr RTOS user, I want to be able to schedule threads by earliest deadline first.
The Zephyr RTOS shall provide a thread-pooled work queue utility capable of running preemptible work items with specific scheduler priorities.
As a Zephyr RTOS user, I want to be able to add work items in a thread work queue with different priorities and these shall be scheduled according their priorities.
The Zephyr RTOS shall provide an interface for running user-supplied functions.
As a Zephyr RTOS user, I want to be able to run functions in-order in a separated thread/threads.
The Zephyr RTOS shall organize running threads into a fixed list of numeric priorities.
As a Zephyr RTOS user, I want that the OS organize running threads in a fixed list of numeric priorities.
The Zephyr RTOS shall support preemption of a running thread by a higher priority thread.
As a Zephyr RTOS user, I want that the OS preempt running threads by a thread with higher priority.
The Zephyr RTOS shall support thread priorities which cannot be preempted by other user threads.
As a Zephyr RTOS user, I want to be able to configure thread prioritizes which cannot be preempted by other user threads.
The Zephyr RTOS shall support time sharing of CPU resources among threads of the same priority.
As a Zephyr RTOS user, I want to be able to configure my RTOS in the way, that the CPU resources are shared evenly among executed threads of the same priority.