Requirements Catalog
The following requirements are imported from the Zephyr
requirements repository (reqmgmt).
- Zephyr Software Requirements
- ZEP-SRS-19-1: Atomic Operations
- ZEP-SRS-19-2: Thread Context Switching
- ZEP-SRS-19-3: Software Exceptions
- ZEP-SRS-19-4: Processor Mode Support
- ZEP-SRS-18-1: Formatted output
- ZEP-SRS-18-2: Floating Point Math Support
- ZEP-SRS-18-3: Boolean Primitives Support
- ZEP-SRS-18-4: Standard Unix time interface
- ZEP-SRS-18-5: Strings support
- ZEP-SRS-18-6: Moving/copying regions of memory
- ZEP-SRS-18-7: I/O based interface
- ZEP-SRS-18-8: C99 integer types
- ZEP-SRS-18-9: Standard System Error Numbers (IEEE Std 1003.1-2017)
- ZEP-SRS-18-10: Document set of Zephyr OS required C library functions in Safety Manual
- ZEP-SRS-18-11: Support external C libraries documentation in Zephyr Safety Manual
- ZEP-SRS-14-1: Device Driver Abstraction
- ZEP-SRS-14-2: Expose kernel to hardware interrupts
- ZEP-SRS-16-1: Fatal Exception Error Handler
- ZEP-SRS-16-2: Default handler for fatal errors
- ZEP-SRS-16-3: Assigning a specific handler
- ZEP-SRS-16-4: Assigning a specific handler for a fatal error
- ZEP-SRS-17-1: Create file
- ZEP-SRS-17-2: Open files
- ZEP-SRS-17-3: Read files
- ZEP-SRS-17-4: Write to files
- ZEP-SRS-17-5: Close file
- ZEP-SRS-17-6: Move file
- ZEP-SRS-17-7: Delete file
- ZEP-SRS-7-1: Installing static IRQ service routines (ISR).
- ZEP-SRS-7-2: Static IRQ initial status.
- ZEP-SRS-7-3: Installing direct IRQ service routines (ISR).
- ZEP-SRS-7-4: Direct IRQ initial status.
- ZEP-SRS-7-5: Installing dynamic IRQ service routines (ISR).
- ZEP-SRS-7-6: Dynamic IRQ initial status.
- ZEP-SRS-7-7: Uninstalling dynamic IRQ service routines (ISR).
- ZEP-SRS-7-8: Global IRQ disable
- ZEP-SRS-7-9: Global IRQ enable
- ZEP-SRS-7-10: Specific IRQ disable
- ZEP-SRS-7-11: Specific IRQ enable
- ZEP-SRS-7-12: IRQ Enabled status
- ZEP-SRS-7-13: ISR Context status
- ZEP-SRS-7-14: Multi-level interrupts
- ZEP-SRS-7-15: Interrupt service routine invocation
- ZEP-SRS-7-16: Interrupt service routine parameter
- ZEP-SRS-11-1: Dedicated Logging Thread Support
- ZEP-SRS-11-2: Logs available for post processing
- ZEP-SRS-11-3: Formatting log messages
- ZEP-SRS-11-4: Logging Filtering Support
- ZEP-SRS-11-5: Multiple Backend Logging Support
- ZEP-SRS-11-6: Deferred Logging Support
- ZEP-SRS-8-1: Memory Protection
- ZEP-SRS-8-2: Granting access to kernel objects
- ZEP-SRS-8-3: Separation between user and kernel threads for memory access
- ZEP-SRS-8-4: Safely handle unimplemented calls or invalid system calls
- ZEP-SRS-8-5: Response to invalid system call IDs
- ZEP-SRS-8-6: Prevent user threads creating higher priority threads
- ZEP-SRS-8-7: Revoking threads permissions on a kernel object
- ZEP-SRS-8-8: Prevent user threads creating supervisor threads
- ZEP-SRS-8-9: Reduced Privilege Level Threads
- ZEP-SRS-8-10: User Mode Threads Performing Privileged Operations
- ZEP-SRS-8-11: User mode handling of detected stack overflow
- ZEP-SRS-8-12: Stack Overflow Detection
- ZEP-SRS-8-13: Boot Time Memory Access Policy
- ZEP-SRS-8-14: System Call Handler Functions
- ZEP-SRS-8-15: System Call C strings in user mode
- ZEP-SRS-8-16: Tracking kernel objects in used by user mode threads
- ZEP-SRS-8-17: Granting threads access to specific memory
- ZEP-SRS-8-18: Assigning memory pools to act as a thread resource pool
- ZEP-SRS-9-1: Dynamic Memory Allocation
- ZEP-SRS-9-2: Memory Slab Object
- ZEP-SRS-15-1: Traditional FIFO Queue
- ZEP-SRS-15-2: Traditional LIFO queue
- ZEP-SRS-6-1: Mutex Kernel Object
- ZEP-SRS-6-2: Mutex definition at compile time
- ZEP-SRS-6-3: Mutex definition at run time
- ZEP-SRS-6-4: Locking a mutex
- ZEP-SRS-6-5: Locking an unowned mutex
- ZEP-SRS-6-6: Locking a mutex owned by another thread
- ZEP-SRS-6-7: Mutex lock timeout
- ZEP-SRS-6-8: Mutex lock timeout expiry
- ZEP-SRS-6-9: Recursive mutex locking
- ZEP-SRS-6-10: Unlocking a mutex
- ZEP-SRS-6-11: Unlocking by a non-owner
- ZEP-SRS-6-12: Priority inheritance
- ZEP-SRS-5-1: Counting Semaphore Definition At Compile Time
- ZEP-SRS-5-2: Counting Semaphore Definition At Run Time
- ZEP-SRS-5-3: Maximum limit of a semaphore
- ZEP-SRS-5-4: Initialialization with maximum count value
- ZEP-SRS-5-5: Initial semaphore value
- ZEP-SRS-5-6: Semaphore acquisition mechanism
- ZEP-SRS-5-7: Semaphore acquisition with count greater than zero
- ZEP-SRS-5-8: Semaphore acquisition with zero count
- ZEP-SRS-5-9: Semaphore acquisition timeout
- ZEP-SRS-5-10: Semaphore acquisition timeout error handling
- ZEP-SRS-5-11: Semaphore acquisition no wait error handling
- ZEP-SRS-5-12: Semaphore release
- ZEP-SRS-5-13: Semaphore count increment on release
- ZEP-SRS-5-14: Highest-priority waiter unblocked on release
- ZEP-SRS-5-15: Checking semaphore count
- ZEP-SRS-5-16: Semaphore reset
- ZEP-SRS-5-17: Semaphore acquisitions abort after reset
- ZEP-SRS-5-18: Semaphore Initialization Option Validation
- ZEP-SRS-5-19: Semaphore release at maximum count
- ZEP-SRS-5-20: Semaphore operations from interrupt context
- ZEP-SRS-13-1: Power State Control
- ZEP-SRS-13-2: Power Management
- ZEP-SRS-13-3: Notification of changes to system power states
- ZEP-SRS-3-1: Exchanging data between threads
- ZEP-SRS-3-2: Waiting for results during communication
- ZEP-SRS-3-3: Poll Operation Support
- ZEP-SRS-3-4: Pipe Communication Primitive
- ZEP-SRS-3-5: Message Queue
- ZEP-SRS-3-6: Mailbox Kernel Primitive
- ZEP-SRS-2-1: Support operation on more than one CPU
- ZEP-SRS-2-2: Running threads on specific CPUs
- ZEP-SRS-2-3: Exclusion between physical CPUs
- ZEP-SRS-2-4: Scheduling a thread based on an event
- ZEP-SRS-2-5: Deadline Scheduling Priorities
- ZEP-SRS-2-6: Work Queue utility capable of running preemptible work items
- ZEP-SRS-2-7: Run user supplied functions in-order in a separate thread(s)
- ZEP-SRS-2-8: Organize running threads into a fixed list
- ZEP-SRS-2-9: Preemption support
- ZEP-SRS-2-10: Un-preemptible thread priorities
- ZEP-SRS-2-11: Time sharing of CPU resources
- ZEP-SRS-1-1: Creating threads
- ZEP-SRS-1-2: Setting thread priority
- ZEP-SRS-1-3: Suspending a thread
- ZEP-SRS-1-4: Resuming a suspended thread
- ZEP-SRS-1-5: Resuming a suspended thread after a timeout
- ZEP-SRS-1-6: Deleting a thread
- ZEP-SRS-1-7: Thread states
- ZEP-SRS-1-8: Thread stack objects
- ZEP-SRS-1-9: Thread privileges
- ZEP-SRS-1-10: Scheduling multiple threads
- ZEP-SRS-1-11: Thread Options
- ZEP-SRS-1-12: Thread Custom Data
- ZEP-SRS-4-1: Timer definition at compile time
- ZEP-SRS-4-2: Timer expiry function
- ZEP-SRS-4-3: Timer stop function
- ZEP-SRS-4-4: Timer definition at run time
- ZEP-SRS-4-5: Timer start
- ZEP-SRS-4-6: Timer stop
- ZEP-SRS-4-7: Timer status
- ZEP-SRS-4-8: Timer status reinitialization
- ZEP-SRS-4-9: Timer thread synchronization
- ZEP-SRS-4-10: Timer next expiration time in system ticks
- ZEP-SRS-4-11: Timer remaining time until expiration in system ticks
- ZEP-SRS-4-12: Timer remaining time until expiration in milliseconds
- ZEP-SRS-4-13: Timer set user data
- ZEP-SRS-4-14: Timer get user data
- ZEP-SRS-4-15: Timer expire functions in interrupt context
- ZEP-SRS-10-1: Initializing a trace
- ZEP-SRS-10-2: Triggering a trace
- ZEP-SRS-10-3: Dumping trace results
- ZEP-SRS-10-4: Removing trace data
- ZEP-SRS-10-5: Tracing Object Identification
- ZEP-SRS-10-6: Tracing Non-Interference
- ZEP-SRS-21-1: Dynamic initialization of condition variables
- ZEP-SRS-21-2: Static initialization of condition variables
- ZEP-SRS-21-3: Signal one waiting thread
- ZEP-SRS-21-4: Signal multiple waiting threads
- ZEP-SRS-21-5: Wait on a condition variable
- ZEP-SRS-21-6: Wait timeout on a condition variable
- ZEP-SRS-21-7: Wait timeout occurence
- ZEP-SRS-21-8: Release mutex on wait
- ZEP-SRS-21-9: Unblock a waiting thread
- ZEP-SRS-20-1: Queue definition at compile time
- ZEP-SRS-20-2: Queue definition at run time.
- ZEP-SRS-20-3: Queue enqueue item to the back
- ZEP-SRS-20-4: Queue enqueue item to the front
- ZEP-SRS-20-5: Queue remove item
- ZEP-SRS-20-6: Queue get and dequeue item from front
- ZEP-SRS-20-7: Queue empty check
- ZEP-SRS-20-8: Queue peek item at back
- ZEP-SRS-20-9: Queue peek item at front
- ZEP-SRS-20-10: Queue insert
- ZEP-SRS-20-11: Queue append item list to the back
- ZEP-SRS-20-12: Queue append and empty item list to the back
- ZEP-SRS-20-13: Queue append unique data item
- ZEP-SRS-20-14: Queue implicit memory allocation
- ZEP-SRS-23-1: LIFO definition at compile time
- ZEP-SRS-23-2: LIFO enqueue item to the back
- ZEP-SRS-23-3: LIFO implicit memory allocation
- ZEP-SRS-23-4: LIFO get and dequeue item from front
- ZEP-SRS-23-5: Queue definition at compile time
- ZEP-SRS-24-1: FIFO definition at compile time
- ZEP-SRS-24-2: FIFO cancel waiting thread
- ZEP-SRS-24-3: FIFO enqueue item to the back
- ZEP-SRS-24-4: FIFO implicit memory allocation
- ZEP-SRS-24-5: FIFO append item list to the back
- ZEP-SRS-24-6: FIFO append and empty item list to the back
- ZEP-SRS-24-7: FIFO get and dequeue item from front
- ZEP-SRS-24-8: FIFO empty check
- ZEP-SRS-24-9: FIFO peek item at front
- ZEP-SRS-24-10: FIFO peek item at back
- ZEP-SRS-25-1: Mailbox Initialization At Run Time
- ZEP-SRS-25-2: Mailbox Initialization At Compile Time
- ZEP-SRS-25-3: Message Size Support
- ZEP-SRS-25-4: Mailbox Data Transfer
- ZEP-SRS-25-5: Synchronous Message Sending
- ZEP-SRS-25-6: Synchronous Send Timeout Handling
- ZEP-SRS-25-7: Asynchronous Message Sending
- ZEP-SRS-25-8: Asynchronous Completion Signaling
- ZEP-SRS-25-9: Message Reception
- ZEP-SRS-25-10: Message Data Retrieval
- ZEP-SRS-25-11: Message Reception Blocking
- ZEP-SRS-25-12: Message Reception Timeout Handling
- ZEP-SRS-25-13: Non-Anonymous Messaging
- ZEP-SRS-25-14: Priority-Based Message Delivery
- ZEP-SRS-25-15: Priority-Based Message Delivery
- ZEP-SRS-25-16: Mailbox Quantity Support
- ZEP-SRS-25-17: Invalid Parameter Handling
- ZEP-SRS-30-1: Stack definition at compile time
- ZEP-SRS-30-2: Stack initialization at run time with an user-defined memory area
- ZEP-SRS-30-3: Stack initialization at run time with automatically allocated memory area
- ZEP-SRS-30-4: Releasing a dynamically allocated stack buffer
- ZEP-SRS-30-5: Push an item to the stack
- ZEP-SRS-30-6: Pop an item from the stack
- ZEP-SRS-30-7: Pushing onto a full stack
- ZEP-SRS-30-8: Concurrent access protection
- ZEP-SRS-30-9: Stack data retrieval with timeout
- ZEP-SRS-26-1: Atomic variable
- ZEP-SRS-26-2: Atomic value
- ZEP-SRS-26-3: Tearing freedom
- ZEP-SRS-26-4: Cross-CPU visibility
- ZEP-SRS-26-5: Indivisibility
- ZEP-SRS-26-6: Memory ordering
- ZEP-SRS-26-7: Software implementation fallback
- ZEP-SRS-26-8: Native atomic instructions
- ZEP-SRS-26-9: Compute size of atomic variables
- ZEP-SRS-26-10: Define an array of atomic variables
- ZEP-SRS-26-11: Initialize atomic variable
- ZEP-SRS-26-12: Set atomic variable
- ZEP-SRS-26-13: Get atomic variable
- ZEP-SRS-26-14: Atomic bitwise operations
- ZEP-SRS-26-15: Atomic bitwise AND operation
- ZEP-SRS-26-16: Atomic bitwise OR operation
- ZEP-SRS-26-17: Atomic bitwise NAND operation
- ZEP-SRS-26-18: Atomic bitwise XOR operation
- ZEP-SRS-26-19: Atomic addition
- ZEP-SRS-26-20: Atomic increment
- ZEP-SRS-26-21: Atomic subtraction
- ZEP-SRS-26-22: Atomic decrement
- ZEP-SRS-26-23: Atomic compare and set
- ZEP-SRS-26-24: Atomic clear
- ZEP-SRS-26-25: Atomic bit operations
- ZEP-SRS-26-26: Atomic set bit
- ZEP-SRS-26-27: Atomic clear bit
- ZEP-SRS-26-28: Atomic set bit to a given state
- ZEP-SRS-26-29: Atomic test bit
- ZEP-SRS-26-30: Atomic test and set bit
- ZEP-SRS-26-31: Atomic test and clear bit
- ZEP-SRS-26-32: Atomic pointer
- ZEP-SRS-26-33: Atomic pointer value
- ZEP-SRS-26-34: Initialize atomic pointer
- ZEP-SRS-26-35: Atomic pointer operations
- ZEP-SRS-26-36: Get atomic pointer
- ZEP-SRS-26-37: Set atomic pointer
- ZEP-SRS-26-38: Atomic pointer compare and set
- ZEP-SRS-26-39: Atomic pointer clear
- ZEP-SRS-26-40: Usable from threads and interrupt service routines
- Zephyr System Requirements
- ZEP-SYRS-1: Architecture Layer Interface
- ZEP-SYRS-2: Support multiprocessor management
- ZEP-SYRS-3: Support Subset of Standard C Library
- ZEP-SYRS-4: Device Driver Abstraction
- ZEP-SYRS-5: Fatal error and exception handling
- ZEP-SYRS-6: Common File system operation support
- ZEP-SYRS-7: Interrupt Management
- ZEP-SYRS-20: Direct ISR, Platform Specific helpers.
- ZEP-SYRS-8: Logging
- ZEP-SYRS-9: Memory Management framework
- ZEP-SYRS-10: Power Management
- ZEP-SYRS-11: Multiple CPU scheduling
- ZEP-SYRS-12: Scheduling
- ZEP-SYRS-13: Mutex
- ZEP-SYRS-14: Counting Semaphore
- ZEP-SYRS-15: Thread support
- ZEP-SYRS-16: Thread management
- ZEP-SYRS-17: Thread priority
- ZEP-SYRS-18: Timers
- ZEP-SYRS-19: Tracing
- ZEP-SYRS-21: Condition Variables
- ZEP-SYRS-22: Queues data passing
- ZEP-SYRS-23: LIFOs data passing
- ZEP-SYRS-24: FIFOs data passing
- ZEP-SYRS-25: Mailboxes
- ZEP-SYRS-26: Atomic Service
- ZEP-SYRS-30: Stacks