RTEMS C User’s Guide¶
RTEMS C User’s Guide¶
COPYRIGHT (c) 1988 - 2015.On-Line Applications Research Corporation (OAR).
The authors have used their best efforts in preparing this material. These efforts include the development, research, and testing of the theories and programs to determine their effectiveness. No warranty of any kind, expressed or implied, with regard to the software or the material contained in this document is provided. No liability arising out of the application or use of any product described in this document is assumed. The authors reserve the right to revise this material and to make changes from time to time in the content hereof without obligation to notify anyone of such revision or changes.
The RTEMS Project is hosted at http://www.rtems.org/. Any inquiries concerning RTEMS, its related support components, or its documentation should be directed to the Community Project hosted at http://www.rtems.org/.
RTEMS Online Resources
Home | https://www.rtems.org/ |
Developers | https://devel.rtems.org/ |
Documentation | https://docs.rtems.org/ |
Bug Reporting | https://devel.rtems.org/query |
Mailing Lists | https://lists.rtems.org/ |
Git Repositories | https://git.rtems.org/ |
- 1. Preface
- 2. Overview
- 3. Key Concepts
- 4. RTEMS Data Types
- 5. Scheduling Concepts
- 6. Initialization Manager
- 7. Task Manager
- 7.1. Introduction
- 7.2. Background
- 7.3. Operations
- 7.3.1. Creating Tasks
- 7.3.2. Obtaining Task IDs
- 7.3.3. Starting and Restarting Tasks
- 7.3.4. Suspending and Resuming Tasks
- 7.3.5. Delaying the Currently Executing Task
- 7.3.6. Changing Task Priority
- 7.3.7. Changing Task Mode
- 7.3.8. Notepad Locations
- 7.3.9. Task Deletion
- 7.3.10. Transition Advice for Obsolete Directives
- 7.4. Directives
- 7.4.1. TASK_CREATE - Create a task
- 7.4.2. TASK_IDENT - Get ID of a task
- 7.4.3. TASK_SELF - Obtain ID of caller
- 7.4.4. TASK_START - Start a task
- 7.4.5. TASK_RESTART - Restart a task
- 7.4.6. TASK_DELETE - Delete a task
- 7.4.7. TASK_SUSPEND - Suspend a task
- 7.4.8. TASK_RESUME - Resume a task
- 7.4.9. TASK_IS_SUSPENDED - Determine if a task is Suspended
- 7.4.10. TASK_SET_PRIORITY - Set task priority
- 7.4.11. TASK_MODE - Change the current task mode
- 7.4.12. TASK_GET_NOTE - Get task notepad entry
- 7.4.13. TASK_SET_NOTE - Set task notepad entry
- 7.4.14. TASK_WAKE_AFTER - Wake up after interval
- 7.4.15. TASK_WAKE_WHEN - Wake up when specified
- 7.4.16. ITERATE_OVER_ALL_THREADS - Iterate Over Tasks
- 7.4.17. TASK_VARIABLE_ADD - Associate per task variable
- 7.4.18. TASK_VARIABLE_GET - Obtain value of a per task variable
- 7.4.19. TASK_VARIABLE_DELETE - Remove per task variable
- 8. Interrupt Manager
- 8.1. Introduction
- 8.2. Background
- 8.3. Operations
- 8.4. Directives
- 8.4.1. INTERRUPT_CATCH - Establish an ISR
- 8.4.2. INTERRUPT_DISABLE - Disable Interrupts
- 8.4.3. INTERRUPT_ENABLE - Enable Interrupts
- 8.4.4. INTERRUPT_FLASH - Flash Interrupts
- 8.4.5. INTERRUPT_LOCAL_DISABLE - Disable Interrupts on Current Processor
- 8.4.6. INTERRUPT_LOCAL_ENABLE - Enable Interrupts on Current Processor
- 8.4.7. INTERRUPT_LOCK_INITIALIZE - Initialize an ISR Lock
- 8.4.8. INTERRUPT_LOCK_ACQUIRE - Acquire an ISR Lock
- 8.4.9. INTERRUPT_LOCK_RELEASE - Release an ISR Lock
- 8.4.10. INTERRUPT_LOCK_ACQUIRE_ISR - Acquire an ISR Lock from ISR
- 8.4.11. INTERRUPT_LOCK_RELEASE_ISR - Release an ISR Lock from ISR
- 8.4.12. INTERRUPT_IS_IN_PROGRESS - Is an ISR in Progress
- 9. Clock Manager
- 9.1. Introduction
- 9.2. Background
- 9.3. Operations
- 9.4. Directives
- 9.4.1. CLOCK_SET - Set date and time
- 9.4.2. CLOCK_GET - Get date and time information
- 9.4.3. CLOCK_GET_TOD - Get date and time in TOD format
- 9.4.4. CLOCK_GET_TOD_TIMEVAL - Get date and time in timeval format
- 9.4.5. CLOCK_GET_SECONDS_SINCE_EPOCH - Get seconds since epoch
- 9.4.6. CLOCK_GET_TICKS_PER_SECOND - Get ticks per second
- 9.4.7. CLOCK_GET_TICKS_SINCE_BOOT - Get current ticks counter value
- 9.4.8. CLOCK_TICK_LATER - Get tick value in the future
- 9.4.9. CLOCK_TICK_LATER_USEC - Get tick value in the future in microseconds
- 9.4.10. CLOCK_TICK_BEFORE - Is tick value is before a point in time
- 9.4.11. CLOCK_GET_UPTIME - Get the time since boot
- 9.4.12. CLOCK_GET_UPTIME_TIMEVAL - Get the time since boot in timeval format
- 9.4.13. CLOCK_GET_UPTIME_SECONDS - Get the seconds since boot
- 9.4.14. CLOCK_GET_UPTIME_NANOSECONDS - Get the nanoseconds since boot
- 10. Timer Manager
- 10.1. Introduction
- 10.2. Background
- 10.3. Operations
- 10.4. Directives
- 10.4.1. TIMER_CREATE - Create a timer
- 10.4.2. TIMER_IDENT - Get ID of a timer
- 10.4.3. TIMER_CANCEL - Cancel a timer
- 10.4.4. TIMER_DELETE - Delete a timer
- 10.4.5. TIMER_FIRE_AFTER - Fire timer after interval
- 10.4.6. TIMER_FIRE_WHEN - Fire timer when specified
- 10.4.7. TIMER_INITIATE_SERVER - Initiate server for task-based timers
- 10.4.8. TIMER_SERVER_FIRE_AFTER - Fire task-based timer after interval
- 10.4.9. TIMER_SERVER_FIRE_WHEN - Fire task-based timer when specified
- 10.4.10. TIMER_RESET - Reset an interval timer
- 11. Rate Monotonic Manager
- 11.1. Introduction
- 11.2. Background
- 11.3. Operations
- 11.4. Directives
- 11.4.1. RATE_MONOTONIC_CREATE - Create a rate monotonic period
- 11.4.2. RATE_MONOTONIC_IDENT - Get ID of a period
- 11.4.3. RATE_MONOTONIC_CANCEL - Cancel a period
- 11.4.4. RATE_MONOTONIC_DELETE - Delete a rate monotonic period
- 11.4.5. RATE_MONOTONIC_PERIOD - Conclude current/Start next period
- 11.4.6. RATE_MONOTONIC_GET_STATUS - Obtain status from a period
- 11.4.7. RATE_MONOTONIC_GET_STATISTICS - Obtain statistics from a period
- 11.4.8. RATE_MONOTONIC_RESET_STATISTICS - Reset statistics for a period
- 11.4.9. RATE_MONOTONIC_RESET_ALL_STATISTICS - Reset statistics for all periods
- 11.4.10. RATE_MONOTONIC_REPORT_STATISTICS - Print period statistics report
- 12. Semaphore Manager
- 12.1. Introduction
- 12.2. Background
- 12.3. Operations
- 12.4. Directives
- 12.4.1. SEMAPHORE_CREATE - Create a semaphore
- 12.4.2. SEMAPHORE_IDENT - Get ID of a semaphore
- 12.4.3. SEMAPHORE_DELETE - Delete a semaphore
- 12.4.4. SEMAPHORE_OBTAIN - Acquire a semaphore
- 12.4.5. SEMAPHORE_RELEASE - Release a semaphore
- 12.4.6. SEMAPHORE_FLUSH - Unblock all tasks waiting on a semaphore
- 12.4.7. SEMAPHORE_SET_PRIORITY - Set priority by scheduler for a semaphore
- 13. Barrier Manager
- 14. Message Manager
- 14.1. Introduction
- 14.2. Background
- 14.3. Operations
- 14.4. Directives
- 14.4.1. MESSAGE_QUEUE_CREATE - Create a queue
- 14.4.2. MESSAGE_QUEUE_IDENT - Get ID of a queue
- 14.4.3. MESSAGE_QUEUE_DELETE - Delete a queue
- 14.4.4. MESSAGE_QUEUE_SEND - Put message at rear of a queue
- 14.4.5. MESSAGE_QUEUE_URGENT - Put message at front of a queue
- 14.4.6. MESSAGE_QUEUE_BROADCAST - Broadcast N messages to a queue
- 14.4.7. MESSAGE_QUEUE_RECEIVE - Receive message from a queue
- 14.4.8. MESSAGE_QUEUE_GET_NUMBER_PENDING - Get number of messages pending on a queue
- 14.4.9. MESSAGE_QUEUE_FLUSH - Flush all messages on a queue
- 15. Event Manager
- 16. Signal Manager
- 17. Partition Manager
- 18. Region Manager
- 18.1. Introduction
- 18.2. Background
- 18.3. Operations
- 18.4. Directives
- 18.4.1. REGION_CREATE - Create a region
- 18.4.2. REGION_IDENT - Get ID of a region
- 18.4.3. REGION_DELETE - Delete a region
- 18.4.4. REGION_EXTEND - Add memory to a region
- 18.4.5. REGION_GET_SEGMENT - Get segment from a region
- 18.4.6. REGION_RETURN_SEGMENT - Return segment to a region
- 18.4.7. REGION_GET_SEGMENT_SIZE - Obtain size of a segment
- 18.4.8. REGION_RESIZE_SEGMENT - Change size of a segment
- 19. Dual-Ported Memory Manager
- 20. I/O Manager
- 20.1. Introduction
- 20.2. Background
- 20.3. Operations
- 20.4. Directives
- 20.4.1. IO_REGISTER_DRIVER - Register a device driver
- 20.4.2. IO_UNREGISTER_DRIVER - Unregister a device driver
- 20.4.3. IO_INITIALIZE - Initialize a device driver
- 20.4.4. IO_REGISTER_NAME - Register a device
- 20.4.5. IO_LOOKUP_NAME - Lookup a device
- 20.4.6. IO_OPEN - Open a device
- 20.4.7. IO_CLOSE - Close a device
- 20.4.8. IO_READ - Read from a device
- 20.4.9. IO_WRITE - Write to a device
- 20.4.10. IO_CONTROL - Special device services
- 21. Fatal Error Manager
- 21.1. Introduction
- 21.2. Background
- 21.3. Operations
- 21.4. Directives
- 21.4.1. FATAL_ERROR_OCCURRED - Invoke the fatal error handler
- 21.4.2. FATAL - Invoke the fatal error handler with error source
- 21.4.3. EXCEPTION_FRAME_PRINT - Prints the exception frame
- 21.4.4. FATAL_SOURCE_TEXT - Returns a text for a fatal source
- 21.4.5. INTERNAL_ERROR_TEXT - Returns a text for an internal error code
- 22. Board Support Packages
- 23. User Extensions Manager
- 24. Configuring a System
- 24.1. Introduction
- 24.2. Default Value Selection Philosophy
- 24.3. Sizing the RTEMS Workspace
- 24.4. Potential Issues with RTEMS Workspace Size Estimation
- 24.5. Format to be followed for making changes in this file
- 24.6. Configuration Example
- 24.7. Unlimited Objects
- 24.8. Classic API Configuration
- 24.8.1. Specify Maximum Classic API Tasks
- 24.8.2. Specify Maximum Classic API Timers
- 24.8.3. Specify Maximum Classic API Timers
- 24.8.4. Specify Maximum Classic API Semaphores
- 24.8.5. Specify Maximum Classic API Semaphores usable with MrsP
- 24.8.6. Specify Maximum Classic API Message Queues
- 24.8.7. Specify Maximum Classic API Barriers
- 24.8.8. Specify Maximum Classic API Periods
- 24.8.9. Specify Maximum Classic API Partitions
- 24.8.10. Specify Maximum Classic API Regions
- 24.8.11. Specify Maximum Classic API Ports
- 24.8.12. Specify Maximum Classic API User Extensions
- 24.9. Classic API Initialization Tasks Table Configuration
- 24.9.1. Instantiate Classic API Initialization Task Table
- 24.9.2. Specifying Classic API Initialization Task Entry Point
- 24.9.3. Specifying Classic API Initialization Task Name
- 24.9.4. Specifying Classic API Initialization Task Stack Size
- 24.9.5. Specifying Classic API Initialization Task Priority
- 24.9.6. Specifying Classic API Initialization Task Attributes
- 24.9.7. Specifying Classic API Initialization Task Modes
- 24.9.8. Specifying Classic API Initialization Task Arguments
- 24.9.9. Not Using Generated Initialization Tasks Table
- 24.10. POSIX API Configuration
- 24.10.1. Specify Maximum POSIX API Threads
- 24.10.2. Specify Maximum POSIX API Mutexes
- 24.10.3. Specify Maximum POSIX API Condition Variables
- 24.10.4. Specify Maximum POSIX API Keys
- 24.10.5. Specify Maximum POSIX API Timers
- 24.10.6. Specify Maximum POSIX API Queued Signals
- 24.10.7. Specify Maximum POSIX API Message Queues
- 24.10.8. Specify Maximum POSIX API Message Queue Descriptors
- 24.10.9. Specify Maximum POSIX API Semaphores
- 24.10.10. Specify Maximum POSIX API Barriers
- 24.10.11. Specify Maximum POSIX API Spinlocks
- 24.10.12. Specify Maximum POSIX API Read/Write Locks
- 24.11. POSIX Initialization Threads Table Configuration
- 24.12. Basic System Information
- 24.12.1. Separate or Unified Work Areas
- 24.12.2. Length of Each Clock Tick
- 24.12.3. Specifying Timeslicing Quantum
- 24.12.4. Specifying the Number of Thread Priority Levels
- 24.12.5. Specifying the Minimum Task Size
- 24.12.6. Configuring the Size of the Interrupt Stack
- 24.12.7. Reserve Task/Thread Stack Memory Above Minimum
- 24.12.8. Automatically Zeroing the RTEMS Workspace and C Program Heap
- 24.12.9. Enable The Task Stack Usage Checker
- 24.12.10. Specify Application Specific User Extensions
- 24.13. Configuring Custom Task Stack Allocation
- 24.14. Configuring Memory for Classic API Message Buffers
- 24.15. Seldom Used Configuration Parameters
- 24.16. C Library Support Configuration
- 24.17. File System Configuration Parameters
- 24.17.1. Providing Application Specific Mount Table
- 24.17.2. Configure devFS as Root File System
- 24.17.3. Specifying Maximum Devices for devFS
- 24.17.4. Disable File System Support
- 24.17.5. Use a Root IMFS with a Minimalistic Feature Set
- 24.17.6. Specify Block Size for IMFS
- 24.17.7. Disable Change Owner Support of Root IMFS
- 24.17.8. Disable Change Mode Support of Root IMFS
- 24.17.9. Disable Change Times Support of Root IMFS
- 24.17.10. Disable Create Hard Link Support of Root IMFS
- 24.17.11. Disable Create Symbolic Link Support of Root IMFS
- 24.17.12. Disable Read Symbolic Link Support of Root IMFS
- 24.17.13. Disable Rename Support of Root IMFS
- 24.17.14. Disable Directory Read Support of Root IMFS
- 24.17.15. Disable Mount Support of Root IMFS
- 24.17.16. Disable Unmount Support of Root IMFS
- 24.17.17. Disable Make Nodes Support of Root IMFS
- 24.17.18. Disable Make Files Support of Root IMFS
- 24.17.19. Disable Remove Nodes Support of Root IMFS
- 24.18. Block Device Cache Configuration
- 24.18.1. Enable Block Device Cache
- 24.18.2. Size of the Cache Memory
- 24.18.3. Minimum Size of a Buffer
- 24.18.4. Maximum Size of a Buffer
- 24.18.5. Swapout Task Swap Period
- 24.18.6. Swapout Task Maximum Block Hold Time
- 24.18.7. Swapout Task Priority
- 24.18.8. Maximum Blocks per Read-Ahead Request
- 24.18.9. Maximum Blocks per Write Request
- 24.18.10. Task Stack Size of the Block Device Cache Tasks
- 24.18.11. Read-Ahead Task Priority
- 24.18.12. Swapout Worker Task Count
- 24.18.13. Swapout Worker Task Priority
- 24.19. BSP Specific Settings
- 24.19.1. Disable BSP Configuration Settings
- 24.19.2. Specify BSP Supports sbrk()
- 24.19.3. Specify BSP Specific Idle Task
- 24.19.4. Specify BSP Suggested Value for IDLE Task Stack Size
- 24.19.5. Specify BSP Specific User Extensions
- 24.19.6. Specifying BSP Specific Interrupt Stack Size
- 24.19.7. Specifying BSP Specific Maximum Devices
- 24.19.8. BSP Recommends RTEMS Workspace be Cleared
- 24.19.9. Specify BSP Prerequisite Drivers
- 24.20. Idle Task Configuration
- 24.21. Scheduler Algorithm Configuration
- 24.21.1. Use Deterministic Priority Scheduler
- 24.21.2. Use Simple Priority Scheduler
- 24.21.3. Use Earliest Deadline First Scheduler
- 24.21.4. Use Constant Bandwidth Server Scheduler
- 24.21.5. Use Deterministic Priority SMP Scheduler
- 24.21.6. Use Simple SMP Priority Scheduler
- 24.21.7. Configuring a Scheduler Name
- 24.21.8. Configuring a User Provided Scheduler
- 24.21.9. Configuring Clustered Schedulers
- 24.22. SMP Specific Configuration Parameters
- 24.23. Device Driver Table
- 24.23.1. Specifying the Maximum Number of Device Drivers
- 24.23.2. Enable Console Device Driver
- 24.23.3. Enable Clock Driver
- 24.23.4. Enable the Benchmark Timer Driver
- 24.23.5. Specify Clock and Benchmark Timer Drivers Are Not Needed
- 24.23.6. Enable Real-Time Clock Driver
- 24.23.7. Enable the Watchdog Device Driver
- 24.23.8. Enable the Graphics Frame Buffer Device Driver
- 24.23.9. Enable Stub Device Driver
- 24.23.10. Specify Application Prerequisite Device Drivers
- 24.23.11. Specify Extra Application Device Drivers
- 24.23.12. Enable /dev/null Device Driver
- 24.23.13. Enable /dev/zero Device Driver
- 24.23.14. Specifying Application Defined Device Driver Table
- 24.24. Multiprocessing Configuration
- 24.24.1. Specify Application Will Use Multiprocessing
- 24.24.2. Configure Node Number in Multiprocessor Configuration
- 24.24.3. Configure Maximum Node in Multiprocessor Configuration
- 24.24.4. Configure Maximum Global Objects in Multiprocessor Configuration
- 24.24.5. Configure Maximum Proxies in Multiprocessor Configuration
- 24.24.6. Configure MPCI in Multiprocessor Configuration
- 24.24.7. Do Not Generate Multiprocessor Configuration Table
- 24.25. Ada Tasks
- 24.26. PCI Library
- 24.27. Go Tasks
- 24.28. Configuration Data Structures
- 25. Multiprocessing Manager
- 26. Symmetric Multiprocessing Services
- 26.1. Introduction
- 26.2. Background
- 26.2.1. Uniprocessor versus SMP Parallelism
- 26.2.2. Task Affinity
- 26.2.3. Task Migration
- 26.2.4. Clustered Scheduling
- 26.2.5. Task Priority Queues
- 26.2.6. Scheduler Helping Protocol
- 26.2.7. Critical Section Techniques and SMP
- 26.2.8. Task Unique Data and SMP
- 26.2.9. OpenMP
- 26.2.10. Thread Dispatch Details
- 26.3. Operations
- 26.4. Directives
- 26.4.1. GET_PROCESSOR_COUNT - Get processor count
- 26.4.2. GET_CURRENT_PROCESSOR - Get current processor index
- 26.4.3. SCHEDULER_IDENT - Get ID of a scheduler
- 26.4.4. SCHEDULER_GET_PROCESSOR_SET - Get processor set of a scheduler
- 26.4.5. SCHEDULER_ADD_PROCESSOR - Add processor to a scheduler
- 26.4.6. SCHEDULER_REMOVE_PROCESSOR - Remove processor from a scheduler
- 26.4.7. TASK_GET_SCHEDULER - Get scheduler of a task
- 26.4.8. TASK_SET_SCHEDULER - Set scheduler of a task
- 26.4.9. TASK_GET_AFFINITY - Get task processor affinity
- 26.4.10. TASK_SET_AFFINITY - Set task processor affinity
- 27. PCI Library
- 28. Stack Bounds Checker
- 29. CPU Usage Statistics
- 30. Object Services
- 30.1. Introduction
- 30.2. Background
- 30.3. Operations
- 30.4. Directives
- 30.4.1. BUILD_NAME - Build object name from characters
- 30.4.2. OBJECT_GET_CLASSIC_NAME - Lookup name from id
- 30.4.3. OBJECT_GET_NAME - Obtain object name as string
- 30.4.4. OBJECT_SET_NAME - Set object name
- 30.4.5. OBJECT_ID_GET_API - Obtain API from Id
- 30.4.6. OBJECT_ID_GET_CLASS - Obtain Class from Id
- 30.4.7. OBJECT_ID_GET_NODE - Obtain Node from Id
- 30.4.8. OBJECT_ID_GET_INDEX - Obtain Index from Id
- 30.4.9. BUILD_ID - Build Object Id From Components
- 30.4.10. OBJECT_ID_API_MINIMUM - Obtain Minimum API Value
- 30.4.11. OBJECT_ID_API_MAXIMUM - Obtain Maximum API Value
- 30.4.12. OBJECT_API_MINIMUM_CLASS - Obtain Minimum Class Value
- 30.4.13. OBJECT_API_MAXIMUM_CLASS - Obtain Maximum Class Value
- 30.4.14. OBJECT_ID_API_MINIMUM_CLASS - Obtain Minimum Class Value for an API
- 30.4.15. OBJECT_ID_API_MAXIMUM_CLASS - Obtain Maximum Class Value for an API
- 30.4.16. OBJECT_GET_API_NAME - Obtain API Name
- 30.4.17. OBJECT_GET_API_CLASS_NAME - Obtain Class Name
- 30.4.18. OBJECT_GET_CLASS_INFORMATION - Obtain Class Information
- 31. Chains
- 31.1. Introduction
- 31.2. Background
- 31.3. Operations
- 31.4. Directives
- 31.4.1. Initialize Chain With Nodes
- 31.4.2. Initialize Empty
- 31.4.3. Is Null Node ?
- 31.4.4. Head
- 31.4.5. Tail
- 31.4.6. Are Two Nodes Equal ?
- 31.4.7. Is the Chain Empty
- 31.4.8. Is this the First Node on the Chain ?
- 31.4.9. Is this the Last Node on the Chain ?
- 31.4.10. Does this Chain have only One Node ?
- 31.4.11. Returns the node count of the chain (unprotected)
- 31.4.12. Is this Node the Chain Head ?
- 31.4.13. Is this Node the Chain Tail ?
- 31.4.14. Extract a Node
- 31.4.15. Extract a Node (unprotected)
- 31.4.16. Get the First Node
- 31.4.17. Get the First Node (unprotected)
- 31.4.18. Insert a Node
- 31.4.19. Insert a Node (unprotected)
- 31.4.20. Append a Node
- 31.4.21. Append a Node (unprotected)
- 31.4.22. Prepend a Node
- 31.4.23. Prepend a Node (unprotected)
- 32. Red-Black Trees
- 33. Timespec Helpers
- 33.1. Introduction
- 33.2. Background
- 33.3. Operations
- 33.4. Directives
- 33.4.1. TIMESPEC_SET - Set struct timespec Instance
- 33.4.2. TIMESPEC_ZERO - Zero struct timespec Instance
- 33.4.3. TIMESPEC_IS_VALID - Check validity of a struct timespec instance
- 33.4.4. TIMESPEC_ADD_TO - Add Two struct timespec Instances
- 33.4.5. TIMESPEC_SUBTRACT - Subtract Two struct timespec Instances
- 33.4.6. TIMESPEC_DIVIDE - Divide Two struct timespec Instances
- 33.4.7. TIMESPEC_DIVIDE_BY_INTEGER - Divide a struct timespec Instance by an Integer
- 33.4.8. TIMESPEC_LESS_THAN - Less than operator
- 33.4.9. TIMESPEC_GREATER_THAN - Greater than operator
- 33.4.10. TIMESPEC_EQUAL_TO - Check equality of timespecs
- 33.4.11. TIMESPEC_GET_SECONDS - Get Seconds Portion of struct timespec Instance
- 33.4.12. TIMESPEC_GET_NANOSECONDS - Get Nanoseconds Portion of the struct timespec Instance
- 33.4.13. TIMESPEC_TO_TICKS - Convert struct timespec Instance to Ticks
- 33.4.14. TIMESPEC_FROM_TICKS - Convert Ticks to struct timespec Representation
- 34. Constant Bandwidth Server Scheduler API
- 34.1. Introduction
- 34.2. Background
- 34.3. Operations
- 34.4. Directives
- 34.4.1. CBS_INITIALIZE - Initialize the CBS library
- 34.4.2. CBS_CLEANUP - Cleanup the CBS library
- 34.4.3. CBS_CREATE_SERVER - Create a new bandwidth server
- 34.4.4. CBS_ATTACH_THREAD - Attach a thread to server
- 34.4.5. CBS_DETACH_THREAD - Detach a thread from server
- 34.4.6. CBS_DESTROY_SERVER - Destroy a bandwidth server
- 34.4.7. CBS_GET_SERVER_ID - Get an ID of a server
- 34.4.8. CBS_GET_PARAMETERS - Get scheduling parameters of a server
- 34.4.9. CBS_SET_PARAMETERS - Set scheduling parameters
- 34.4.10. CBS_GET_EXECUTION_TIME - Get elapsed execution time
- 34.4.11. CBS_GET_REMAINING_BUDGET - Get remaining execution time
- 34.4.12. CBS_GET_APPROVED_BUDGET - Get scheduler approved execution time
- 35. Directive Status Codes
- 36. Linker Sets
- 36.1. Introduction
- 36.2. Background
- 36.3. Directives
- 36.3.1. RTEMS_LINKER_SET_BEGIN - Designator of the linker set begin marker
- 36.3.2. RTEMS_LINKER_SET_END - Designator of the linker set end marker
- 36.3.3. RTEMS_LINKER_SET_SIZE - The linker set size in characters
- 36.3.4. RTEMS_LINKER_ROSET_DECLARE - Declares a read-only linker set
- 36.3.5. RTEMS_LINKER_ROSET - Defines a read-only linker set
- 36.3.6. RTEMS_LINKER_ROSET_ITEM_DECLARE - Declares a read-only linker set item
- 36.3.7. RTEMS_LINKER_ROSET_ITEM_REFERENCE - References a read-only linker set item
- 36.3.8. RTEMS_LINKER_ROSET_ITEM - Defines a read-only linker set item
- 36.3.9. RTEMS_LINKER_ROSET_ITEM_ORDERED - Defines an ordered read-only linker set item
- 36.3.10. RTEMS_LINKER_RWSET_DECLARE - Declares a read-write linker set
- 36.3.11. RTEMS_LINKER_RWSET - Defines a read-write linker set
- 36.3.12. RTEMS_LINKER_RWSET_ITEM_DECLARE - Declares a read-write linker set item
- 36.3.13. RTEMS_LINKER_RWSET_ITEM_REFERENCE - References a read-write linker set item
- 36.3.14. RTEMS_LINKER_RWSET_ITEM - Defines a read-write linker set item
- 36.3.15. RTEMS_LINKER_RWSET_ITEM_ORDERED - Defines an ordered read-write linker set item
- 37. Example Application
- 38. Glossary