RTEMS Classic API Guide (5.3).¶
Copyrights and License
This document is available under the Creative Commons Attribution-ShareAlike 4.0 International Public License.
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 https://www.rtems.org. Any inquiries concerning RTEMS, its related support components, or its documentation should be directed to the RTEMS Project community.
RTEMS Online Resources
Home |
|
Documentation |
|
Mailing Lists |
|
Bug Reporting |
|
Git Repositories |
|
Developers |
- 1. Preface
- 2. Overview
- 3. Key Concepts
- 4. RTEMS Data Types
- 5. Scheduling Concepts
- 5.1. Introduction
- 5.2. Uniprocessor Schedulers
- 5.3. SMP Schedulers
- 5.4. Scheduling Modification Mechanisms
- 5.5. Dispatching Tasks
- 5.6. Task State Transitions
- 5.7. Directives
- 5.7.1. SCHEDULER_IDENT - Get ID of a scheduler
- 5.7.2. SCHEDULER_IDENT_BY_PROCESSOR - Get ID of a scheduler by processor
- 5.7.3. SCHEDULER_IDENT_BY_PROCESSOR_SET - Get ID of a scheduler by processor set
- 5.7.4. SCHEDULER_GET_MAXIMUM_PRIORITY - Get maximum task priority of a scheduler
- 5.7.5. SCHEDULER_MAP_PRIORITY_TO_POSIX - Map task priority to POSIX thread prority
- 5.7.6. SCHEDULER_MAP_PRIORITY_FROM_POSIX - Map POSIX thread prority to task priority
- 5.7.7. SCHEDULER_GET_PROCESSOR - Get current processor index
- 5.7.8. SCHEDULER_GET_PROCESSOR_MAXIMUM - Get processor maximum
- 5.7.9. SCHEDULER_GET_PROCESSOR_SET - Get processor set of a scheduler
- 5.7.10. SCHEDULER_ADD_PROCESSOR - Add processor to a scheduler
- 5.7.11. SCHEDULER_REMOVE_PROCESSOR - Remove processor from a scheduler
- 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. Task Deletion
- 7.3.9. Setting Affinity to a Single Processor
- 7.3.10. Transition Advice for Removed Notepads
- 7.3.11. Transition Advice for Removed Task Variables
- 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_EXIT - Delete the calling task
- 7.4.8. TASK_SUSPEND - Suspend a task
- 7.4.9. TASK_RESUME - Resume a task
- 7.4.10. TASK_IS_SUSPENDED - Determine if a task is Suspended
- 7.4.11. TASK_SET_PRIORITY - Set task priority
- 7.4.12. TASK_GET_PRIORITY - Get task priority
- 7.4.13. TASK_MODE - Change the current task mode
- 7.4.14. TASK_WAKE_AFTER - Wake up after interval
- 7.4.15. TASK_WAKE_WHEN - Wake up when specified
- 7.4.16. TASK_GET_SCHEDULER - Get scheduler of a task
- 7.4.17. TASK_SET_SCHEDULER - Set scheduler of a task
- 7.4.18. TASK_GET_AFFINITY - Get task processor affinity
- 7.4.19. TASK_SET_AFFINITY - Set task processor affinity
- 7.4.20. TASK_ITERATE - Iterate Over Tasks
- 7.5. Deprecated Directives
- 7.6. Removed Directives
- 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 - Restore Interrupt Level
- 8.4.4. INTERRUPT_FLASH - Flash Interrupts
- 8.4.5. INTERRUPT_LOCAL_DISABLE - Disable Interrupts on Current Processor
- 8.4.6. INTERRUPT_LOCAL_ENABLE - Restore Interrupt Level 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_TOD - Get date and time in TOD format
- 9.4.3. CLOCK_GET_TOD_TIMEVAL - Get date and time in timeval format
- 9.4.4. CLOCK_GET_SECONDS_SINCE_EPOCH - Get seconds since epoch
- 9.4.5. CLOCK_GET_TICKS_PER_SECOND - Get ticks per second
- 9.4.6. CLOCK_GET_TICKS_SINCE_BOOT - Get current ticks counter value
- 9.4.7. CLOCK_TICK_LATER - Get tick value in the future
- 9.4.8. CLOCK_TICK_LATER_USEC - Get tick value in the future in microseconds
- 9.4.9. CLOCK_TICK_BEFORE - Is tick value is before a point in time
- 9.4.10. CLOCK_GET_UPTIME - Get the time since boot
- 9.4.11. CLOCK_GET_UPTIME_TIMEVAL - Get the time since boot in timeval format
- 9.4.12. CLOCK_GET_UPTIME_SECONDS - Get the seconds since boot
- 9.4.13. CLOCK_GET_UPTIME_NANOSECONDS - Get the nanoseconds since boot
- 9.5. Removed Directives
- 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
- 18.4.9. REGION_GET_INFORMATION - Get region information
- 18.4.10. REGION_GET_FREE_INFORMATION - Get region free information
- 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 - Invoke the fatal error handler
- 21.4.2. PANIC - Print a message and invoke the fatal error handler
- 21.4.3. SHUTDOWN_EXECUTIVE - Shutdown RTEMS
- 21.4.4. EXCEPTION_FRAME_PRINT - Prints the exception frame
- 21.4.5. FATAL_SOURCE_TEXT - Returns a text for a fatal source
- 21.4.6. INTERNAL_ERROR_TEXT - Returns a text for an internal error code
- 21.4.7. FATAL_ERROR_OCCURRED - Invoke the fatal error handler (deprecated)
- 22. Board Support Packages
- 23. User Extensions Manager
- 23.1. Introduction
- 23.2. Background
- 23.2.1. Extension Sets
- 23.2.2. TCB Extension Area
- 23.2.3. Order of Invocation
- 23.2.4. Thread Create Extension
- 23.2.5. Thread Start Extension
- 23.2.6. Thread Restart Extension
- 23.2.7. Thread Switch Extension
- 23.2.8. Thread Begin Extension
- 23.2.9. Thread Exitted Extension
- 23.2.10. Thread Termination Extension
- 23.2.11. Thread Delete Extension
- 23.2.12. Fatal Error Extension
- 23.3. Directives
- 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. Configuration Example
- 24.6. Unlimited Objects
- 24.7. General System Configuration
- 24.7.1. CONFIGURE_DIRTY_MEMORY
- 24.7.2. CONFIGURE_DISABLE_NEWLIB_REENTRANCY
- 24.7.3. CONFIGURE_EXECUTIVE_RAM_SIZE
- 24.7.4. CONFIGURE_EXTRA_TASK_STACKS
- 24.7.5. CONFIGURE_INITIAL_EXTENSIONS
- 24.7.6. CONFIGURE_INTERRUPT_STACK_SIZE
- 24.7.7. CONFIGURE_MALLOC_DIRTY
- 24.7.8. CONFIGURE_MAXIMUM_FILE_DESCRIPTORS
- 24.7.9. CONFIGURE_MAXIMUM_PROCESSORS
- 24.7.10. CONFIGURE_MAXIMUM_THREAD_NAME_SIZE
- 24.7.11. CONFIGURE_MEMORY_OVERHEAD
- 24.7.12. CONFIGURE_MESSAGE_BUFFER_MEMORY
- 24.7.13. CONFIGURE_MICROSECONDS_PER_TICK
- 24.7.14. CONFIGURE_MINIMUM_TASK_STACK_SIZE
- 24.7.15. CONFIGURE_STACK_CHECKER_ENABLED
- 24.7.16. CONFIGURE_TICKS_PER_TIMESLICE
- 24.7.17. CONFIGURE_UNIFIED_WORK_AREAS
- 24.7.18. CONFIGURE_UNLIMITED_ALLOCATION_SIZE
- 24.7.19. CONFIGURE_UNLIMITED_OBJECTS
- 24.7.20. CONFIGURE_VERBOSE_SYSTEM_INITIALIZATION
- 24.7.21. CONFIGURE_ZERO_WORKSPACE_AUTOMATICALLY
- 24.8. Device Driver Configuration
- 24.8.1. CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER
- 24.8.2. CONFIGURE_APPLICATION_EXTRA_DRIVERS
- 24.8.3. CONFIGURE_APPLICATION_NEEDS_ATA_DRIVER
- 24.8.4. CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
- 24.8.5. CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
- 24.8.6. CONFIGURE_APPLICATION_NEEDS_FRAME_BUFFER_DRIVER
- 24.8.7. CONFIGURE_APPLICATION_NEEDS_IDE_DRIVER
- 24.8.8. CONFIGURE_APPLICATION_NEEDS_NULL_DRIVER
- 24.8.9. CONFIGURE_APPLICATION_NEEDS_RTC_DRIVER
- 24.8.10. CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER
- 24.8.11. CONFIGURE_APPLICATION_NEEDS_SIMPLE_TASK_CONSOLE_DRIVER
- 24.8.12. CONFIGURE_APPLICATION_NEEDS_STUB_DRIVER
- 24.8.13. CONFIGURE_APPLICATION_NEEDS_TIMER_DRIVER
- 24.8.14. CONFIGURE_APPLICATION_NEEDS_WATCHDOG_DRIVER
- 24.8.15. CONFIGURE_APPLICATION_NEEDS_ZERO_DRIVER
- 24.8.16. CONFIGURE_APPLICATION_PREREQUISITE_DRIVERS
- 24.8.17. CONFIGURE_ATA_DRIVER_TASK_PRIORITY
- 24.8.18. CONFIGURE_MAXIMUM_DRIVERS
- 24.9. Classic API Configuration
- 24.9.1. CONFIGURE_MAXIMUM_BARRIERS
- 24.9.2. CONFIGURE_MAXIMUM_MESSAGE_QUEUES
- 24.9.3. CONFIGURE_MAXIMUM_PARTITIONS
- 24.9.4. CONFIGURE_MAXIMUM_PERIODS
- 24.9.5. CONFIGURE_MAXIMUM_PORTS
- 24.9.6. CONFIGURE_MAXIMUM_REGIONS
- 24.9.7. CONFIGURE_MAXIMUM_SEMAPHORES
- 24.9.8. CONFIGURE_MAXIMUM_TASKS
- 24.9.9. CONFIGURE_MAXIMUM_TIMERS
- 24.9.10. CONFIGURE_MAXIMUM_USER_EXTENSIONS
- 24.10. Classic API Initialization Task Configuration
- 24.10.1. CONFIGURE_INIT_TASK_ARGUMENTS
- 24.10.2. CONFIGURE_INIT_TASK_ATTRIBUTES
- 24.10.3. CONFIGURE_INIT_TASK_ENTRY_POINT
- 24.10.4. CONFIGURE_INIT_TASK_INITIAL_MODES
- 24.10.5. CONFIGURE_INIT_TASK_NAME
- 24.10.6. CONFIGURE_INIT_TASK_PRIORITY
- 24.10.7. CONFIGURE_INIT_TASK_STACK_SIZE
- 24.10.8. CONFIGURE_RTEMS_INIT_TASKS_TABLE
- 24.11. POSIX API Configuration
- 24.11.1. CONFIGURE_MAXIMUM_POSIX_KEYS
- 24.11.2. CONFIGURE_MAXIMUM_POSIX_KEY_VALUE_PAIRS
- 24.11.3. CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUES
- 24.11.4. CONFIGURE_MAXIMUM_POSIX_QUEUED_SIGNALS
- 24.11.5. CONFIGURE_MAXIMUM_POSIX_SEMAPHORES
- 24.11.6. CONFIGURE_MAXIMUM_POSIX_SHMS
- 24.11.7. CONFIGURE_MAXIMUM_POSIX_THREADS
- 24.11.8. CONFIGURE_MAXIMUM_POSIX_TIMERS
- 24.11.9. CONFIGURE_MINIMUM_POSIX_THREAD_STACK_SIZE
- 24.12. POSIX Initialization Thread Configuration
- 24.13. Event Recording Configuration
- 24.14. Filesystem Configuration
- 24.14.1. CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
- 24.14.2. CONFIGURE_FILESYSTEM_ALL
- 24.14.3. CONFIGURE_FILESYSTEM_DOSFS
- 24.14.4. CONFIGURE_FILESYSTEM_FTPFS
- 24.14.5. CONFIGURE_FILESYSTEM_IMFS
- 24.14.6. CONFIGURE_FILESYSTEM_JFFS2
- 24.14.7. CONFIGURE_FILESYSTEM_NFS
- 24.14.8. CONFIGURE_FILESYSTEM_RFS
- 24.14.9. CONFIGURE_FILESYSTEM_TFTPFS
- 24.14.10. CONFIGURE_IMFS_DISABLE_CHMOD
- 24.14.11. CONFIGURE_IMFS_DISABLE_CHOWN
- 24.14.12. CONFIGURE_IMFS_DISABLE_LINK
- 24.14.13. CONFIGURE_IMFS_DISABLE_MKNOD
- 24.14.14. CONFIGURE_IMFS_DISABLE_MKNOD_DEVICE
- 24.14.15. CONFIGURE_IMFS_DISABLE_MKNOD_FILE
- 24.14.16. CONFIGURE_IMFS_DISABLE_MOUNT
- 24.14.17. CONFIGURE_IMFS_DISABLE_READDIR
- 24.14.18. CONFIGURE_IMFS_DISABLE_READLINK
- 24.14.19. CONFIGURE_IMFS_DISABLE_RENAME
- 24.14.20. CONFIGURE_IMFS_DISABLE_RMNOD
- 24.14.21. CONFIGURE_IMFS_DISABLE_SYMLINK
- 24.14.22. CONFIGURE_IMFS_DISABLE_UNMOUNT
- 24.14.23. CONFIGURE_IMFS_DISABLE_UTIME
- 24.14.24. CONFIGURE_IMFS_ENABLE_MKFIFO
- 24.14.25. CONFIGURE_IMFS_MEMFILE_BYTES_PER_BLOCK
- 24.14.26. CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM
- 24.14.27. CONFIGURE_USE_MINIIMFS_AS_BASE_FILESYSTEM
- 24.15. Block Device Cache Configuration
- 24.15.1. CONFIGURE_APPLICATION_NEEDS_LIBBLOCK
- 24.15.2. CONFIGURE_BDBUF_BUFFER_MAX_SIZE
- 24.15.3. CONFIGURE_BDBUF_BUFFER_MIN_SIZE
- 24.15.4. CONFIGURE_BDBUF_CACHE_MEMORY_SIZE
- 24.15.5. CONFIGURE_BDBUF_MAX_READ_AHEAD_BLOCKS
- 24.15.6. CONFIGURE_BDBUF_MAX_WRITE_BLOCKS
- 24.15.7. CONFIGURE_BDBUF_READ_AHEAD_TASK_PRIORITY
- 24.15.8. CONFIGURE_BDBUF_TASK_STACK_SIZE
- 24.15.9. CONFIGURE_SWAPOUT_BLOCK_HOLD
- 24.15.10. CONFIGURE_SWAPOUT_SWAP_PERIOD
- 24.15.11. CONFIGURE_SWAPOUT_TASK_PRIORITY
- 24.15.12. CONFIGURE_SWAPOUT_WORKER_TASK_PRIORITY
- 24.15.13. CONFIGURE_SWAPOUT_WORKER_TASKS
- 24.16. Task Stack Allocator Configuration
- 24.17. Idle Task Configuration
- 24.18. General Scheduler Configuration
- 24.18.1. CONFIGURE_CBS_MAXIMUM_SERVERS
- 24.18.2. CONFIGURE_MAXIMUM_PRIORITY
- 24.18.3. CONFIGURE_SCHEDULER_ASSIGNMENTS
- 24.18.4. CONFIGURE_SCHEDULER_CBS
- 24.18.5. CONFIGURE_SCHEDULER_EDF
- 24.18.6. CONFIGURE_SCHEDULER_EDF_SMP
- 24.18.7. CONFIGURE_SCHEDULER_NAME
- 24.18.8. CONFIGURE_SCHEDULER_PRIORITY
- 24.18.9. CONFIGURE_SCHEDULER_PRIORITY_AFFINITY_SMP
- 24.18.10. CONFIGURE_SCHEDULER_PRIORITY_SMP
- 24.18.11. CONFIGURE_SCHEDULER_SIMPLE
- 24.18.12. CONFIGURE_SCHEDULER_SIMPLE_SMP
- 24.18.13. CONFIGURE_SCHEDULER_STRONG_APA
- 24.18.14. CONFIGURE_SCHEDULER_USER
- 24.19. Clustered Scheduler Configuration
- 24.20. BSP Related Configuration Options
- 24.21. Multiprocessing Configuration
- 24.22. PCI Library Configuration
- 24.23. Ada Configuration
- 24.24. Obsolete Configuration Options
- 24.24.1. CONFIGURE_BDBUF_BUFFER_COUNT
- 24.24.2. CONFIGURE_BDBUF_BUFFER_SIZE
- 24.24.3. CONFIGURE_DISABLE_CLASSIC_API_NOTEPADS
- 24.24.4. CONFIGURE_ENABLE_GO
- 24.24.5. CONFIGURE_GNAT_RTEMS
- 24.24.6. CONFIGURE_HAS_OWN_CONFIGURATION_TABLE
- 24.24.7. CONFIGURE_HAS_OWN_BDBUF_TABLE
- 24.24.8. CONFIGURE_HAS_OWN_DEVICE_DRIVER_TABLE
- 24.24.9. CONFIGURE_HAS_OWN_INIT_TASK_TABLE
- 24.24.10. CONFIGURE_HAS_OWN_MOUNT_TABLE
- 24.24.11. CONFIGURE_HAS_OWN_MULTIPROCESSING_TABLE
- 24.24.12. CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS
- 24.24.13. CONFIGURE_MAXIMUM_ADA_TASKS
- 24.24.14. CONFIGURE_MAXIMUM_DEVICES
- 24.24.15. CONFIGURE_MAXIMUM_FAKE_ADA_TASKS
- 24.24.16. CONFIGURE_MAXIMUM_GO_CHANNELS
- 24.24.17. CONFIGURE_MAXIMUM_GOROUTINES
- 24.24.18. CONFIGURE_MAXIMUM_MRSP_SEMAPHORES
- 24.24.19. CONFIGURE_NUMBER_OF_TERMIOS_PORTS
- 24.24.20. CONFIGURE_MAXIMUM_POSIX_BARRIERS
- 24.24.21. CONFIGURE_MAXIMUM_POSIX_CONDITION_VARIABLES
- 24.24.22. CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUE_DESCRIPTORS
- 24.24.23. CONFIGURE_MAXIMUM_POSIX_MUTEXES
- 24.24.24. CONFIGURE_MAXIMUM_POSIX_RWLOCKS
- 24.24.25. CONFIGURE_MAXIMUM_POSIX_SPINLOCKS
- 24.24.26. CONFIGURE_POSIX_HAS_OWN_INIT_THREAD_TABLE
- 24.24.27. CONFIGURE_SMP_APPLICATION
- 24.24.28. CONFIGURE_SMP_MAXIMUM_PROCESSORS
- 24.24.29. CONFIGURE_TERMIOS_DISABLED
- 25. Self-Contained Objects
- 25.1. Introduction
- 25.2. RTEMS Thread API
- 25.3. Mutual Exclusion
- 25.4. Condition Variables
- 25.4.1. Static condition variable initialization
- 25.4.2. Run-time condition variable initialization
- 25.4.3. Wait for condition signal
- 25.4.4. Signals a condition change
- 25.4.5. Broadcasts a condition change
- 25.4.6. Set condition variable name
- 25.4.7. Get condition variable name
- 25.4.8. Condition variable destruction
- 25.5. Counting Semaphores
- 25.6. Binary Semaphores
- 25.6.1. Static binary semaphore initialization
- 25.6.2. Run-time binary semaphore initialization
- 25.6.3. Wait for a binary semaphore
- 25.6.4. Wait for a binary semaphore with timeout in ticks
- 25.6.5. Tries to wait for a binary semaphore
- 25.6.6. Post a binary semaphore
- 25.6.7. Set binary semaphore name
- 25.6.8. Get binary semaphore name
- 25.6.9. Binary semaphore destruction
- 25.7. Threads
- 26. Multiprocessing Manager
- 27. Symmetric Multiprocessing (SMP)
- 27.1. Introduction
- 27.2. Background
- 27.3. Application Issues
- 27.3.1. Task variables
- 27.3.2. Highest Priority Thread Never Walks Alone
- 27.3.3. Disabling of Thread Preemption
- 27.3.4. Disabling of Interrupts
- 27.3.5. Interrupt Service Routines Execute in Parallel With Threads
- 27.3.6. Timers Do Not Stop Immediately
- 27.3.7. False Sharing of Cache Lines Due to Objects Table
- 27.4. Implementation Details
- 28. PCI Library
- 29. Stack Bounds Checker
- 30. CPU Usage Statistics
- 31. Object Services
- 31.1. Introduction
- 31.2. Background
- 31.3. Operations
- 31.4. Directives
- 31.4.1. BUILD_NAME - Build object name from characters
- 31.4.2. OBJECT_GET_CLASSIC_NAME - Lookup name from id
- 31.4.3. OBJECT_GET_NAME - Obtain object name as string
- 31.4.4. OBJECT_SET_NAME - Set object name
- 31.4.5. OBJECT_ID_GET_API - Obtain API from Id
- 31.4.6. OBJECT_ID_GET_CLASS - Obtain Class from Id
- 31.4.7. OBJECT_ID_GET_NODE - Obtain Node from Id
- 31.4.8. OBJECT_ID_GET_INDEX - Obtain Index from Id
- 31.4.9. BUILD_ID - Build Object Id From Components
- 31.4.10. OBJECT_ID_API_MINIMUM - Obtain Minimum API Value
- 31.4.11. OBJECT_ID_API_MAXIMUM - Obtain Maximum API Value
- 31.4.12. OBJECT_API_MINIMUM_CLASS - Obtain Minimum Class Value
- 31.4.13. OBJECT_API_MAXIMUM_CLASS - Obtain Maximum Class Value
- 31.4.14. OBJECT_ID_API_MINIMUM_CLASS - Obtain Minimum Class Value for an API
- 31.4.15. OBJECT_ID_API_MAXIMUM_CLASS - Obtain Maximum Class Value for an API
- 31.4.16. OBJECT_GET_API_NAME - Obtain API Name
- 31.4.17. OBJECT_GET_API_CLASS_NAME - Obtain Class Name
- 31.4.18. OBJECT_GET_CLASS_INFORMATION - Obtain Class Information
- 31.4.19. OBJECT_GET_LOCAL_NODE - Obtain Local Node
- 32. Chains
- 32.1. Introduction
- 32.2. Background
- 32.3. Operations
- 32.4. Directives
- 32.4.1. Initialize Chain With Nodes
- 32.4.2. Initialize Empty
- 32.4.3. Is Null Node ?
- 32.4.4. Head
- 32.4.5. Tail
- 32.4.6. Are Two Nodes Equal ?
- 32.4.7. Is the Chain Empty
- 32.4.8. Is this the First Node on the Chain ?
- 32.4.9. Is this the Last Node on the Chain ?
- 32.4.10. Does this Chain have only One Node ?
- 32.4.11. Returns the node count of the chain (unprotected)
- 32.4.12. Is this Node the Chain Head ?
- 32.4.13. Is this Node the Chain Tail ?
- 32.4.14. Extract a Node
- 32.4.15. Extract a Node (unprotected)
- 32.4.16. Get the First Node
- 32.4.17. Get the First Node (unprotected)
- 32.4.18. Insert a Node
- 32.4.19. Insert a Node (unprotected)
- 32.4.20. Append a Node
- 32.4.21. Append a Node (unprotected)
- 32.4.22. Prepend a Node
- 32.4.23. Prepend a Node (unprotected)
- 33. Red-Black Trees
- 34. Timespec Helpers
- 34.1. Introduction
- 34.2. Background
- 34.3. Operations
- 34.4. Directives
- 34.4.1. TIMESPEC_SET - Set struct timespec Instance
- 34.4.2. TIMESPEC_ZERO - Zero struct timespec Instance
- 34.4.3. TIMESPEC_IS_VALID - Check validity of a struct timespec instance
- 34.4.4. TIMESPEC_ADD_TO - Add Two struct timespec Instances
- 34.4.5. TIMESPEC_SUBTRACT - Subtract Two struct timespec Instances
- 34.4.6. TIMESPEC_DIVIDE - Divide Two struct timespec Instances
- 34.4.7. TIMESPEC_DIVIDE_BY_INTEGER - Divide a struct timespec Instance by an Integer
- 34.4.8. TIMESPEC_LESS_THAN - Less than operator
- 34.4.9. TIMESPEC_GREATER_THAN - Greater than operator
- 34.4.10. TIMESPEC_EQUAL_TO - Check equality of timespecs
- 34.4.11. TIMESPEC_GET_SECONDS - Get Seconds Portion of struct timespec Instance
- 34.4.12. TIMESPEC_GET_NANOSECONDS - Get Nanoseconds Portion of the struct timespec Instance
- 34.4.13. TIMESPEC_TO_TICKS - Convert struct timespec Instance to Ticks
- 34.4.14. TIMESPEC_FROM_TICKS - Convert Ticks to struct timespec Representation
- 35. Constant Bandwidth Server Scheduler API
- 35.1. Introduction
- 35.2. Background
- 35.3. Operations
- 35.4. Directives
- 35.4.1. CBS_INITIALIZE - Initialize the CBS library
- 35.4.2. CBS_CLEANUP - Cleanup the CBS library
- 35.4.3. CBS_CREATE_SERVER - Create a new bandwidth server
- 35.4.4. CBS_ATTACH_THREAD - Attach a thread to server
- 35.4.5. CBS_DETACH_THREAD - Detach a thread from server
- 35.4.6. CBS_DESTROY_SERVER - Destroy a bandwidth server
- 35.4.7. CBS_GET_SERVER_ID - Get an ID of a server
- 35.4.8. CBS_GET_PARAMETERS - Get scheduling parameters of a server
- 35.4.9. CBS_SET_PARAMETERS - Set scheduling parameters
- 35.4.10. CBS_GET_EXECUTION_TIME - Get elapsed execution time
- 35.4.11. CBS_GET_REMAINING_BUDGET - Get remaining execution time
- 35.4.12. CBS_GET_APPROVED_BUDGET - Get scheduler approved execution time
- 36. Ada Support
- 37. Linker Sets
- 37.1. Introduction
- 37.2. Background
- 37.3. Directives
- 37.3.1. RTEMS_LINKER_SET_BEGIN - Designator of the linker set begin marker
- 37.3.2. RTEMS_LINKER_SET_END - Designator of the linker set end marker
- 37.3.3. RTEMS_LINKER_SET_SIZE - The linker set size in characters
- 37.3.4. RTEMS_LINKER_SET_ITEM_COUNT - The linker set item count
- 37.3.5. RTEMS_LINKER_SET_IS_EMPTY - Is the linker set empty?
- 37.3.6. RTEMS_LINKER_SET_FOREACH - Iterate through the linker set items
- 37.3.7. RTEMS_LINKER_ROSET_DECLARE - Declares a read-only linker set
- 37.3.8. RTEMS_LINKER_ROSET - Defines a read-only linker set
- 37.3.9. RTEMS_LINKER_ROSET_ITEM_DECLARE - Declares a read-only linker set item
- 37.3.10. RTEMS_LINKER_ROSET_ITEM_ORDERED_DECLARE - Declares an ordered read-only linker set item
- 37.3.11. RTEMS_LINKER_ROSET_ITEM_REFERENCE - References a read-only linker set item
- 37.3.12. RTEMS_LINKER_ROSET_ITEM - Defines a read-only linker set item
- 37.3.13. RTEMS_LINKER_ROSET_ITEM_ORDERED - Defines an ordered read-only linker set item
- 37.3.14. RTEMS_LINKER_ROSET_CONTENT - Marks a declaration as a read-only linker set content
- 37.3.15. RTEMS_LINKER_RWSET_DECLARE - Declares a read-write linker set
- 37.3.16. RTEMS_LINKER_RWSET - Defines a read-write linker set
- 37.3.17. RTEMS_LINKER_RWSET_ITEM_DECLARE - Declares a read-write linker set item
- 37.3.18. RTEMS_LINKER_RWSET_ITEM_ORDERED_DECLARE - Declares an ordered read-write linker set item
- 37.3.19. RTEMS_LINKER_RWSET_ITEM_REFERENCE - References a read-write linker set item
- 37.3.20. RTEMS_LINKER_RWSET_ITEM - Defines a read-write linker set item
- 37.3.21. RTEMS_LINKER_RWSET_ITEM_ORDERED - Defines an ordered read-write linker set item
- 37.3.22. RTEMS_LINKER_RWSET_CONTENT - Marks a declaration as a read-write linker set content
- 38. Directive Status Codes
- 39. Example Application
- 40. Glossary
- 41. References