Semaphores
| Type | Level | UID | REFS | Title | Statement | Rationale | Comment |
|---|---|---|---|---|---|---|---|
| Text | SPDX-License-Identifier: Apache-2.0 |
||||||
| Requirement | 1 | ZEP-SRS-5-1 | Parents: | 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 | Parents: | 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 | Parents: | 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 | Parents: | Initial semaphore value |
When initializing a counting semaphore, the initial semaphore value shall be set. |
||
| Requirement | 6 | ZEP-SRS-5-6 | Parents: | Semaphore acquisition mechanism |
The Zephyr RTOS shall provide a mechanism allowing threads to acquire a semaphore. |
||
| Requirement | 7 | ZEP-SRS-5-7 | Parents: | 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 | Parents: | 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 | Parents: | 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 | Parents: | 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 | Parents: | 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 | Parents: | Semaphore release |
The Zephyr RTOS shall provide a mechanism allowing threads to release a semaphore. |
||
| Requirement | 13 | ZEP-SRS-5-13 | Parents: | Semaphore release |
The Zephyr RTOS shall increment the semaphore's count upon release. |
||
| Requirement | 14 | ZEP-SRS-5-14 | Parents: | 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 | Parents: | 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 | Parents: | Semaphore reset |
The Zephyr RTOS shall provide a mechanism that resets the semaphore count to zero. |
||
| Requirement | 17 | ZEP-SRS-5-17 | Parents: | 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 | Parents: | 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. |