RTEMS Documentation Project RTEMS Classic API Guide
5.0.0 (master)
  • 1. Preface
  • 2. Overview
    • 2.1. Introduction
    • 2.2. Real-time Application Systems
    • 2.3. Real-time Executive
    • 2.4. RTEMS Application Architecture
    • 2.5. RTEMS Internal Architecture
    • 2.6. User Customization and Extensibility
    • 2.7. Portability
    • 2.8. Memory Requirements
    • 2.9. Audience
    • 2.10. Conventions
    • 2.11. Manual Organization
  • 3. Key Concepts
    • 3.1. Introduction
    • 3.2. Objects
      • 3.2.1. Object Names
      • 3.2.2. Object IDs
        • 3.2.2.1. Object ID Format
      • 3.2.3. Object ID Description
    • 3.3. Communication and Synchronization
    • 3.4. Locking Protocols
      • 3.4.1. Priority Inversion
      • 3.4.2. Immediate Ceiling Priority Protocol (ICPP)
      • 3.4.3. Priority Inheritance Protocol
      • 3.4.4. Multiprocessor Resource Sharing Protocol (MrsP)
      • 3.4.5. O(m) Independence-Preserving Protocol (OMIP)
    • 3.5. Thread Queues
    • 3.6. Time
    • 3.7. Timer and Timeouts
    • 3.8. Memory Management
  • 4. RTEMS Data Types
    • 4.1. Introduction
    • 4.2. List of Data Types
  • 5. Scheduling Concepts
    • 5.1. Introduction
      • 5.1.1. Scheduling Algorithms
      • 5.1.2. Priority Scheduling
    • 5.2. Uniprocessor Schedulers
      • 5.2.1. Deterministic Priority Scheduler
      • 5.2.2. Simple Priority Scheduler
      • 5.2.3. Earliest Deadline First Scheduler
      • 5.2.4. Constant Bandwidth Server Scheduling (CBS)
    • 5.3. SMP Schedulers
      • 5.3.1. Earliest Deadline First SMP Scheduler
      • 5.3.2. Deterministic Priority SMP Scheduler
      • 5.3.3. Simple Priority SMP Scheduler
      • 5.3.4. Arbitrary Processor Affinity Priority SMP Scheduler
    • 5.4. Scheduling Modification Mechanisms
      • 5.4.1. Task Priority and Scheduling
      • 5.4.2. Preemption
      • 5.4.3. Timeslicing
      • 5.4.4. Manual Round-Robin
    • 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
    • 6.1. Introduction
    • 6.2. Background
      • 6.2.1. Initialization Tasks
      • 6.2.2. The Idle Task
      • 6.2.3. Initialization Manager Failure
    • 6.3. Operations
      • 6.3.1. Initializing RTEMS
      • 6.3.2. Global Construction
    • 6.4. Directives
      • 6.4.1. INITIALIZE_EXECUTIVE - Initialize RTEMS
  • 7. Task Manager
    • 7.1. Introduction
    • 7.2. Background
      • 7.2.1. Task Definition
      • 7.2.2. Task Control Block
      • 7.2.3. Task Name
      • 7.2.4. Task States
      • 7.2.5. Task Priority
      • 7.2.6. Task Mode
      • 7.2.7. Accessing Task Arguments
      • 7.2.8. Floating Point Considerations
      • 7.2.9. Building a Task Attribute Set
      • 7.2.10. Building a Mode and Mask
    • 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.2.1. Processing an Interrupt
      • 8.2.2. RTEMS Interrupt Levels
      • 8.2.3. Disabling of Interrupts by RTEMS
    • 8.3. Operations
      • 8.3.1. Establishing an ISR
      • 8.3.2. Directives Allowed from an ISR
    • 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.2.1. Required Support
      • 9.2.2. Time and Date Data Structures
      • 9.2.3. Clock Tick and Timeslicing
      • 9.2.4. Delays
      • 9.2.5. Timeouts
    • 9.3. Operations
      • 9.3.1. Announcing a Tick
      • 9.3.2. Setting the Time
      • 9.3.3. Obtaining the Time
      • 9.3.4. Transition Advice for the Obsolete rtems_clock_get
    • 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.2.1. Required Support
      • 10.2.2. Timers
      • 10.2.3. Timer Server
      • 10.2.4. Timer Service Routines
    • 10.3. Operations
      • 10.3.1. Creating a Timer
      • 10.3.2. Obtaining Timer IDs
      • 10.3.3. Initiating an Interval Timer
      • 10.3.4. Initiating a Time of Day Timer
      • 10.3.5. Canceling a Timer
      • 10.3.6. Resetting a Timer
      • 10.3.7. Initiating the Timer Server
      • 10.3.8. Deleting a Timer
    • 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.2.1. Rate Monotonic Manager Required Support
      • 11.2.2. Period Statistics
      • 11.2.3. Periodicity Definitions
      • 11.2.4. Rate Monotonic Scheduling Algorithm
      • 11.2.5. Schedulability Analysis
        • 11.2.5.1. Assumptions
        • 11.2.5.2. Processor Utilization Rule
        • 11.2.5.3. Processor Utilization Rule Example
        • 11.2.5.4. First Deadline Rule
        • 11.2.5.5. First Deadline Rule Example
        • 11.2.5.6. Relaxation of Assumptions
    • 11.3. Operations
      • 11.3.1. Creating a Rate Monotonic Period
      • 11.3.2. Manipulating a Period
      • 11.3.3. Obtaining the Status of a Period
      • 11.3.4. Canceling a Period
      • 11.3.5. Deleting a Rate Monotonic Period
      • 11.3.6. Examples
      • 11.3.7. Simple Periodic Task
      • 11.3.8. Task with Multiple Periods
    • 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.2.1. Nested Resource Access
      • 12.2.2. Priority Inheritance
      • 12.2.3. Priority Ceiling
      • 12.2.4. Multiprocessor Resource Sharing Protocol
      • 12.2.5. Building a Semaphore Attribute Set
      • 12.2.6. Building a SEMAPHORE_OBTAIN Option Set
    • 12.3. Operations
      • 12.3.1. Creating a Semaphore
      • 12.3.2. Obtaining Semaphore IDs
      • 12.3.3. Acquiring a Semaphore
      • 12.3.4. Releasing a Semaphore
      • 12.3.5. Deleting a Semaphore
    • 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
    • 13.1. Introduction
    • 13.2. Background
      • 13.2.1. Automatic Versus Manual Barriers
      • 13.2.2. Building a Barrier Attribute Set
    • 13.3. Operations
      • 13.3.1. Creating a Barrier
      • 13.3.2. Obtaining Barrier IDs
      • 13.3.3. Waiting at a Barrier
      • 13.3.4. Releasing a Barrier
      • 13.3.5. Deleting a Barrier
    • 13.4. Directives
      • 13.4.1. BARRIER_CREATE - Create a barrier
      • 13.4.2. BARRIER_IDENT - Get ID of a barrier
      • 13.4.3. BARRIER_DELETE - Delete a barrier
      • 13.4.4. BARRIER_WAIT - Wait at a barrier
      • 13.4.5. BARRIER_RELEASE - Release a barrier
  • 14. Message Manager
    • 14.1. Introduction
    • 14.2. Background
      • 14.2.1. Messages
      • 14.2.2. Message Queues
      • 14.2.3. Building a Message Queue Attribute Set
      • 14.2.4. Building a MESSAGE_QUEUE_RECEIVE Option Set
    • 14.3. Operations
      • 14.3.1. Creating a Message Queue
      • 14.3.2. Obtaining Message Queue IDs
      • 14.3.3. Receiving a Message
      • 14.3.4. Sending a Message
      • 14.3.5. Broadcasting a Message
      • 14.3.6. Deleting a Message Queue
    • 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
    • 15.1. Introduction
    • 15.2. Background
      • 15.2.1. Event Sets
      • 15.2.2. Building an Event Set or Condition
      • 15.2.3. Building an EVENT_RECEIVE Option Set
    • 15.3. Operations
      • 15.3.1. Sending an Event Set
      • 15.3.2. Receiving an Event Set
      • 15.3.3. Determining the Pending Event Set
      • 15.3.4. Receiving all Pending Events
    • 15.4. Directives
      • 15.4.1. EVENT_SEND - Send event set to a task
      • 15.4.2. EVENT_RECEIVE - Receive event condition
  • 16. Signal Manager
    • 16.1. Introduction
    • 16.2. Background
      • 16.2.1. Signal Manager Definitions
      • 16.2.2. A Comparison of ASRs and ISRs
      • 16.2.3. Building a Signal Set
      • 16.2.4. Building an ASR Mode
    • 16.3. Operations
      • 16.3.1. Establishing an ASR
      • 16.3.2. Sending a Signal Set
      • 16.3.3. Processing an ASR
    • 16.4. Directives
      • 16.4.1. SIGNAL_CATCH - Establish an ASR
      • 16.4.2. SIGNAL_SEND - Send signal set to a task
  • 17. Partition Manager
    • 17.1. Introduction
    • 17.2. Background
      • 17.2.1. Partition Manager Definitions
      • 17.2.2. Building a Partition Attribute Set
    • 17.3. Operations
      • 17.3.1. Creating a Partition
      • 17.3.2. Obtaining Partition IDs
      • 17.3.3. Acquiring a Buffer
      • 17.3.4. Releasing a Buffer
      • 17.3.5. Deleting a Partition
    • 17.4. Directives
      • 17.4.1. PARTITION_CREATE - Create a partition
      • 17.4.2. PARTITION_IDENT - Get ID of a partition
      • 17.4.3. PARTITION_DELETE - Delete a partition
      • 17.4.4. PARTITION_GET_BUFFER - Get buffer from a partition
      • 17.4.5. PARTITION_RETURN_BUFFER - Return buffer to a partition
  • 18. Region Manager
    • 18.1. Introduction
    • 18.2. Background
      • 18.2.1. Region Manager Definitions
      • 18.2.2. Building an Attribute Set
      • 18.2.3. Building an Option Set
    • 18.3. Operations
      • 18.3.1. Creating a Region
      • 18.3.2. Obtaining Region IDs
      • 18.3.3. Adding Memory to a Region
      • 18.3.4. Acquiring a Segment
      • 18.3.5. Releasing a Segment
      • 18.3.6. Obtaining the Size of a Segment
      • 18.3.7. Changing the Size of a Segment
      • 18.3.8. Deleting a Region
    • 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
    • 19.1. Introduction
    • 19.2. Background
    • 19.3. Operations
      • 19.3.1. Creating a Port
      • 19.3.2. Obtaining Port IDs
      • 19.3.3. Converting an Address
      • 19.3.4. Deleting a DPMA Port
    • 19.4. Directives
      • 19.4.1. PORT_CREATE - Create a port
      • 19.4.2. PORT_IDENT - Get ID of a port
      • 19.4.3. PORT_DELETE - Delete a port
      • 19.4.4. PORT_EXTERNAL_TO_INTERNAL - Convert external to internal address
      • 19.4.5. PORT_INTERNAL_TO_EXTERNAL - Convert internal to external address
  • 20. I/O Manager
    • 20.1. Introduction
    • 20.2. Background
      • 20.2.1. Device Driver Table
      • 20.2.2. Major and Minor Device Numbers
      • 20.2.3. Device Names
      • 20.2.4. Device Driver Environment
      • 20.2.5. Runtime Driver Registration
      • 20.2.6. Device Driver Interface
      • 20.2.7. Device Driver Initialization
    • 20.3. Operations
      • 20.3.1. Register and Lookup Name
      • 20.3.2. Accessing an Device Driver
    • 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.2.1. Overview
      • 21.2.2. Fatal Sources
      • 21.2.3. Internal Error Codes
    • 21.3. Operations
      • 21.3.1. Announcing a Fatal Error
    • 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
    • 22.1. Introduction
    • 22.2. Reset and Initialization
      • 22.2.1. Interrupt Stack Requirements
      • 22.2.2. Processors with a Separate Interrupt Stack
      • 22.2.3. Processors Without a Separate Interrupt Stack
    • 22.3. Device Drivers
      • 22.3.1. Clock Tick Device Driver
    • 22.4. User Extensions
    • 22.5. Multiprocessor Communications Interface (MPCI)
      • 22.5.1. Tightly-Coupled Systems
      • 22.5.2. Loosely-Coupled Systems
      • 22.5.3. Systems with Mixed Coupling
      • 22.5.4. Heterogeneous Systems
  • 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
      • 23.3.1. EXTENSION_CREATE - Create a extension set
      • 23.3.2. EXTENSION_IDENT - Get ID of a extension set
      • 23.3.3. EXTENSION_DELETE - Delete a extension set
  • 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.7.1. Per Object Class Unlimited Object Instances
      • 24.7.2. Unlimited Object Instances
      • 24.7.3. CONFIGURE_UNLIMITED_OBJECTS
      • 24.7.4. CONFIGURE_UNLIMITED_ALLOCATION_SIZE
    • 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_KEY_VALUE_PAIRS
      • 24.10.3. CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUES
      • 24.10.4. CONFIGURE_MAXIMUM_POSIX_QUEUED_SIGNALS
      • 24.10.5. CONFIGURE_MAXIMUM_POSIX_SEMAPHORES
      • 24.10.6. CONFIGURE_MAXIMUM_POSIX_TIMERS
      • 24.10.7. CONFIGURE_MAXIMUM_POSIX_THREADS
      • 24.10.8. CONFIGURE_MINIMUM_POSIX_THREAD_STACK_SIZE
    • 24.11. POSIX Initialization Threads Table Configuration
      • 24.11.1. CONFIGURE_POSIX_INIT_THREAD_TABLE
      • 24.11.2. CONFIGURE_POSIX_INIT_THREAD_ENTRY_POINT
      • 24.11.3. CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE
      • 24.11.4. CONFIGURE_POSIX_HAS_OWN_INIT_THREAD_TABLE
    • 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.13.1. CONFIGURE_TASK_STACK_ALLOCATOR_INIT
      • 24.13.2. CONFIGURE_TASK_STACK_ALLOCATOR
      • 24.13.3. CONFIGURE_TASK_STACK_DEALLOCATOR
    • 24.14. Configuring Memory for Classic API Message Buffers
      • 24.14.1. CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE
      • 24.14.2. CONFIGURE_MESSAGE_BUFFER_MEMORY
    • 24.15. Seldom Used Configuration Parameters
      • 24.15.1. CONFIGURE_MEMORY_OVERHEAD
    • 24.16. C Library Support Configuration
      • 24.16.1. CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS
    • 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.20.1. CONFIGURE_IDLE_TASK_BODY
      • 24.20.2. CONFIGURE_IDLE_TASK_STACK_SIZE
      • 24.20.3. CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION
    • 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.22.1. Configuration Step 1 - Scheduler Algorithms
      • 24.22.2. Configuration Step 2 - Schedulers
      • 24.22.3. Configuration Step 3 - Scheduler Table
      • 24.22.4. Configuration Step 4 - Processor to Scheduler Assignment
      • 24.22.5. Configuration Example
      • 24.22.6. Configuration Errors
    • 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.24.1. CONFIGURE_MP_APPLICATION
      • 24.24.2. CONFIGURE_MP_NODE_NUMBER
      • 24.24.3. CONFIGURE_MP_MAXIMUM_NODES
      • 24.24.4. CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS
      • 24.24.5. CONFIGURE_MP_MAXIMUM_PROXIES
      • 24.24.6. CONFIGURE_MP_MPCI_TABLE_POINTER
      • 24.24.7. CONFIGURE_HAS_OWN_MULTIPROCESSING_TABLE
    • 24.25. Ada Tasks
      • 24.25.1. CONFIGURE_GNAT_RTEMS
      • 24.25.2. CONFIGURE_MAXIMUM_ADA_TASKS
      • 24.25.3. CONFIGURE_MAXIMUM_FAKE_ADA_TASKS
    • 24.26. PCI Library
    • 24.27. Go Tasks
      • 24.27.1. CONFIGURE_ENABLE_GO
      • 24.27.2. CONFIGURE_MAXIMUM_GOROUTINES
      • 24.27.3. CONFIGURE_MAXIMUM_GO_CHANNELS
    • 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.3.1. Static mutex initialization
      • 25.3.2. Run-time mutex initialization
      • 25.3.3. Lock the mutex
      • 25.3.4. Unlock the mutex
      • 25.3.5. Set mutex name
      • 25.3.6. Get mutex name
      • 25.3.7. Mutex destruction
    • 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.5.1. Static counting semaphore initialization
      • 25.5.2. Run-time counting semaphore initialization
      • 25.5.3. Wait for a counting semaphore
      • 25.5.4. Post a counting semaphore
      • 25.5.5. Set counting semaphore name
      • 25.5.6. Get counting semaphore name
      • 25.5.7. Counting semaphore destruction
    • 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
    • 26.1. Introduction
    • 26.2. Background
      • 26.2.1. Nodes
      • 26.2.2. Global Objects
      • 26.2.3. Global Object Table
      • 26.2.4. Remote Operations
      • 26.2.5. Proxies
      • 26.2.6. Multiprocessor Configuration Table
    • 26.3. Multiprocessor Communications Interface Layer
      • 26.3.1. INITIALIZATION
      • 26.3.2. GET_PACKET
      • 26.3.3. RETURN_PACKET
      • 26.3.4. RECEIVE_PACKET
      • 26.3.5. SEND_PACKET
      • 26.3.6. Supporting Heterogeneous Environments
    • 26.4. Operations
      • 26.4.1. Announcing a Packet
    • 26.5. Directives
      • 26.5.1. MULTIPROCESSING_ANNOUNCE - Announce the arrival of a packet
  • 27. Symmetric Multiprocessing (SMP)
    • 27.1. Introduction
    • 27.2. Background
      • 27.2.1. Application Configuration
      • 27.2.2. Examples
      • 27.2.3. Uniprocessor versus SMP Parallelism
      • 27.2.4. Task Affinity
      • 27.2.5. Task Migration
      • 27.2.6. Clustered Scheduling
      • 27.2.7. OpenMP
    • 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.4.1. GET_PROCESSOR_COUNT - Get processor count
      • 27.4.2. GET_CURRENT_PROCESSOR - Get current processor index
    • 27.5. Implementation Details
      • 27.5.1. Low-Level Synchronization
      • 27.5.2. Internal Locking
      • 27.5.3. Profiling
      • 27.5.4. Scheduler Helping Protocol
      • 27.5.5. Thread Dispatch Details
      • 27.5.6. Per-Processor Data
      • 27.5.7. Thread Pinning
  • 28. PCI Library
    • 28.1. Introduction
    • 28.2. Background
      • 28.2.1. Software Components
      • 28.2.2. PCI Configuration
        • 28.2.2.1. RTEMS Configuration selection
        • 28.2.2.2. Auto Configuration
        • 28.2.2.3. Read Configuration
        • 28.2.2.4. Static Configuration
        • 28.2.2.5. Peripheral Configuration
      • 28.2.3. PCI Access
        • 28.2.3.1. Configuration space
        • 28.2.3.2. I/O space
        • 28.2.3.3. Registers over Memory space
        • 28.2.3.4. Access functions
        • 28.2.3.5. PCI address translation
      • 28.2.4. PCI Interrupt
      • 28.2.5. PCI Shell command
  • 29. Stack Bounds Checker
    • 29.1. Introduction
    • 29.2. Background
      • 29.2.1. Task Stack
      • 29.2.2. Execution
    • 29.3. Operations
      • 29.3.1. Initializing the Stack Bounds Checker
      • 29.3.2. Checking for Blown Task Stack
      • 29.3.3. Reporting Task Stack Usage
      • 29.3.4. When a Task Overflows the Stack
    • 29.4. Routines
      • 29.4.1. STACK_CHECKER_IS_BLOWN - Has Current Task Blown Its Stack
      • 29.4.2. STACK_CHECKER_REPORT_USAGE - Report Task Stack Usage
  • 30. CPU Usage Statistics
    • 30.1. Introduction
    • 30.2. Background
    • 30.3. Operations
      • 30.3.1. Report CPU Usage Statistics
      • 30.3.2. Reset CPU Usage Statistics
    • 30.4. Directives
      • 30.4.1. cpu_usage_report - Report CPU Usage Statistics
      • 30.4.2. cpu_usage_reset - Reset CPU Usage Statistics
  • 31. Object Services
    • 31.1. Introduction
    • 31.2. Background
      • 31.2.1. APIs
      • 31.2.2. Object Classes
      • 31.2.3. Object Names
    • 31.3. Operations
      • 31.3.1. Decomposing and Recomposing an Object Id
      • 31.3.2. Printing an Object Id
    • 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.2.1. Nodes
      • 32.2.2. Controls
    • 32.3. Operations
      • 32.3.1. Multi-threading
      • 32.3.2. Creating a Chain
      • 32.3.3. Iterating a Chain
    • 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
    • 33.1. Introduction
    • 33.2. Background
      • 33.2.1. Nodes
      • 33.2.2. Controls
    • 33.3. Operations
    • 33.4. Directives
      • 33.4.1. Documentation for the Red-Black Tree Directives
  • 34. Timespec Helpers
    • 34.1. Introduction
    • 34.2. Background
      • 34.2.1. Time Storage Conventions
    • 34.3. Operations
      • 34.3.1. Set and Obtain Timespec Value
      • 34.3.2. Timespec Math
      • 34.3.3. Comparing struct timespec Instances
      • 34.3.4. Conversions and Validity Check
    • 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.2.1. Constant Bandwidth Server Definitions
      • 35.2.2. Handling Periodic Tasks
      • 35.2.3. Registering a Callback Function
      • 35.2.4. Limitations
    • 35.3. Operations
      • 35.3.1. Setting up a server
      • 35.3.2. Attaching Task to a Server
      • 35.3.3. Detaching Task from a Server
      • 35.3.4. Examples
    • 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
    • 36.1. Introduction
    • 36.2. Ada Programming Language Support
    • 36.3. Classic API Ada Bindings
  • 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
    • 38.1. Introduction
    • 38.2. Directives
      • 38.2.1. STATUS_TEXT - Returns the enumeration name for a status code
  • 39. Example Application
  • 40. Glossary
  • 41. References
Index
RTEMS Classic API Guide
  • Docs »
  • Search


© Copyright 2018, RTEMS Project (built 27th November 2018).

Built with Sphinx using a theme provided by Read the Docs.