Zephyr Project Requirements
Semaphores

SPDX-License-Identifier: Apache-2.0

ZEP-SRS-5-1
1. Counting Semaphore Definition At Compile Time UID: ZEP-SRS-5-1 STATUS: Draft TYPE: Functional COMPONENT: Semaphore RELATIONS (Parent): STATEMENT:

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

ZEP-SRS-5-2
2. Counting Semaphore Definition At Run Time UID: ZEP-SRS-5-2 STATUS: Draft TYPE: Functional COMPONENT: Semaphore RELATIONS (Parent): STATEMENT:

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

ZEP-SRS-5-3
3. Maximum limit of a semaphore UID: ZEP-SRS-5-3 STATUS: Draft TYPE: Functional COMPONENT: Semaphore STATEMENT:

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.

ZEP-SRS-5-4
4. Initialialization with maximum count value UID: ZEP-SRS-5-4 STATUS: Draft TYPE: Functional COMPONENT: Semaphore RELATIONS (Parent): STATEMENT:

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

ZEP-SRS-5-5
5. Initial semaphore value UID: ZEP-SRS-5-5 STATUS: Draft TYPE: Functional COMPONENT: Semaphore RELATIONS (Parent): STATEMENT:

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

ZEP-SRS-5-6
6. Semaphore acquisition mechanism UID: ZEP-SRS-5-6 STATUS: Draft TYPE: Functional COMPONENT: Semaphore RELATIONS (Parent): STATEMENT:

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

ZEP-SRS-5-7
7. Semaphore acquisition with count greater than zero UID: ZEP-SRS-5-7 STATUS: Draft TYPE: Functional COMPONENT: Semaphore RELATIONS (Parent): STATEMENT:

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

ZEP-SRS-5-8
8. Semaphore acquisition with zero count UID: ZEP-SRS-5-8 STATUS: Draft TYPE: Functional COMPONENT: Semaphore RELATIONS (Parent): STATEMENT:

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

ZEP-SRS-5-9
9. Semaphore acquisition timeout UID: ZEP-SRS-5-9 STATUS: Draft TYPE: Functional COMPONENT: Semaphore RELATIONS (Parent): STATEMENT:

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.

ZEP-SRS-5-10
10. Semaphore acquisition timeout error handling UID: ZEP-SRS-5-10 STATUS: Draft TYPE: Functional COMPONENT: Semaphore RELATIONS (Parent): STATEMENT:

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.

ZEP-SRS-5-11
11. Semaphore acquisition no wait error handling UID: ZEP-SRS-5-11 STATUS: Draft TYPE: Functional COMPONENT: Semaphore RELATIONS (Parent): STATEMENT:

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.

ZEP-SRS-5-12
12. Semaphore release UID: ZEP-SRS-5-12 STATUS: Draft TYPE: Functional COMPONENT: Semaphore RELATIONS (Parent): STATEMENT:

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

ZEP-SRS-5-13
13. Semaphore release UID: ZEP-SRS-5-13 STATUS: Draft TYPE: Functional COMPONENT: Semaphore RELATIONS (Parent): STATEMENT:

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

ZEP-SRS-5-14
14. Semaphore release with priority inheritance UID: ZEP-SRS-5-14 STATUS: Draft TYPE: Functional COMPONENT: Semaphore RELATIONS (Parent): STATEMENT:

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

ZEP-SRS-5-15
15. Checking semaphore count UID: ZEP-SRS-5-15 STATUS: Draft TYPE: Functional COMPONENT: Semaphore RELATIONS (Parent): STATEMENT:

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

ZEP-SRS-5-16
16. Semaphore reset UID: ZEP-SRS-5-16 STATUS: Draft TYPE: Functional COMPONENT: Semaphore RELATIONS (Parent): STATEMENT:

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

ZEP-SRS-5-17
17. Semaphore acquisitions abort after reset UID: ZEP-SRS-5-17 STATUS: Draft TYPE: Functional COMPONENT: Semaphore RELATIONS (Parent): STATEMENT:

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

ZEP-SRS-5-18
18. Semaphore Initialization Option Validation UID: ZEP-SRS-5-18 STATUS: Draft TYPE: Functional COMPONENT: Semaphore RELATIONS (Parent): STATEMENT:

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.