Zephyr Project Requirements
Semaphores

Semaphores

Type LevelUIDREFS Title Statement Rationale Comment
Text

SPDX-License-Identifier: Apache-2.0

Requirement 1 ZEP-SRS-5-1
Counting Semaphore Definition At Compile Time

The Zephyr RTOS shall provide a mechanism to define and initialize a semaphore at compile time.

Requirement 2 ZEP-SRS-5-2
Counting Semaphore Definition At Run Time

The Zephyr RTOS shall provide a mechanism to define and initialize a semaphore at runtime.

Requirement 3 ZEP-SRS-5-3
Maximum limit of a semaphore

The Zephyr RTOS shall define the maximum limit of a semaphore when the semaphore is used for counting purposes and does not have an explicit limit.

Requirement 4 ZEP-SRS-5-4
Initialialization with maximum count value

When initializing a counting semaphore, the maximum permitted count a semaphore can have shall be set.

Requirement 5 ZEP-SRS-5-5
Initial semaphore value

When initializing a counting semaphore, the initial semaphore value shall be set.

Requirement 6 ZEP-SRS-5-6
Semaphore acquisition mechanism

The Zephyr RTOS shall provide a mechanism allowing threads to acquire a semaphore.

Requirement 7 ZEP-SRS-5-7
Semaphore acquisition with count greater than zero

While the semaphore's count is greater than zero, the requesting thread shall acquire the semaphore and decrement its count.

Requirement 8 ZEP-SRS-5-8
Semaphore acquisition with zero count

While the semaphore's count is zero, the requesting thread shall be blocked until the semaphore is released by another thread.

Requirement 9 ZEP-SRS-5-9
Semaphore acquisition timeout

When attempting to acquire a semaphore, the Zephyr RTOS shall accept options that specify timeout periods, allowing threads to set a maximum wait time for semaphore acquisition.

Requirement 10 ZEP-SRS-5-10
Semaphore acquisition timeout error handling

When attempting to acquire a semaphore, where the semaphore is not acquired within the specified time, the Zephyr RTOS shall return an error indicating a timeout.

Requirement 11 ZEP-SRS-5-11
Semaphore acquisition no wait error handling

When attempting to acquire a semaphore, where the current count is zero and no timeout time was provided, the Zephyr RTOS shall return an error indicating the semaphore is busy.

Requirement 12 ZEP-SRS-5-12
Semaphore release

The Zephyr RTOS shall provide a mechanism allowing threads to release a semaphore.

Requirement 13 ZEP-SRS-5-13
Semaphore release

The Zephyr RTOS shall increment the semaphore's count upon release.

Requirement 14 ZEP-SRS-5-14
Semaphore release with priority inheritance

When there are threads waiting on the semaphore, the highest-priority waiting thread shall be unblocked and acquire the semaphore.

Requirement 15 ZEP-SRS-5-15
Checking semaphore count

The Zephyr RTOS shall provide a mechanism for threads to check the current count of a semaphore without acquiring it.

Requirement 16 ZEP-SRS-5-16
Semaphore reset

The Zephyr RTOS shall provide a mechanism that resets the semaphore count to zero.

Requirement 17 ZEP-SRS-5-17
Semaphore acquisitions abort after reset

When a semaphore is reset, the Zephyr RTOS shall abort all existing acquisitions of the semaphore returning a resource contention error code.

Requirement 18 ZEP-SRS-5-18
Semaphore Initialization Option Validation

When initializing a counting semaphore, where the maximum permitted count of a semaphore is invalid, then the Zephyr RTOS shall return an error indicating invalid values.