Zephyr Project Requirements
Thread Scheduling

Thread Scheduling

UID:
VERSION:
CLASSIFICATION:
PREFIX:
ZEP-SRS-2-
Type
Level
UID
STATUS
TYPE
COMPONENT
REFS
Title
Statement
USER_STORY
TEXT

SPDX-License-Identifier: Apache-2.0

SECTION
1
Thread Scheduling
REQUIREMENT
1.1
ZEP-SRS-2-1
Draft
Functional
Multi Core
ZEP-SRS-2-1
Support operation on more than one CPU

The Zephyr RTOS shall support operation on more than one physical CPU sharing the same kernel state.

REQUIREMENT
1.2
ZEP-SRS-2-2
Draft
Functional
Multi Core
ZEP-SRS-2-2
Running threads on specific CPUs

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.

REQUIREMENT
1.3
ZEP-SRS-2-3
Draft
Functional
Multi Core
ZEP-SRS-2-3
Exclusion between physical CPUs

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.

SECTION
2
Thread Scheduling
REQUIREMENT
2.1
ZEP-SRS-2-4
Draft
Functional
Thread Scheduling
ZEP-SRS-2-4
Scheduling a thread based on an event

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.

REQUIREMENT
2.2
ZEP-SRS-2-5
Draft
Functional
Thread Scheduling
ZEP-SRS-2-5
Deadline Scheduling Priorities

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.

REQUIREMENT
2.3
ZEP-SRS-2-6
Draft
Functional
Thread Scheduling
ZEP-SRS-2-6
Work Queue utility capable of running preemptible work items

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.

REQUIREMENT
2.4
ZEP-SRS-2-7
Draft
Functional
Thread Scheduling
ZEP-SRS-2-7
Run user supplied functions in-order in a separate thread(s)

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.

REQUIREMENT
2.5
ZEP-SRS-2-8
Draft
Functional
Thread Scheduling
ZEP-SRS-2-8
Organize running threads into a fixed list

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.

REQUIREMENT
2.6
ZEP-SRS-2-9
Draft
Functional
Thread Scheduling
ZEP-SRS-2-9
Preemption support

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.

REQUIREMENT
2.7
ZEP-SRS-2-10
Draft
Functional
Thread Scheduling
ZEP-SRS-2-10
Un-preemptible thread priorities

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.

REQUIREMENT
2.8
ZEP-SRS-2-11
Draft
Functional
Thread Scheduling
ZEP-SRS-2-11
Time sharing of CPU resources

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.