RTEMS Classic API Guide (5.0.0 (master)).¶
COPYRIGHT (c) 1988 - 2015.On-Line Applications Research Corporation (OAR).COPYRIGHT (c) 2016-2018.RTEMS Foundation, The RTEMS Documentation ProjectLicenses: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 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
- 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_PROCESSOR_SET - Get processor set of a scheduler
- 5.7.5. SCHEDULER_ADD_PROCESSOR - Add processor to a scheduler
- 5.7.6. 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 Obsolete Notepads
- 7.3.11. Transition Advice for Obsolete 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 and Removed Directives
- 7.5.1. ITERATE_OVER_ALL_THREADS - Iterate Over Tasks
- 7.5.2. TASK_GET_NOTE - Get task notepad entry
- 7.5.3. TASK_SET_NOTE - Set task notepad entry
- 7.5.4. TASK_VARIABLE_ADD - Associate per task variable
- 7.5.5. TASK_VARIABLE_GET - Obtain value of a per task variable
- 7.5.6. 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 - 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
- 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 - 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. 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. CONFIGURE_MAXIMUM_TASKS
- 24.8.2. CONFIGURE_MAXIMUM_TIMERS
- 24.8.3. CONFIGURE_MAXIMUM_SEMAPHORES
- 24.8.4. CONFIGURE_MAXIMUM_MRSP_SEMAPHORES
- 24.8.5. CONFIGURE_MAXIMUM_MESSAGE_QUEUES
- 24.8.6. CONFIGURE_MAXIMUM_BARRIERS
- 24.8.7. CONFIGURE_MAXIMUM_PERIODS
- 24.8.8. CONFIGURE_MAXIMUM_PARTITIONS
- 24.8.9. CONFIGURE_MAXIMUM_REGIONS
- 24.8.10. CONFIGURE_MAXIMUM_PORTS
- 24.8.11. CONFIGURE_MAXIMUM_USER_EXTENSIONS
- 24.9. Classic API Initialization Tasks Table Configuration
- 24.9.1. CONFIGURE_RTEMS_INIT_TASKS_TABLE
- 24.9.2. CONFIGURE_INIT_TASK_ENTRY_POINT
- 24.9.3. CONFIGURE_INIT_TASK_NAME
- 24.9.4. CONFIGURE_INIT_TASK_STACK_SIZE
- 24.9.5. CONFIGURE_INIT_TASK_PRIORITY
- 24.9.6. CONFIGURE_INIT_TASK_ATTRIBUTES
- 24.9.7. CONFIGURE_INIT_TASK_INITIAL_MODES
- 24.9.8. CONFIGURE_INIT_TASK_ARGUMENTS
- 24.9.9. CONFIGURE_HAS_OWN_INIT_TASK_TABLE
- 24.10. POSIX API Configuration
- 24.10.1. CONFIGURE_MAXIMUM_POSIX_KEYS
- 24.10.2. CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUES
- 24.10.3. CONFIGURE_MAXIMUM_POSIX_QUEUED_SIGNALS
- 24.10.4. CONFIGURE_MAXIMUM_POSIX_SEMAPHORES
- 24.10.5. CONFIGURE_MAXIMUM_POSIX_TIMERS
- 24.10.6. CONFIGURE_MAXIMUM_POSIX_THREADS
- 24.10.7. CONFIGURE_MINIMUM_POSIX_THREAD_STACK_SIZE
- 24.11. POSIX Initialization Threads Table Configuration
- 24.12. Basic System Information
- 24.12.1. CONFIGURE_UNIFIED_WORK_AREAS
- 24.12.2. CONFIGURE_MAXIMUM_PROCESSORS
- 24.12.3. CONFIGURE_MICROSECONDS_PER_TICK
- 24.12.4. CONFIGURE_TICKS_PER_TIMESLICE
- 24.12.5. CONFIGURE_MAXIMUM_PRIORITY
- 24.12.6. CONFIGURE_MAXIMUM_THREAD_NAME_SIZE
- 24.12.7. CONFIGURE_MINIMUM_TASK_STACK_SIZE
- 24.12.8. CONFIGURE_INTERRUPT_STACK_SIZE
- 24.12.9. CONFIGURE_EXTRA_TASK_STACKS
- 24.12.10. CONFIGURE_ZERO_WORKSPACE_AUTOMATICALLY
- 24.12.11. CONFIGURE_STACK_CHECKER_ENABLED
- 24.12.12. CONFIGURE_INITIAL_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. CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM
- 24.17.2. CONFIGURE_MAXIMUM_DEVICES
- 24.17.3. CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
- 24.17.4. CONFIGURE_USE_MINIIMFS_AS_BASE_FILESYSTEM
- 24.17.5. CONFIGURE_IMFS_MEMFILE_BYTES_PER_BLOCK
- 24.17.6. CONFIGURE_IMFS_DISABLE_CHOWN
- 24.17.7. CONFIGURE_IMFS_DISABLE_CHMOD
- 24.17.8. CONFIGURE_IMFS_DISABLE_UTIME
- 24.17.9. CONFIGURE_IMFS_DISABLE_LINK
- 24.17.10. CONFIGURE_IMFS_DISABLE_SYMLINK
- 24.17.11. CONFIGURE_IMFS_DISABLE_READLINK
- 24.17.12. CONFIGURE_IMFS_DISABLE_RENAME
- 24.17.13. CONFIGURE_IMFS_DISABLE_READDIR
- 24.17.14. CONFIGURE_IMFS_DISABLE_MOUNT
- 24.17.15. CONFIGURE_IMFS_DISABLE_UNMOUNT
- 24.17.16. CONFIGURE_IMFS_DISABLE_MKNOD
- 24.17.17. CONFIGURE_IMFS_DISABLE_MKNOD_FILE
- 24.17.18. CONFIGURE_IMFS_DISABLE_RMNOD
- 24.18. Block Device Cache Configuration
- 24.18.1. CONFIGURE_APPLICATION_NEEDS_LIBBLOCK
- 24.18.2. CONFIGURE_BDBUF_CACHE_MEMORY_SIZE
- 24.18.3. CONFIGURE_BDBUF_BUFFER_MIN_SIZE
- 24.18.4. CONFIGURE_BDBUF_BUFFER_MAX_SIZE
- 24.18.5. CONFIGURE_SWAPOUT_SWAP_PERIOD
- 24.18.6. CONFIGURE_SWAPOUT_BLOCK_HOLD
- 24.18.7. CONFIGURE_SWAPOUT_TASK_PRIORITY
- 24.18.8. CONFIGURE_BDBUF_MAX_READ_AHEAD_BLOCKS
- 24.18.9. CONFIGURE_BDBUF_MAX_WRITE_BLOCKS
- 24.18.10. CONFIGURE_BDBUF_TASK_STACK_SIZE
- 24.18.11. CONFIGURE_BDBUF_READ_AHEAD_TASK_PRIORITY
- 24.18.12. CONFIGURE_SWAPOUT_WORKER_TASKS
- 24.18.13. CONFIGURE_SWAPOUT_WORKER_TASK_PRIORITY
- 24.19. BSP Specific Settings
- 24.19.1. CONFIGURE_DISABLE_BSP_SETTINGS
- 24.19.2. CONFIGURE_MALLOC_BSP_SUPPORTS_SBRK
- 24.19.3. BSP_IDLE_TASK_BODY
- 24.19.4. BSP_IDLE_TASK_STACK_SIZE
- 24.19.5. BSP_INITIAL_EXTENSION
- 24.19.6. BSP_INTERRUPT_STACK_SIZE
- 24.19.7. BSP_MAXIMUM_DEVICES
- 24.19.8. BSP_ZERO_WORKSPACE_AUTOMATICALLY
- 24.19.9. CONFIGURE_BSP_PREREQUISITE_DRIVERS
- 24.20. Idle Task Configuration
- 24.21. General Scheduler Configuration
- 24.21.1. CONFIGURE_SCHEDULER_CBS
- 24.21.2. CONFIGURE_SCHEDULER_EDF
- 24.21.3. CONFIGURE_SCHEDULER_EDF_SMP
- 24.21.4. CONFIGURE_SCHEDULER_NAME
- 24.21.5. CONFIGURE_SCHEDULER_PRIORITY
- 24.21.6. CONFIGURE_SCHEDULER_PRIORITY_AFFINITY_SMP
- 24.21.7. CONFIGURE_SCHEDULER_PRIORITY_SMP
- 24.21.8. CONFIGURE_SCHEDULER_SIMPLE
- 24.21.9. CONFIGURE_SCHEDULER_SIMPLE_SMP
- 24.21.10. CONFIGURE_SCHEDULER_USER
- 24.22. Clustered Scheduler Configuration
- 24.23. Device Driver Table
- 24.23.1. CONFIGURE_MAXIMUM_DRIVERS
- 24.23.2. CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
- 24.23.3. CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER
- 24.23.4. CONFIGURE_APPLICATION_NEEDS_SIMPLE_TASK_CONSOLE_DRIVER
- 24.23.5. CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
- 24.23.6. CONFIGURE_APPLICATION_NEEDS_TIMER_DRIVER
- 24.23.7. CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER
- 24.23.8. CONFIGURE_APPLICATION_NEEDS_RTC_DRIVER
- 24.23.9. CONFIGURE_APPLICATION_NEEDS_WATCHDOG_DRIVER
- 24.23.10. CONFIGURE_APPLICATION_NEEDS_FRAME_BUFFER_DRIVER
- 24.23.11. CONFIGURE_APPLICATION_NEEDS_STUB_DRIVER
- 24.23.12. CONFIGURE_APPLICATION_PREREQUISITE_DRIVERS
- 24.23.13. CONFIGURE_APPLICATION_EXTRA_DRIVERS
- 24.23.14. CONFIGURE_APPLICATION_NEEDS_NULL_DRIVER
- 24.23.15. CONFIGURE_APPLICATION_NEEDS_ZERO_DRIVER
- 24.23.16. CONFIGURE_HAS_OWN_DEVICE_DRIVER_TABLE
- 24.24. Multiprocessing Configuration
- 24.25. Ada Tasks
- 24.26. PCI Library
- 24.27. Go Tasks
- 24.28. Obsolete Configuration Options
- 24.28.1. CONFIGURE_BDBUF_BUFFER_COUNT
- 24.28.2. CONFIGURE_BDBUF_BUFFER_SIZE
- 24.28.3. CONFIGURE_DISABLE_CLASSIC_API_NOTEPADS
- 24.28.4. CONFIGURE_HAS_OWN_CONFIGURATION_TABLE
- 24.28.5. CONFIGURE_HAS_OWN_BDBUF_TABLE
- 24.28.6. CONFIGURE_HAS_OWN_MOUNT_TABLE
- 24.28.7. CONFIGURE_NUMBER_OF_TERMIOS_PORTS
- 24.28.8. CONFIGURE_MAXIMUM_POSIX_BARRIERS
- 24.28.9. CONFIGURE_MAXIMUM_POSIX_CONDITION_VARIABLES
- 24.28.10. CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUE_DESCRIPTORS
- 24.28.11. CONFIGURE_MAXIMUM_POSIX_MUTEXES
- 24.28.12. CONFIGURE_MAXIMUM_POSIX_RWLOCKS
- 24.28.13. CONFIGURE_MAXIMUM_POSIX_SPINLOCKS
- 24.28.14. CONFIGURE_TERMIOS_DISABLED
- 24.28.15. CONFIGURE_SMP_APPLICATION
- 24.28.16. CONFIGURE_SMP_MAXIMUM_PROCESSORS
- 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. Directives
- 27.5. 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
- 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_REFERENCE - References a read-only linker set item
- 37.3.11. RTEMS_LINKER_ROSET_ITEM - Defines a read-only linker set item
- 37.3.12. RTEMS_LINKER_ROSET_ITEM_ORDERED - Defines an ordered read-only linker set item
- 37.3.13. RTEMS_LINKER_ROSET_CONTENT - Marks a declaration as a read-only linker set content
- 37.3.14. RTEMS_LINKER_RWSET_DECLARE - Declares a read-write linker set
- 37.3.15. RTEMS_LINKER_RWSET - Defines a read-write linker set
- 37.3.16. RTEMS_LINKER_RWSET_ITEM_DECLARE - Declares a read-write linker set item
- 37.3.17. RTEMS_LINKER_RWSET_ITEM_REFERENCE - References a read-write linker set item
- 37.3.18. RTEMS_LINKER_RWSET_ITEM - Defines a read-write linker set item
- 37.3.19. RTEMS_LINKER_RWSET_ITEM_ORDERED - Defines an ordered read-write linker set item
- 37.3.20. 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