RTEMS Documentation Project
RTEMS Classic API Guide
6.a3cfaea
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.3. Local and Global Scope
3.2.3.1. Object ID Format
3.2.4. 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
4.2.1. BSP_output_char_function_type
4.2.2. BSP_polling_getchar_function_type
4.2.3. Timer_Classes
4.2.4. rtems_api_configuration_table
4.2.5. rtems_asr
4.2.6. rtems_asr_entry
4.2.7. rtems_assert_context
4.2.8. rtems_attribute
4.2.9. rtems_device_driver
4.2.10. rtems_device_driver_entry
4.2.11. rtems_device_major_number
4.2.12. rtems_device_minor_number
4.2.13. rtems_driver_address_table
4.2.14. rtems_event_set
4.2.15. rtems_exception_frame
4.2.16. rtems_extensions_table
4.2.17. rtems_fatal_code
4.2.18. rtems_fatal_extension
4.2.19. rtems_fatal_source
4.2.20. rtems_id
4.2.21. rtems_initialization_tasks_table
4.2.22. rtems_interrupt_attributes
4.2.23. rtems_interrupt_entry
4.2.24. rtems_interrupt_handler
4.2.25. rtems_interrupt_level
4.2.26. rtems_interrupt_lock
4.2.27. rtems_interrupt_lock_context
4.2.28. rtems_interrupt_per_handler_routine
4.2.29. rtems_interrupt_server_action
4.2.30. rtems_interrupt_server_config
4.2.31. rtems_interrupt_server_control
4.2.32. rtems_interrupt_server_entry
4.2.33. rtems_interrupt_server_request
4.2.34. rtems_interrupt_signal_variant
4.2.35. rtems_interval
4.2.36. rtems_isr
4.2.37. rtems_isr_entry
4.2.38. rtems_message_queue_config
4.2.39. rtems_mode
4.2.40. rtems_mp_packet_classes
4.2.41. rtems_mpci_entry
4.2.42. rtems_mpci_get_packet_entry
4.2.43. rtems_mpci_initialization_entry
4.2.44. rtems_mpci_receive_packet_entry
4.2.45. rtems_mpci_return_packet_entry
4.2.46. rtems_mpci_send_packet_entry
4.2.47. rtems_mpci_table
4.2.48. rtems_multiprocessing_table
4.2.49. rtems_name
4.2.50. rtems_object_api_class_information
4.2.51. rtems_option
4.2.52. rtems_packet_prefix
4.2.53. rtems_rate_monotonic_period_states
4.2.54. rtems_rate_monotonic_period_statistics
4.2.55. rtems_rate_monotonic_period_status
4.2.56. rtems_regulator_attributes
4.2.57. rtems_regulator_deliverer
4.2.58. rtems_regulator_statistics
4.2.59. rtems_signal_set
4.2.60. rtems_stack_allocate_hook
4.2.61. rtems_stack_allocate_init_hook
4.2.62. rtems_stack_free_hook
4.2.63. rtems_status_code
4.2.64. rtems_task
4.2.65. rtems_task_argument
4.2.66. rtems_task_begin_extension
4.2.67. rtems_task_config
4.2.68. rtems_task_create_extension
4.2.69. rtems_task_delete_extension
4.2.70. rtems_task_entry
4.2.71. rtems_task_exitted_extension
4.2.72. rtems_task_priority
4.2.73. rtems_task_restart_extension
4.2.74. rtems_task_start_extension
4.2.75. rtems_task_switch_extension
4.2.76. rtems_task_terminate_extension
4.2.77. rtems_task_visitor
4.2.78. rtems_tcb
4.2.79. rtems_time_of_day
4.2.80. rtems_timer_information
4.2.81. rtems_timer_service_routine
4.2.82. rtems_timer_service_routine_entry
4.2.83. rtems_vector_number
5. Scheduling Concepts
5.1. Introduction
5.2. Background
5.2.1. Scheduling Algorithms
5.2.2. Priority Scheduling
5.2.3. Scheduling Modification Mechanisms
5.2.3.1. Task Priority and Scheduling
5.2.3.2. Preemption
5.2.3.3. Timeslicing
5.2.3.4. Manual Round-Robin
5.2.4. Dispatching Tasks
5.2.5. Task State Transitions
5.3. Uniprocessor Schedulers
5.3.1. Deterministic Priority Scheduler
5.3.2. Simple Priority Scheduler
5.3.3. Earliest Deadline First Scheduler
5.3.4. Constant Bandwidth Server Scheduling (CBS)
5.4. SMP Schedulers
5.4.1. Earliest Deadline First SMP Scheduler
5.4.2. Deterministic Priority SMP Scheduler
5.4.3. Simple Priority SMP Scheduler
5.4.4. Arbitrary Processor Affinity Priority SMP Scheduler
5.5. Directives
5.5.1. rtems_scheduler_ident()
5.5.2. rtems_scheduler_ident_by_processor()
5.5.3. rtems_scheduler_ident_by_processor_set()
5.5.4. rtems_scheduler_get_maximum_priority()
5.5.5. rtems_scheduler_map_priority_to_posix()
5.5.6. rtems_scheduler_map_priority_from_posix()
5.5.7. rtems_scheduler_get_processor()
5.5.8. rtems_scheduler_get_processor_maximum()
5.5.9. rtems_scheduler_get_processor_set()
5.5.10. rtems_scheduler_add_processor()
5.5.11. rtems_scheduler_remove_processor()
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. rtems_initialize_executive()
7. Task Manager
7.1. Introduction
7.2. Background
7.2.1. Task Definition
7.2.2. Task Control Block
7.2.3. Task Memory
7.2.4. Task Name
7.2.5. Task States
7.2.6. Task Priority
7.2.7. Task Mode
7.2.8. Task Life States
7.2.9. Accessing Task Arguments
7.2.10. Floating Point Considerations
7.2.11. Building a Task Attribute Set
7.2.12. 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 Removed Notepads
7.3.11. Transition Advice for Removed Task Variables
7.4. Directives
7.4.1. rtems_task_create()
7.4.2. rtems_task_construct()
7.4.3. rtems_task_ident()
7.4.4. rtems_task_self()
7.4.5. rtems_task_start()
7.4.6. rtems_task_restart()
7.4.7. rtems_task_delete()
7.4.8. rtems_task_exit()
7.4.9. rtems_task_suspend()
7.4.10. rtems_task_resume()
7.4.11. rtems_task_is_suspended()
7.4.12. rtems_task_set_priority()
7.4.13. rtems_task_get_priority()
7.4.14. rtems_task_mode()
7.4.15. rtems_task_wake_after()
7.4.16. rtems_task_wake_when()
7.4.17. rtems_task_get_scheduler()
7.4.18. rtems_task_set_scheduler()
7.4.19. rtems_task_get_affinity()
7.4.20. rtems_task_set_affinity()
7.4.21. rtems_task_iterate()
7.4.22. RTEMS_TASK_STORAGE_SIZE()
7.5. Deprecated Directives
7.5.1. ITERATE_OVER_ALL_THREADS - Iterate Over Tasks
7.6. Removed Directives
7.6.1. TASK_GET_NOTE - Get task notepad entry
7.6.2. TASK_SET_NOTE - Set task notepad entry
7.6.3. TASK_VARIABLE_ADD - Associate per task variable
7.6.4. TASK_VARIABLE_GET - Obtain value of a per task variable
7.6.5. 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. rtems_interrupt_catch()
8.4.2. rtems_interrupt_disable()
8.4.3. rtems_interrupt_enable()
8.4.4. rtems_interrupt_flash()
8.4.5. rtems_interrupt_local_disable()
8.4.6. rtems_interrupt_local_enable()
8.4.7. rtems_interrupt_is_in_progress()
8.4.8. rtems_interrupt_lock_initialize()
8.4.9. rtems_interrupt_lock_destroy()
8.4.10. rtems_interrupt_lock_acquire()
8.4.11. rtems_interrupt_lock_release()
8.4.12. rtems_interrupt_lock_acquire_isr()
8.4.13. rtems_interrupt_lock_release_isr()
8.4.14. rtems_interrupt_lock_interrupt_disable()
8.4.15. RTEMS_INTERRUPT_LOCK_DECLARE()
8.4.16. RTEMS_INTERRUPT_LOCK_DEFINE()
8.4.17. RTEMS_INTERRUPT_LOCK_INITIALIZER()
8.4.18. RTEMS_INTERRUPT_LOCK_MEMBER()
8.4.19. RTEMS_INTERRUPT_LOCK_REFERENCE()
8.4.20. RTEMS_INTERRUPT_ENTRY_INITIALIZER()
8.4.21. rtems_interrupt_entry_initialize()
8.4.22. rtems_interrupt_entry_install()
8.4.23. rtems_interrupt_entry_remove()
8.4.24. rtems_interrupt_handler_install()
8.4.25. rtems_interrupt_handler_remove()
8.4.26. rtems_interrupt_vector_is_enabled()
8.4.27. rtems_interrupt_vector_enable()
8.4.28. rtems_interrupt_vector_disable()
8.4.29. rtems_interrupt_is_pending()
8.4.30. rtems_interrupt_raise()
8.4.31. rtems_interrupt_raise_on()
8.4.32. rtems_interrupt_clear()
8.4.33. rtems_interrupt_get_priority()
8.4.34. rtems_interrupt_set_priority()
8.4.35. rtems_interrupt_get_affinity()
8.4.36. rtems_interrupt_set_affinity()
8.4.37. rtems_interrupt_get_attributes()
8.4.38. rtems_interrupt_handler_iterate()
8.4.39. rtems_interrupt_server_initialize()
8.4.40. rtems_interrupt_server_create()
8.4.41. rtems_interrupt_server_handler_install()
8.4.42. rtems_interrupt_server_handler_remove()
8.4.43. rtems_interrupt_server_set_affinity()
8.4.44. rtems_interrupt_server_delete()
8.4.45. rtems_interrupt_server_suspend()
8.4.46. rtems_interrupt_server_resume()
8.4.47. rtems_interrupt_server_move()
8.4.48. rtems_interrupt_server_handler_iterate()
8.4.49. rtems_interrupt_server_entry_initialize()
8.4.50. rtems_interrupt_server_action_prepend()
8.4.51. rtems_interrupt_server_entry_destroy()
8.4.52. rtems_interrupt_server_entry_submit()
8.4.53. rtems_interrupt_server_entry_move()
8.4.54. rtems_interrupt_server_request_initialize()
8.4.55. rtems_interrupt_server_request_set_vector()
8.4.56. rtems_interrupt_server_request_destroy()
8.4.57. rtems_interrupt_server_request_submit()
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 Removed rtems_clock_get()
9.4. Directives
9.4.1. rtems_clock_set()
9.4.2. rtems_clock_get_tod()
9.4.3. rtems_clock_get_tod_timeval()
9.4.4. rtems_clock_get_realtime()
9.4.5. rtems_clock_get_realtime_bintime()
9.4.6. rtems_clock_get_realtime_timeval()
9.4.7. rtems_clock_get_realtime_coarse()
9.4.8. rtems_clock_get_realtime_coarse_bintime()
9.4.9. rtems_clock_get_realtime_coarse_timeval()
9.4.10. rtems_clock_get_monotonic()
9.4.11. rtems_clock_get_monotonic_bintime()
9.4.12. rtems_clock_get_monotonic_sbintime()
9.4.13. rtems_clock_get_monotonic_timeval()
9.4.14. rtems_clock_get_monotonic_coarse()
9.4.15. rtems_clock_get_monotonic_coarse_bintime()
9.4.16. rtems_clock_get_monotonic_coarse_timeval()
9.4.17. rtems_clock_get_boot_time()
9.4.18. rtems_clock_get_boot_time_bintime()
9.4.19. rtems_clock_get_boot_time_timeval()
9.4.20. rtems_clock_get_seconds_since_epoch()
9.4.21. rtems_clock_get_ticks_per_second()
9.4.22. rtems_clock_get_ticks_since_boot()
9.4.23. rtems_clock_get_uptime()
9.4.24. rtems_clock_get_uptime_timeval()
9.4.25. rtems_clock_get_uptime_seconds()
9.4.26. rtems_clock_get_uptime_nanoseconds()
9.4.27. rtems_clock_tick_later()
9.4.28. rtems_clock_tick_later_usec()
9.4.29. rtems_clock_tick_before()
9.5. Removed Directives
9.5.1. CLOCK_GET - Get date and time information
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. rtems_timer_create()
10.4.2. rtems_timer_ident()
10.4.3. rtems_timer_cancel()
10.4.4. rtems_timer_delete()
10.4.5. rtems_timer_fire_after()
10.4.6. rtems_timer_fire_when()
10.4.7. rtems_timer_initiate_server()
10.4.8. rtems_timer_server_fire_after()
10.4.9. rtems_timer_server_fire_when()
10.4.10. rtems_timer_reset()
10.4.11. rtems_timer_get_information()
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. rtems_rate_monotonic_create()
11.4.2. rtems_rate_monotonic_ident()
11.4.3. rtems_rate_monotonic_cancel()
11.4.4. rtems_rate_monotonic_delete()
11.4.5. rtems_rate_monotonic_period()
11.4.6. rtems_rate_monotonic_get_status()
11.4.7. rtems_rate_monotonic_get_statistics()
11.4.8. rtems_rate_monotonic_reset_statistics()
11.4.9. rtems_rate_monotonic_reset_all_statistics()
11.4.10. rtems_rate_monotonic_report_statistics()
11.4.11. rtems_rate_monotonic_report_statistics_with_plugin()
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. rtems_semaphore_create()
12.4.2. rtems_semaphore_ident()
12.4.3. rtems_semaphore_delete()
12.4.4. rtems_semaphore_obtain()
12.4.5. rtems_semaphore_release()
12.4.6. rtems_semaphore_flush()
12.4.7. rtems_semaphore_set_priority()
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. Directives
13.3.1. rtems_barrier_create()
13.3.2. rtems_barrier_ident()
13.3.3. rtems_barrier_delete()
13.3.4. rtems_barrier_wait()
13.3.5. rtems_barrier_release()
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. rtems_message_queue_create()
14.4.2. rtems_message_queue_construct()
14.4.3. rtems_message_queue_ident()
14.4.4. rtems_message_queue_delete()
14.4.5. rtems_message_queue_send()
14.4.6. rtems_message_queue_urgent()
14.4.7. rtems_message_queue_broadcast()
14.4.8. rtems_message_queue_receive()
14.4.9. rtems_message_queue_get_number_pending()
14.4.10. rtems_message_queue_flush()
14.4.11. RTEMS_MESSAGE_QUEUE_BUFFER()
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. rtems_event_send()
15.4.2. rtems_event_receive()
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. rtems_signal_catch()
16.4.2. rtems_signal_send()
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. rtems_partition_create()
17.4.2. rtems_partition_ident()
17.4.3. rtems_partition_delete()
17.4.4. rtems_partition_get_buffer()
17.4.5. rtems_partition_return_buffer()
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. rtems_region_create()
18.4.2. rtems_region_ident()
18.4.3. rtems_region_delete()
18.4.4. rtems_region_extend()
18.4.5. rtems_region_get_segment()
18.4.6. rtems_region_return_segment()
18.4.7. rtems_region_resize_segment()
18.4.8. rtems_region_get_information()
18.4.9. rtems_region_get_free_information()
18.4.10. rtems_region_get_segment_size()
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. rtems_port_create()
19.4.2. rtems_port_ident()
19.4.3. rtems_port_delete()
19.4.4. rtems_port_external_to_internal()
19.4.5. rtems_port_internal_to_external()
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. rtems_io_register_driver()
20.4.2. rtems_io_unregister_driver()
20.4.3. rtems_io_initialize()
20.4.4. rtems_io_register_name()
20.4.5. rtems_io_open()
20.4.6. rtems_io_close()
20.4.7. rtems_io_read()
20.4.8. rtems_io_write()
20.4.9. rtems_io_control()
21. Kernel Character I/O Support
21.1. Introduction
21.2. Directives
21.2.1. rtems_putc()
21.2.2. rtems_put_char()
21.2.3. putk()
21.2.4. printk()
21.2.5. vprintk()
21.2.6. rtems_printk_printer()
21.2.7. getchark()
22. Cache Manager
22.1. Introduction
22.2. Directives
22.2.1. rtems_cache_flush_multiple_data_lines()
22.2.2. rtems_cache_invalidate_multiple_data_lines()
22.2.3. rtems_cache_invalidate_multiple_instruction_lines()
22.2.4. rtems_cache_instruction_sync_after_code_change()
22.2.5. rtems_cache_get_maximal_line_size()
22.2.6. rtems_cache_get_data_line_size()
22.2.7. rtems_cache_get_instruction_line_size()
22.2.8. rtems_cache_get_data_cache_size()
22.2.9. rtems_cache_get_instruction_cache_size()
22.2.10. rtems_cache_flush_entire_data()
22.2.11. rtems_cache_invalidate_entire_data()
22.2.12. rtems_cache_invalidate_entire_instruction()
22.2.13. rtems_cache_enable_data()
22.2.14. rtems_cache_disable_data()
22.2.15. rtems_cache_enable_instruction()
22.2.16. rtems_cache_disable_instruction()
22.2.17. rtems_cache_aligned_malloc()
23. Fatal Error Manager
23.1. Introduction
23.2. Background
23.2.1. Overview
23.2.2. System Termination Procedure
23.2.3. Fatal Sources
23.2.4. Internal Error Codes
23.3. Operations
23.3.1. Announcing a Fatal Error
23.4. Directives
23.4.1. rtems_fatal()
23.4.2. rtems_panic()
23.4.3. rtems_shutdown_executive()
23.4.4. rtems_exception_frame_print()
23.4.5. rtems_fatal_source_text()
23.4.6. rtems_internal_error_text()
23.4.7. rtems_fatal_error_occurred()
24. Board Support Packages
24.1. Introduction
24.2. Reset and Initialization
24.2.1. Interrupt Stack Requirements
24.2.2. Processors with a Separate Interrupt Stack
24.2.3. Processors Without a Separate Interrupt Stack
24.3. Device Drivers
24.3.1. Clock Tick Device Driver
24.4. User Extensions
24.5. Multiprocessor Communications Interface (MPCI)
24.5.1. Tightly-Coupled Systems
24.5.2. Loosely-Coupled Systems
24.5.3. Systems with Mixed Coupling
24.5.4. Heterogeneous Systems
25. User Extensions Manager
25.1. Introduction
25.2. Background
25.2.1. Extension Sets
25.2.2. TCB Extension Area
25.2.3. Order of Invocation
25.2.4. Thread Create Extension
25.2.5. Thread Start Extension
25.2.6. Thread Restart Extension
25.2.7. Thread Switch Extension
25.2.8. Thread Begin Extension
25.2.9. Thread Exitted Extension
25.2.10. Thread Termination Extension
25.2.11. Thread Delete Extension
25.2.12. Fatal Error Extension
25.3. Directives
25.3.1. rtems_extension_create()
25.3.2. rtems_extension_delete()
25.3.3. rtems_extension_ident()
26. Configuring a System
26.1. Introduction
26.2. Default Value Selection Philosophy
26.3. Sizing the RTEMS Workspace
26.4. Potential Issues with RTEMS Workspace Size Estimation
26.5. Configuration Example
26.6. Unlimited Objects
26.6.1. Unlimited Objects by Class
26.6.2. Unlimited Objects by Default
26.7. General System Configuration
26.7.1. CONFIGURE_DIRTY_MEMORY
26.7.2. CONFIGURE_DISABLE_BSP_SETTINGS
26.7.3. CONFIGURE_DISABLE_NEWLIB_REENTRANCY
26.7.4. CONFIGURE_EXECUTIVE_RAM_SIZE
26.7.5. CONFIGURE_EXTRA_TASK_STACKS
26.7.6. CONFIGURE_INIT
26.7.7. CONFIGURE_INITIAL_EXTENSIONS
26.7.8. CONFIGURE_INTERRUPT_STACK_SIZE
26.7.9. CONFIGURE_MALLOC_DIRTY
26.7.10. CONFIGURE_MAXIMUM_FILE_DESCRIPTORS
26.7.11. CONFIGURE_MAXIMUM_PROCESSORS
26.7.12. CONFIGURE_MAXIMUM_THREAD_LOCAL_STORAGE_SIZE
26.7.13. CONFIGURE_MAXIMUM_THREAD_NAME_SIZE
26.7.14. CONFIGURE_MEMORY_OVERHEAD
26.7.15. CONFIGURE_MESSAGE_BUFFER_MEMORY
26.7.16. CONFIGURE_MICROSECONDS_PER_TICK
26.7.17. CONFIGURE_MINIMUM_TASK_STACK_SIZE
26.7.18. CONFIGURE_STACK_CHECKER_ENABLED
26.7.19. CONFIGURE_TICKS_PER_TIMESLICE
26.7.20. CONFIGURE_UNIFIED_WORK_AREAS
26.7.21. CONFIGURE_UNLIMITED_ALLOCATION_SIZE
26.7.22. CONFIGURE_UNLIMITED_OBJECTS
26.7.23. CONFIGURE_VERBOSE_SYSTEM_INITIALIZATION
26.7.24. CONFIGURE_ZERO_WORKSPACE_AUTOMATICALLY
26.8. Device Driver Configuration
26.8.1. CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER
26.8.2. CONFIGURE_APPLICATION_EXTRA_DRIVERS
26.8.3. CONFIGURE_APPLICATION_NEEDS_ATA_DRIVER
26.8.4. CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
26.8.5. CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
26.8.6. CONFIGURE_APPLICATION_NEEDS_FRAME_BUFFER_DRIVER
26.8.7. CONFIGURE_APPLICATION_NEEDS_IDE_DRIVER
26.8.8. CONFIGURE_APPLICATION_NEEDS_NULL_DRIVER
26.8.9. CONFIGURE_APPLICATION_NEEDS_RTC_DRIVER
26.8.10. CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER
26.8.11. CONFIGURE_APPLICATION_NEEDS_SIMPLE_TASK_CONSOLE_DRIVER
26.8.12. CONFIGURE_APPLICATION_NEEDS_STUB_DRIVER
26.8.13. CONFIGURE_APPLICATION_NEEDS_TIMER_DRIVER
26.8.14. CONFIGURE_APPLICATION_NEEDS_WATCHDOG_DRIVER
26.8.15. CONFIGURE_APPLICATION_NEEDS_ZERO_DRIVER
26.8.16. CONFIGURE_APPLICATION_PREREQUISITE_DRIVERS
26.8.17. CONFIGURE_ATA_DRIVER_TASK_PRIORITY
26.8.18. CONFIGURE_EXCEPTION_TO_SIGNAL_MAPPING
26.8.19. CONFIGURE_MAXIMUM_DRIVERS
26.9. Classic API Configuration
26.9.1. CONFIGURE_MAXIMUM_BARRIERS
26.9.2. CONFIGURE_MAXIMUM_MESSAGE_QUEUES
26.9.3. CONFIGURE_MAXIMUM_PARTITIONS
26.9.4. CONFIGURE_MAXIMUM_PERIODS
26.9.5. CONFIGURE_MAXIMUM_PORTS
26.9.6. CONFIGURE_MAXIMUM_REGIONS
26.9.7. CONFIGURE_MAXIMUM_SEMAPHORES
26.9.8. CONFIGURE_MAXIMUM_TASKS
26.9.9. CONFIGURE_MAXIMUM_TIMERS
26.9.10. CONFIGURE_MAXIMUM_USER_EXTENSIONS
26.9.11. CONFIGURE_MINIMUM_TASKS_WITH_USER_PROVIDED_STORAGE
26.10. Classic API Initialization Task Configuration
26.10.1. CONFIGURE_INIT_TASK_ARGUMENTS
26.10.2. CONFIGURE_INIT_TASK_ATTRIBUTES
26.10.3. CONFIGURE_INIT_TASK_CONSTRUCT_STORAGE_SIZE
26.10.4. CONFIGURE_INIT_TASK_ENTRY_POINT
26.10.5. CONFIGURE_INIT_TASK_INITIAL_MODES
26.10.6. CONFIGURE_INIT_TASK_NAME
26.10.7. CONFIGURE_INIT_TASK_PRIORITY
26.10.8. CONFIGURE_INIT_TASK_STACK_SIZE
26.10.9. CONFIGURE_RTEMS_INIT_TASKS_TABLE
26.11. POSIX API Configuration
26.11.1. CONFIGURE_MAXIMUM_POSIX_KEYS
26.11.2. CONFIGURE_MAXIMUM_POSIX_KEY_VALUE_PAIRS
26.11.3. CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUES
26.11.4. CONFIGURE_MAXIMUM_POSIX_QUEUED_SIGNALS
26.11.5. CONFIGURE_MAXIMUM_POSIX_SEMAPHORES
26.11.6. CONFIGURE_MAXIMUM_POSIX_SHMS
26.11.7. CONFIGURE_MAXIMUM_POSIX_THREADS
26.11.8. CONFIGURE_MAXIMUM_POSIX_TIMERS
26.11.9. CONFIGURE_MINIMUM_POSIX_THREAD_STACK_SIZE
26.12. POSIX Initialization Thread Configuration
26.12.1. CONFIGURE_POSIX_INIT_THREAD_ENTRY_POINT
26.12.2. CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE
26.12.3. CONFIGURE_POSIX_INIT_THREAD_TABLE
26.13. Event Recording Configuration
26.13.1. CONFIGURE_RECORD_EXTENSIONS_ENABLED
26.13.2. CONFIGURE_RECORD_FATAL_DUMP_BASE64
26.13.3. CONFIGURE_RECORD_FATAL_DUMP_BASE64_ZLIB
26.13.4. CONFIGURE_RECORD_INTERRUPTS_ENABLED
26.13.5. CONFIGURE_RECORD_PER_PROCESSOR_ITEMS
26.14. Filesystem Configuration
26.14.1. CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
26.14.2. CONFIGURE_FILESYSTEM_ALL
26.14.3. CONFIGURE_FILESYSTEM_DOSFS
26.14.4. CONFIGURE_FILESYSTEM_FTPFS
26.14.5. CONFIGURE_FILESYSTEM_IMFS
26.14.6. CONFIGURE_FILESYSTEM_JFFS2
26.14.7. CONFIGURE_FILESYSTEM_NFS
26.14.8. CONFIGURE_FILESYSTEM_RFS
26.14.9. CONFIGURE_FILESYSTEM_TFTPFS
26.14.10. CONFIGURE_IMFS_DISABLE_CHMOD
26.14.11. CONFIGURE_IMFS_DISABLE_CHOWN
26.14.12. CONFIGURE_IMFS_DISABLE_LINK
26.14.13. CONFIGURE_IMFS_DISABLE_MKNOD
26.14.14. CONFIGURE_IMFS_DISABLE_MKNOD_DEVICE
26.14.15. CONFIGURE_IMFS_DISABLE_MKNOD_FILE
26.14.16. CONFIGURE_IMFS_DISABLE_MOUNT
26.14.17. CONFIGURE_IMFS_DISABLE_READDIR
26.14.18. CONFIGURE_IMFS_DISABLE_READLINK
26.14.19. CONFIGURE_IMFS_DISABLE_RENAME
26.14.20. CONFIGURE_IMFS_DISABLE_RMNOD
26.14.21. CONFIGURE_IMFS_DISABLE_SYMLINK
26.14.22. CONFIGURE_IMFS_DISABLE_UNMOUNT
26.14.23. CONFIGURE_IMFS_DISABLE_UTIME
26.14.24. CONFIGURE_IMFS_ENABLE_MKFIFO
26.14.25. CONFIGURE_IMFS_MEMFILE_BYTES_PER_BLOCK
26.14.26. CONFIGURE_JFFS2_DELAYED_WRITE_TASK_PRIORITY
26.14.27. CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM
26.14.28. CONFIGURE_USE_MINIIMFS_AS_BASE_FILESYSTEM
26.15. Block Device Cache Configuration
26.15.1. CONFIGURE_APPLICATION_NEEDS_LIBBLOCK
26.15.2. CONFIGURE_BDBUF_BUFFER_MAX_SIZE
26.15.3. CONFIGURE_BDBUF_BUFFER_MIN_SIZE
26.15.4. CONFIGURE_BDBUF_CACHE_MEMORY_SIZE
26.15.5. CONFIGURE_BDBUF_MAX_READ_AHEAD_BLOCKS
26.15.6. CONFIGURE_BDBUF_MAX_WRITE_BLOCKS
26.15.7. CONFIGURE_BDBUF_READ_AHEAD_TASK_PRIORITY
26.15.8. CONFIGURE_BDBUF_TASK_STACK_SIZE
26.15.9. CONFIGURE_SWAPOUT_BLOCK_HOLD
26.15.10. CONFIGURE_SWAPOUT_SWAP_PERIOD
26.15.11. CONFIGURE_SWAPOUT_TASK_PRIORITY
26.15.12. CONFIGURE_SWAPOUT_WORKER_TASKS
26.15.13. CONFIGURE_SWAPOUT_WORKER_TASK_PRIORITY
26.16. Task Stack Allocator Configuration
26.16.1. CONFIGURE_TASK_STACK_ALLOCATOR
26.16.2. CONFIGURE_TASK_STACK_ALLOCATOR_AVOIDS_WORK_SPACE
26.16.3. CONFIGURE_TASK_STACK_ALLOCATOR_FOR_IDLE
26.16.4. CONFIGURE_TASK_STACK_ALLOCATOR_INIT
26.16.5. CONFIGURE_TASK_STACK_DEALLOCATOR
26.16.6. CONFIGURE_TASK_STACK_FROM_ALLOCATOR
26.17. Idle Task Configuration
26.17.1. CONFIGURE_IDLE_TASK_BODY
26.17.2. CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION
26.17.3. CONFIGURE_IDLE_TASK_STACK_SIZE
26.17.4. CONFIGURE_IDLE_TASK_STORAGE_SIZE
26.18. General Scheduler Configuration
26.18.1. CONFIGURE_CBS_MAXIMUM_SERVERS
26.18.2. CONFIGURE_MAXIMUM_PRIORITY
26.18.3. CONFIGURE_SCHEDULER_ASSIGNMENTS
26.18.4. CONFIGURE_SCHEDULER_CBS
26.18.5. CONFIGURE_SCHEDULER_EDF
26.18.6. CONFIGURE_SCHEDULER_EDF_SMP
26.18.7. CONFIGURE_SCHEDULER_NAME
26.18.8. CONFIGURE_SCHEDULER_PRIORITY
26.18.9. CONFIGURE_SCHEDULER_PRIORITY_AFFINITY_SMP
26.18.10. CONFIGURE_SCHEDULER_PRIORITY_SMP
26.18.11. CONFIGURE_SCHEDULER_SIMPLE
26.18.12. CONFIGURE_SCHEDULER_SIMPLE_SMP
26.18.13. CONFIGURE_SCHEDULER_STRONG_APA
26.18.14. CONFIGURE_SCHEDULER_TABLE_ENTRIES
26.18.15. CONFIGURE_SCHEDULER_USER
26.19. Clustered Scheduler Configuration
26.19.1. Configuration Step 1 - Scheduler Algorithms
26.19.2. Configuration Step 2 - Schedulers
26.19.3. Configuration Step 3 - Scheduler Table
26.19.4. Configuration Step 4 - Processor to Scheduler Assignment
26.19.5. Configuration Example
26.19.6. Configuration Errors
26.20. FACE Technical Standard Related Configuration
26.20.1. CONFIGURE_POSIX_TIMERS_FACE_BEHAVIOR
26.21. Multiprocessing Configuration
26.21.1. CONFIGURE_EXTRA_MPCI_RECEIVE_SERVER_STACK
26.21.2. CONFIGURE_MP_APPLICATION
26.21.3. CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS
26.21.4. CONFIGURE_MP_MAXIMUM_NODES
26.21.5. CONFIGURE_MP_MAXIMUM_PROXIES
26.21.6. CONFIGURE_MP_MPCI_TABLE_POINTER
26.21.7. CONFIGURE_MP_NODE_NUMBER
26.22. PCI Library Configuration
26.23. Ada Configuration
26.24. Directives
26.24.1. rtems_get_build_label()
26.24.2. rtems_get_copyright_notice()
26.24.3. rtems_get_target_hash()
26.24.4. rtems_get_version_string()
26.24.5. rtems_configuration_get_do_zero_of_workspace()
26.24.6. rtems_configuration_get_idle_task_stack_size()
26.24.7. rtems_configuration_get_idle_task()
26.24.8. rtems_configuration_get_interrupt_stack_size()
26.24.9. rtems_configuration_get_maximum_barriers()
26.24.10. rtems_configuration_get_maximum_extensions()
26.24.11. rtems_configuration_get_maximum_message_queues()
26.24.12. rtems_configuration_get_maximum_partitions()
26.24.13. rtems_configuration_get_maximum_periods()
26.24.14. rtems_configuration_get_maximum_ports()
26.24.15. rtems_configuration_get_maximum_processors()
26.24.16. rtems_configuration_get_maximum_regions()
26.24.17. rtems_configuration_get_maximum_semaphores()
26.24.18. rtems_configuration_get_maximum_tasks()
26.24.19. rtems_configuration_get_maximum_timers()
26.24.20. rtems_configuration_get_microseconds_per_tick()
26.24.21. rtems_configuration_get_milliseconds_per_tick()
26.24.22. rtems_configuration_get_nanoseconds_per_tick()
26.24.23. rtems_configuration_get_number_of_initial_extensions()
26.24.24. rtems_configuration_get_stack_allocate_for_idle_hook()
26.24.25. rtems_configuration_get_stack_allocate_hook()
26.24.26. rtems_configuration_get_stack_allocate_init_hook()
26.24.27. rtems_configuration_get_stack_allocator_avoids_work_space()
26.24.28. rtems_configuration_get_stack_free_hook()
26.24.29. rtems_configuration_get_stack_space_size()
26.24.30. rtems_configuration_get_ticks_per_timeslice()
26.24.31. rtems_configuration_get_unified_work_area()
26.24.32. rtems_configuration_get_user_extension_table()
26.24.33. rtems_configuration_get_user_multiprocessing_table()
26.24.34. rtems_configuration_get_work_space_size()
26.24.35. rtems_configuration_get_rtems_api_configuration()
26.24.36. rtems_resource_is_unlimited()
26.24.37. rtems_resource_maximum_per_allocation()
26.24.38. rtems_resource_unlimited()
26.25. Obsolete Configuration Options
26.25.1. CONFIGURE_BDBUF_BUFFER_COUNT
26.25.2. CONFIGURE_BDBUF_BUFFER_SIZE
26.25.3. CONFIGURE_DISABLE_CLASSIC_API_NOTEPADS
26.25.4. CONFIGURE_ENABLE_GO
26.25.5. CONFIGURE_GNAT_RTEMS
26.25.6. CONFIGURE_HAS_OWN_CONFIGURATION_TABLE
26.25.7. CONFIGURE_HAS_OWN_BDBUF_TABLE
26.25.8. CONFIGURE_HAS_OWN_DEVICE_DRIVER_TABLE
26.25.9. CONFIGURE_HAS_OWN_INIT_TASK_TABLE
26.25.10. CONFIGURE_HAS_OWN_MOUNT_TABLE
26.25.11. CONFIGURE_HAS_OWN_MULTIPROCESSING_TABLE
26.25.12. CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS
26.25.13. CONFIGURE_MAXIMUM_ADA_TASKS
26.25.14. CONFIGURE_MAXIMUM_DEVICES
26.25.15. CONFIGURE_MAXIMUM_FAKE_ADA_TASKS
26.25.16. CONFIGURE_MAXIMUM_GO_CHANNELS
26.25.17. CONFIGURE_MAXIMUM_GOROUTINES
26.25.18. CONFIGURE_MAXIMUM_MRSP_SEMAPHORES
26.25.19. CONFIGURE_NUMBER_OF_TERMIOS_PORTS
26.25.20. CONFIGURE_MAXIMUM_POSIX_BARRIERS
26.25.21. CONFIGURE_MAXIMUM_POSIX_CONDITION_VARIABLES
26.25.22. CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUE_DESCRIPTORS
26.25.23. CONFIGURE_MAXIMUM_POSIX_MUTEXES
26.25.24. CONFIGURE_MAXIMUM_POSIX_RWLOCKS
26.25.25. CONFIGURE_MAXIMUM_POSIX_SPINLOCKS
26.25.26. CONFIGURE_POSIX_HAS_OWN_INIT_THREAD_TABLE
26.25.27. CONFIGURE_SMP_APPLICATION
26.25.28. CONFIGURE_SMP_MAXIMUM_PROCESSORS
26.25.29. CONFIGURE_TERMIOS_DISABLED
27. Self-Contained Objects
27.1. Introduction
27.2. RTEMS Thread API
27.3. Mutual Exclusion
27.3.1. Static mutex initialization
27.3.2. Run-time mutex initialization
27.3.3. Lock the mutex
27.3.4. Try to lock the mutex
27.3.5. Unlock the mutex
27.3.6. Set mutex name
27.3.7. Get mutex name
27.3.8. Mutex destruction
27.4. Condition Variables
27.4.1. Static condition variable initialization
27.4.2. Run-time condition variable initialization
27.4.3. Wait for condition signal
27.4.4. Signals a condition change
27.4.5. Broadcasts a condition change
27.4.6. Set condition variable name
27.4.7. Get condition variable name
27.4.8. Condition variable destruction
27.5. Counting Semaphores
27.5.1. Static counting semaphore initialization
27.5.2. Run-time counting semaphore initialization
27.5.3. Wait for a counting semaphore
27.5.4. Wait for a counting semaphore with timeout in ticks
27.5.5. Tries to wait for a counting semaphore
27.5.6. Post a counting semaphore
27.5.7. Set counting semaphore name
27.5.8. Get counting semaphore name
27.5.9. Counting semaphore destruction
27.6. Binary Semaphores
27.6.1. Static binary semaphore initialization
27.6.2. Run-time binary semaphore initialization
27.6.3. Wait for a binary semaphore
27.6.4. Wait for a binary semaphore with timeout in ticks
27.6.5. Tries to wait for a binary semaphore
27.6.6. Post a binary semaphore
27.6.7. Set binary semaphore name
27.6.8. Get binary semaphore name
27.6.9. Binary semaphore destruction
27.7. Threads
28. Regulator Manager
28.1. Introduction
28.2. Background
28.2.1. Regulator Buffering
28.2.2. Message Delivery Rate
28.3. Operations
28.3.1. Application Sourcing Data
28.3.2. Delivery Function
28.4. Directives
28.4.1. rtems_regulator_create()
28.4.2. rtems_regulator_delete()
28.4.3. rtems_regulator_obtain_buffer()
28.4.4. rtems_regulator_release_buffer()
28.4.5. rtems_regulator_send()
28.4.6. rtems_regulator_get_statistics()
29. Multiprocessing Manager
29.1. Introduction
29.2. Background
29.2.1. Nodes
29.2.2. Global Objects
29.2.3. Global Object Table
29.2.4. Remote Operations
29.2.5. Proxies
29.2.6. Multiprocessor Configuration Table
29.3. Multiprocessor Communications Interface Layer
29.3.1. INITIALIZATION
29.3.2. GET_PACKET
29.3.3. RETURN_PACKET
29.3.4. RECEIVE_PACKET
29.3.5. SEND_PACKET
29.3.6. Supporting Heterogeneous Environments
29.4. Operations
29.4.1. Announcing a Packet
29.5. Directives
29.5.1. rtems_multiprocessing_announce()
30. Symmetric Multiprocessing (SMP)
30.1. Introduction
30.2. Background
30.2.1. Application Configuration
30.2.2. Examples
30.2.3. Uniprocessor versus SMP Parallelism
30.2.4. Task Affinity
30.2.5. Task Migration
30.2.6. Clustered Scheduling
30.2.7. OpenMP
30.2.8. Atomic Operations
30.3. Application Issues
30.3.1. Task variables
30.3.2. Highest Priority Thread Never Walks Alone
30.3.3. Disabling of Thread Preemption
30.3.4. Disabling of Interrupts
30.3.5. Interrupt Service Routines Execute in Parallel With Threads
30.3.6. Timers Do Not Stop Immediately
30.3.7. False Sharing of Cache Lines Due to Objects Table
30.4. Implementation Details
30.4.1. Low-Level Synchronization
30.4.2. Internal Locking
30.4.3. Profiling
30.4.4. Scheduler Helping Protocol
30.4.5. Thread Dispatch Details
30.4.6. Per-Processor Data
30.4.7. Thread Pinning
31. PCI Library
31.1. Introduction
31.2. Background
31.2.1. Software Components
31.2.2. PCI Configuration
31.2.2.1. RTEMS Configuration selection
31.2.2.2. Auto Configuration
31.2.2.3. Read Configuration
31.2.2.4. Static Configuration
31.2.2.5. Peripheral Configuration
31.2.3. PCI Access
31.2.3.1. Configuration space
31.2.3.2. I/O space
31.2.3.3. Registers over Memory space
31.2.3.4. Access functions
31.2.3.5. PCI address translation
31.2.4. PCI Interrupt
31.2.5. PCI Shell command
32. Stack Bounds Checker
32.1. Introduction
32.2. Background
32.2.1. Task Stack
32.2.2. Execution
32.3. Operations
32.3.1. Initializing the Stack Bounds Checker
32.3.2. Checking for Blown Task Stack
32.3.3. Reporting Task Stack Usage
32.3.4. When a Task Overflows the Stack
32.4. Routines
32.4.1. STACK_CHECKER_IS_BLOWN - Has Current Task Blown Its Stack
32.4.2. STACK_CHECKER_REPORT_USAGE - Report Task Stack Usage
33. CPU Usage Statistics
33.1. Introduction
33.2. Background
33.3. Operations
33.3.1. Report CPU Usage Statistics
33.3.2. Reset CPU Usage Statistics
33.4. Directives
33.4.1. cpu_usage_report - Report CPU Usage Statistics
33.4.2. cpu_usage_reset - Reset CPU Usage Statistics
34. Object Services
34.1. Introduction
34.2. Background
34.2.1. APIs
34.2.2. Object Classes
34.2.3. Object Names
34.3. Operations
34.3.1. Decomposing and Recomposing an Object Id
34.3.2. Printing an Object Id
34.4. Directives
34.4.1. rtems_build_id()
34.4.2. rtems_build_name()
34.4.3. rtems_object_get_classic_name()
34.4.4. rtems_object_get_name()
34.4.5. rtems_object_set_name()
34.4.6. rtems_object_id_get_api()
34.4.7. rtems_object_id_get_class()
34.4.8. rtems_object_id_get_node()
34.4.9. rtems_object_id_get_index()
34.4.10. rtems_object_id_api_minimum()
34.4.11. rtems_object_id_api_maximum()
34.4.12. rtems_object_api_minimum_class()
34.4.13. rtems_object_api_maximum_class()
34.4.14. rtems_object_get_api_name()
34.4.15. rtems_object_get_api_class_name()
34.4.16. rtems_object_get_class_information()
34.4.17. rtems_object_get_local_node()
34.4.18. RTEMS_OBJECT_ID_INITIAL()
35. Chains
35.1. Introduction
35.2. Background
35.2.1. Nodes
35.2.2. Controls
35.3. Operations
35.3.1. Multi-threading
35.3.2. Creating a Chain
35.3.3. Iterating a Chain
35.4. Directives
35.4.1. Initialize Chain With Nodes
35.4.2. Initialize Empty
35.4.3. Is Null Node ?
35.4.4. Head
35.4.5. Tail
35.4.6. Are Two Nodes Equal ?
35.4.7. Is the Chain Empty
35.4.8. Is this the First Node on the Chain ?
35.4.9. Is this the Last Node on the Chain ?
35.4.10. Does this Chain have only One Node ?
35.4.11. Returns the node count of the chain (unprotected)
35.4.12. Is this Node the Chain Head ?
35.4.13. Is this Node the Chain Tail ?
35.4.14. Extract a Node
35.4.15. Extract a Node (unprotected)
35.4.16. Get the First Node
35.4.17. Get the First Node (unprotected)
35.4.18. Insert a Node
35.4.19. Insert a Node (unprotected)
35.4.20. Append a Node
35.4.21. Append a Node (unprotected)
35.4.22. Prepend a Node
35.4.23. Prepend a Node (unprotected)
36. Red-Black Trees
36.1. Introduction
36.2. Background
36.2.1. Nodes
36.2.2. Controls
36.3. Operations
36.4. Directives
36.4.1. Documentation for the Red-Black Tree Directives
37. Timespec Helpers
37.1. Introduction
37.2. Background
37.2.1. Time Storage Conventions
37.3. Operations
37.3.1. Set and Obtain Timespec Value
37.3.2. Timespec Math
37.3.3. Comparing struct timespec Instances
37.3.4. Conversions and Validity Check
37.4. Directives
37.4.1. TIMESPEC_SET - Set struct timespec Instance
37.4.2. TIMESPEC_ZERO - Zero struct timespec Instance
37.4.3. TIMESPEC_IS_VALID - Check validity of a struct timespec instance
37.4.4. TIMESPEC_ADD_TO - Add Two struct timespec Instances
37.4.5. TIMESPEC_SUBTRACT - Subtract Two struct timespec Instances
37.4.6. TIMESPEC_DIVIDE - Divide Two struct timespec Instances
37.4.7. TIMESPEC_DIVIDE_BY_INTEGER - Divide a struct timespec Instance by an Integer
37.4.8. TIMESPEC_LESS_THAN - Less than operator
37.4.9. TIMESPEC_GREATER_THAN - Greater than operator
37.4.10. TIMESPEC_EQUAL_TO - Check equality of timespecs
37.4.11. TIMESPEC_GET_SECONDS - Get Seconds Portion of struct timespec Instance
37.4.12. TIMESPEC_GET_NANOSECONDS - Get Nanoseconds Portion of the struct timespec Instance
37.4.13. TIMESPEC_TO_TICKS - Convert struct timespec Instance to Ticks
37.4.14. TIMESPEC_FROM_TICKS - Convert Ticks to struct timespec Representation
38. Constant Bandwidth Server Scheduler API
38.1. Introduction
38.2. Background
38.2.1. Constant Bandwidth Server Definitions
38.2.2. Handling Periodic Tasks
38.2.3. Registering a Callback Function
38.2.4. Limitations
38.3. Operations
38.3.1. Setting up a server
38.3.2. Attaching Task to a Server
38.3.3. Detaching Task from a Server
38.3.4. Examples
38.4. Directives
38.4.1. CBS_INITIALIZE - Initialize the CBS library
38.4.2. CBS_CLEANUP - Cleanup the CBS library
38.4.3. CBS_CREATE_SERVER - Create a new bandwidth server
38.4.4. CBS_ATTACH_THREAD - Attach a thread to server
38.4.5. CBS_DETACH_THREAD - Detach a thread from server
38.4.6. CBS_DESTROY_SERVER - Destroy a bandwidth server
38.4.7. CBS_GET_SERVER_ID - Get an ID of a server
38.4.8. CBS_GET_PARAMETERS - Get scheduling parameters of a server
38.4.9. CBS_SET_PARAMETERS - Set scheduling parameters
38.4.10. CBS_GET_EXECUTION_TIME - Get elapsed execution time
38.4.11. CBS_GET_REMAINING_BUDGET - Get remaining execution time
38.4.12. CBS_GET_APPROVED_BUDGET - Get scheduler approved execution time
39. Ada Support
39.1. Introduction
39.2. Ada Programming Language Support
39.3. Classic API Ada Bindings
40. Linker Sets
40.1. Introduction
40.2. Background
40.3. Directives
40.3.1. RTEMS_LINKER_SET_BEGIN - Designator of the linker set begin marker
40.3.2. RTEMS_LINKER_SET_END - Designator of the linker set end marker
40.3.3. RTEMS_LINKER_SET_SIZE - The linker set size in characters
40.3.4. RTEMS_LINKER_SET_ITEM_COUNT - The linker set item count
40.3.5. RTEMS_LINKER_SET_IS_EMPTY - Is the linker set empty?
40.3.6. RTEMS_LINKER_SET_FOREACH - Iterate through the linker set items
40.3.7. RTEMS_LINKER_ROSET_DECLARE - Declares a read-only linker set
40.3.8. RTEMS_LINKER_ROSET - Defines a read-only linker set
40.3.9. RTEMS_LINKER_ROSET_ITEM_DECLARE - Declares a read-only linker set item
40.3.10. RTEMS_LINKER_ROSET_ITEM_ORDERED_DECLARE - Declares an ordered read-only linker set item
40.3.11. RTEMS_LINKER_ROSET_ITEM_REFERENCE - References a read-only linker set item
40.3.12. RTEMS_LINKER_ROSET_ITEM - Defines a read-only linker set item
40.3.13. RTEMS_LINKER_ROSET_ITEM_ORDERED - Defines an ordered read-only linker set item
40.3.14. RTEMS_LINKER_ROSET_CONTENT - Marks a declaration as a read-only linker set content
40.3.15. RTEMS_LINKER_RWSET_DECLARE - Declares a read-write linker set
40.3.16. RTEMS_LINKER_RWSET - Defines a read-write linker set
40.3.17. RTEMS_LINKER_RWSET_ITEM_DECLARE - Declares a read-write linker set item
40.3.18. RTEMS_LINKER_RWSET_ITEM_ORDERED_DECLARE - Declares an ordered read-write linker set item
40.3.19. RTEMS_LINKER_RWSET_ITEM_REFERENCE - References a read-write linker set item
40.3.20. RTEMS_LINKER_RWSET_ITEM - Defines a read-write linker set item
40.3.21. RTEMS_LINKER_RWSET_ITEM_ORDERED - Defines an ordered read-write linker set item
40.3.22. RTEMS_LINKER_RWSET_CONTENT - Marks a declaration as a read-write linker set content
41. Directive Status Codes
41.1. Introduction
41.2. Directives
41.2.1. STATUS_TEXT - Returns the enumeration name for a status code
42. Example Application
43. Glossary
44. References
Index
RTEMS Classic API Guide
Index
Index
Symbols
|
_
|
A
|
B
|
C
|
D
|
E
|
F
|
G
|
H
|
I
|
K
|
L
|
M
|
N
|
O
|
P
|
Q
|
R
|
S
|
T
|
U
|
V
|
W
|
Y
|
Z
Symbols
/dev/null
/dev/zero
_
_Terminate
A
ABI
active
Ada
add memory
add memory to a region
AMP
announce
announce fatal error
APA
aperiodic task
,
[1]
API
application
Application architecture
ASR
,
[1]
ASR mode
ASR vs. ISR
assembler language
asynchronous
Asynchronous Signal Routine
asynchronous signal routine
atomic operations
attach a thread to server
awakened
B
barrier
BCB
big endian
binary semaphores
bit-mapped
block
blocked task
Board Support Package
Board Support Packages
broadcast
broadcast message to a queue
BSP
,
[1]
BSP_output_char_function_type
BSP_polling_getchar_function_type
BSPs
buffer
buffers
building
,
[1]
,
[2]
,
[3]
,
[4]
,
[5]
,
[6]
,
[7]
C
C language
C Program Heap
C++11
C++14
C++17
C++20
C11
C17
cache
calling convention
cancel a period
cancel a timer
cbs
CBS limitations
CBS parameters
CCB
Central Processing Unit
chain
chain append a node
chain append a node unprotected
chain extract a node
chain extract a node unprotected
chain get first node
,
[1]
chain get head
chain get tail
chain initialize
chain initialize empty
chain insert a node
chain insert a node unprotected
chain is chain empty
chain is node null
chain is node the first
chain is node the head
chain is node the last
chain is node the tail
chain iterate
chain only one node
,
[1]
chains
chare are nodes equal
cleanup the CBS library
clear C Program Heap
clear RTEMS Workspace
clock
Clock Driver
clock tick
clock tick quantum
CLOCK_MONOTONIC
CLOCK_REALTIME
close a device
cluster
coalesce
communication and synchronization
conclude current period
Configuration Table
configure message queue buffer memory
CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER
CONFIGURE_APPLICATION_EXTRA_DRIVERS
CONFIGURE_APPLICATION_NEEDS_ATA_DRIVER
CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
CONFIGURE_APPLICATION_NEEDS_FRAME_BUFFER_DRIVER
CONFIGURE_APPLICATION_NEEDS_IDE_DRIVER
CONFIGURE_APPLICATION_NEEDS_LIBBLOCK
CONFIGURE_APPLICATION_NEEDS_NULL_DRIVER
CONFIGURE_APPLICATION_NEEDS_RTC_DRIVER
CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER
CONFIGURE_APPLICATION_NEEDS_SIMPLE_TASK_CONSOLE_DRIVER
CONFIGURE_APPLICATION_NEEDS_STUB_DRIVER
CONFIGURE_APPLICATION_NEEDS_TIMER_DRIVER
CONFIGURE_APPLICATION_NEEDS_WATCHDOG_DRIVER
CONFIGURE_APPLICATION_NEEDS_ZERO_DRIVER
CONFIGURE_APPLICATION_PREREQUISITE_DRIVERS
CONFIGURE_ATA_DRIVER_TASK_PRIORITY
CONFIGURE_BDBUF_BUFFER_COUNT
CONFIGURE_BDBUF_BUFFER_MAX_SIZE
CONFIGURE_BDBUF_BUFFER_MIN_SIZE
CONFIGURE_BDBUF_BUFFER_SIZE
CONFIGURE_BDBUF_CACHE_MEMORY_SIZE
CONFIGURE_BDBUF_MAX_READ_AHEAD_BLOCKS
CONFIGURE_BDBUF_MAX_WRITE_BLOCKS
CONFIGURE_BDBUF_READ_AHEAD_TASK_PRIORITY
CONFIGURE_BDBUF_TASK_STACK_SIZE
CONFIGURE_CBS_MAXIMUM_SERVERS
CONFIGURE_DIRTY_MEMORY
CONFIGURE_DISABLE_BSP_SETTINGS
CONFIGURE_DISABLE_CLASSIC_API_NOTEPADS
CONFIGURE_DISABLE_NEWLIB_REENTRANCY
CONFIGURE_ENABLE_GO
CONFIGURE_EXCEPTION_TO_SIGNAL_MAPPING
CONFIGURE_EXECUTIVE_RAM_SIZE
CONFIGURE_EXTRA_MPCI_RECEIVE_SERVER_STACK
CONFIGURE_EXTRA_TASK_STACKS
CONFIGURE_FILESYSTEM_ALL
CONFIGURE_FILESYSTEM_DOSFS
CONFIGURE_FILESYSTEM_FTPFS
CONFIGURE_FILESYSTEM_IMFS
CONFIGURE_FILESYSTEM_JFFS2
CONFIGURE_FILESYSTEM_NFS
CONFIGURE_FILESYSTEM_RFS
CONFIGURE_FILESYSTEM_TFTPFS
CONFIGURE_GNAT_RTEMS
CONFIGURE_HAS_OWN_BDBUF_TABLE
CONFIGURE_HAS_OWN_CONFIGURATION_TABLE
CONFIGURE_HAS_OWN_DEVICE_DRIVER_TABLE
CONFIGURE_HAS_OWN_INIT_TASK_TABLE
CONFIGURE_HAS_OWN_MOUNT_TABLE
CONFIGURE_HAS_OWN_MULTIPROCESSING_TABLE
CONFIGURE_IDLE_TASK_BODY
CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION
CONFIGURE_IDLE_TASK_STACK_SIZE
CONFIGURE_IDLE_TASK_STORAGE_SIZE
CONFIGURE_IMFS_DISABLE_CHMOD
CONFIGURE_IMFS_DISABLE_CHOWN
CONFIGURE_IMFS_DISABLE_LINK
CONFIGURE_IMFS_DISABLE_MKNOD
CONFIGURE_IMFS_DISABLE_MKNOD_DEVICE
CONFIGURE_IMFS_DISABLE_MKNOD_FILE
CONFIGURE_IMFS_DISABLE_MOUNT
CONFIGURE_IMFS_DISABLE_READDIR
CONFIGURE_IMFS_DISABLE_READLINK
CONFIGURE_IMFS_DISABLE_RENAME
CONFIGURE_IMFS_DISABLE_RMNOD
CONFIGURE_IMFS_DISABLE_SYMLINK
CONFIGURE_IMFS_DISABLE_UNMOUNT
CONFIGURE_IMFS_DISABLE_UTIME
CONFIGURE_IMFS_ENABLE_MKFIFO
CONFIGURE_IMFS_MEMFILE_BYTES_PER_BLOCK
CONFIGURE_INIT
CONFIGURE_INIT_TASK_ARGUMENTS
CONFIGURE_INIT_TASK_ATTRIBUTES
CONFIGURE_INIT_TASK_CONSTRUCT_STORAGE_SIZE
CONFIGURE_INIT_TASK_ENTRY_POINT
CONFIGURE_INIT_TASK_INITIAL_MODES
CONFIGURE_INIT_TASK_NAME
CONFIGURE_INIT_TASK_PRIORITY
CONFIGURE_INIT_TASK_STACK_SIZE
CONFIGURE_INITIAL_EXTENSIONS
CONFIGURE_INTERRUPT_STACK_SIZE
CONFIGURE_JFFS2_DELAYED_WRITE_TASK_PRIORITY
CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS
CONFIGURE_MALLOC_DIRTY
CONFIGURE_MAXIMUM_ADA_TASKS
CONFIGURE_MAXIMUM_BARRIERS
CONFIGURE_MAXIMUM_DEVICES
CONFIGURE_MAXIMUM_DRIVERS
CONFIGURE_MAXIMUM_FAKE_ADA_TASKS
CONFIGURE_MAXIMUM_FILE_DESCRIPTORS
CONFIGURE_MAXIMUM_GO_CHANNELS
CONFIGURE_MAXIMUM_GOROUTINES
CONFIGURE_MAXIMUM_MESSAGE_QUEUES
CONFIGURE_MAXIMUM_MRSP_SEMAPHORES
CONFIGURE_MAXIMUM_PARTITIONS
CONFIGURE_MAXIMUM_PERIODS
CONFIGURE_MAXIMUM_PORTS
CONFIGURE_MAXIMUM_POSIX_BARRIERS
CONFIGURE_MAXIMUM_POSIX_CONDITION_VARIABLES
CONFIGURE_MAXIMUM_POSIX_KEY_VALUE_PAIRS
CONFIGURE_MAXIMUM_POSIX_KEYS
CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUE_DESCRIPTORS
CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUES
CONFIGURE_MAXIMUM_POSIX_MUTEXES
CONFIGURE_MAXIMUM_POSIX_QUEUED_SIGNALS
CONFIGURE_MAXIMUM_POSIX_RWLOCKS
CONFIGURE_MAXIMUM_POSIX_SEMAPHORES
CONFIGURE_MAXIMUM_POSIX_SHMS
CONFIGURE_MAXIMUM_POSIX_SPINLOCKS
CONFIGURE_MAXIMUM_POSIX_THREADS
CONFIGURE_MAXIMUM_POSIX_TIMERS
CONFIGURE_MAXIMUM_PRIORITY
CONFIGURE_MAXIMUM_PROCESSORS
CONFIGURE_MAXIMUM_REGIONS
CONFIGURE_MAXIMUM_SEMAPHORES
CONFIGURE_MAXIMUM_TASKS
CONFIGURE_MAXIMUM_THREAD_LOCAL_STORAGE_SIZE
CONFIGURE_MAXIMUM_THREAD_NAME_SIZE
CONFIGURE_MAXIMUM_TIMERS
CONFIGURE_MAXIMUM_USER_EXTENSIONS
CONFIGURE_MEMORY_OVERHEAD
CONFIGURE_MESSAGE_BUFFER_MEMORY
CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE
CONFIGURE_MICROSECONDS_PER_TICK
CONFIGURE_MINIMUM_POSIX_THREAD_STACK_SIZE
CONFIGURE_MINIMUM_TASK_STACK_SIZE
CONFIGURE_MINIMUM_TASKS_WITH_USER_PROVIDED_STORAGE
CONFIGURE_MP_APPLICATION
CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS
CONFIGURE_MP_MAXIMUM_NODES
CONFIGURE_MP_MAXIMUM_PROXIES
CONFIGURE_MP_MPCI_TABLE_POINTER
CONFIGURE_MP_NODE_NUMBER
CONFIGURE_NUMBER_OF_TERMIOS_PORTS
CONFIGURE_POSIX_HAS_OWN_INIT_THREAD_TABLE
CONFIGURE_POSIX_INIT_THREAD_ENTRY_POINT
CONFIGURE_POSIX_INIT_THREAD_STACK_SIZE
CONFIGURE_POSIX_INIT_THREAD_TABLE
CONFIGURE_POSIX_TIMERS_FACE_BEHAVIOR
CONFIGURE_RECORD_EXTENSIONS_ENABLED
CONFIGURE_RECORD_FATAL_DUMP_BASE64
CONFIGURE_RECORD_FATAL_DUMP_BASE64_ZLIB
CONFIGURE_RECORD_INTERRUPTS_ENABLED
CONFIGURE_RECORD_PER_PROCESSOR_ITEMS
CONFIGURE_RTEMS_INIT_TASKS_TABLE
CONFIGURE_SCHEDULER_ASSIGNMENTS
CONFIGURE_SCHEDULER_CBS
CONFIGURE_SCHEDULER_EDF
CONFIGURE_SCHEDULER_EDF_SMP
CONFIGURE_SCHEDULER_NAME
CONFIGURE_SCHEDULER_PRIORITY
CONFIGURE_SCHEDULER_PRIORITY_AFFINITY_SMP
CONFIGURE_SCHEDULER_PRIORITY_SMP
CONFIGURE_SCHEDULER_SIMPLE
CONFIGURE_SCHEDULER_SIMPLE_SMP
CONFIGURE_SCHEDULER_STRONG_APA
CONFIGURE_SCHEDULER_TABLE_ENTRIES
CONFIGURE_SCHEDULER_USER
CONFIGURE_SMP_APPLICATION
CONFIGURE_SMP_MAXIMUM_PROCESSORS
CONFIGURE_STACK_CHECKER_ENABLED
CONFIGURE_SWAPOUT_BLOCK_HOLD
CONFIGURE_SWAPOUT_SWAP_PERIOD
CONFIGURE_SWAPOUT_TASK_PRIORITY
CONFIGURE_SWAPOUT_WORKER_TASK_PRIORITY
CONFIGURE_SWAPOUT_WORKER_TASKS
CONFIGURE_TASK_STACK_ALLOCATOR
CONFIGURE_TASK_STACK_ALLOCATOR_AVOIDS_WORK_SPACE
CONFIGURE_TASK_STACK_ALLOCATOR_FOR_IDLE
CONFIGURE_TASK_STACK_ALLOCATOR_INIT
CONFIGURE_TASK_STACK_DEALLOCATOR
CONFIGURE_TASK_STACK_FROM_ALLOCATOR
CONFIGURE_TERMIOS_DISABLED
CONFIGURE_TICKS_PER_TIMESLICE
CONFIGURE_UNIFIED_WORK_AREAS
CONFIGURE_UNLIMITED_ALLOCATION_SIZE
CONFIGURE_UNLIMITED_OBJECTS
CONFIGURE_USE_DEVFS_AS_BASE_FILESYSTEM
CONFIGURE_USE_MINIIMFS_AS_BASE_FILESYSTEM
CONFIGURE_VERBOSE_SYSTEM_INITIALIZATION
CONFIGURE_ZERO_WORKSPACE_AUTOMATICALLY
configuring a system
constant bandwidth server scheduling
context
context switch
control block
convert external to internal address
convert internal to external address
core
counting semaphores
CPU
CPU Usage
create a barrier
create a message queue
create a new bandwidth server
create a partition
create a period
create a port
create a region
create a regulator
create a semaphore
create a task
create a timer
create an extension set
critical section
CRT
current priority
current task mode
current task priority
,
[1]
D
data types
deadline
definition
,
[1]
,
[2]
,
[3]
,
[4]
,
[5]
,
[6]
,
[7]
,
[8]
,
[9]
,
[10]
,
[11]
,
[12]
,
[13]
,
[14]
,
[15]
,
[16]
,
[17]
,
[18]
,
[19]
delay a task for a count of clock ticks
delay a task until a wall time
delays
delete a barrier
delete a message queue
delete a partition
delete a period
delete a port
delete a region
delete a regulator
delete a semaphore
delete a task
delete a timer
delete an extension set
deleting a task
destroy a bandwidth server
detach a thread from server
device
device driver
device driver interface
Device Driver Table
,
[1]
device drivers
device names
directives
disable interrupts
,
[1]
disabling interrupts
dispatch
dispatching
distributed multiprocessing
Doorstop
dormant
DPCB
dual ported memory
,
[1]
dual-ported
dynamic extension sets
E
earliest deadline first scheduling
EARS
EDF
ELF
eligible priority
eligible scheduler
embedded
enable interrupts
,
[1]
entry point
envelope
error code
ESCB
establish an ASR
establish an ISR
event condition
event flag
event set
,
[1]
events
,
[1]
exception
exception frame
executing task
executive
exported
extension forward order
extension reverse order
external address
external addresses
F
fatal error
,
[1]
,
[2]
fatal error detection
fatal error processing
fatal error user extension
fatal errors
FIFO
fire a task-based timer at time of day
fire a timer after an interval
fire a timer at time of day
fire task-based a timer after an interval
First In First Out
flash interrupts
floating point
floating point coprocessor
flush a semaphore
flush messages on a queue
formal model
freed
Futex
G
GCC
get an ID of a server
get buffer from partition
get class from object ID
get elapsed execution time
get ID of a partition
get index from object ID
get node from object ID
get number of pending messages
get per-task variable
get remaining execution time
get scheduler approved execution time
get scheduling parameters of a server
get segment from region
get size of segment
get statistics of period
get status of period
get task mode
get task notepad entry
get task preemption mode
get task priority
,
[1]
getchark()
global
global construction
,
[1]
global objects
global objects table
global scope
GNAT
GNU
GPL
GPLv2
GPLv3
GR712RC
GR740
H
handler
hard real-time system
heap
heir task
helping priority
helping scheduler
heterogeneous
heterogeneous multiprocessing
higher priority
home scheduler
homogeneous
I
I/O
ID
IDLE task
IDLE task storage size
immediate ceiling priority protocol
ineligible scheduler
initial extension sets
initialization tasks
initialize a device driver
initialize RTEMS
initialize the CBS library
initiate the Timer Server
install an ASR
install an ISR
interface
internal address
internal addresses
Internal Architecture
interrupt
interrupt level
,
[1]
interrupt levels
interrupt processing
interrupt service
Interrupt Service Routine
interrupt stack size
interrupts
IO control
IO Manager
is interrupt in progress
ISR
ISR vs. ASR
ISVV
K
kernel
Kernel Character I/O Support
L
Last In First Out
libpci
LIFO
Linear Temporal Logic
linkersets
list
little endian
LLVM
local
local operation
local scope
lock a semaphore
locking protocols
logical address
loosely-coupled
lower priority
LTL
M
major device number
major number
manager
manual round robin
maximum file descriptors
maximum priority
maximum thread name size
MCS
memory for a single message queue's buffers
memory for task tasks
memory management
memory pool
message
message buffer
message queue
message queue attributes
Message Queue Control Block
message queues
messages
minimum POSIX thread stack size
minimum task stack size
minor device number
minor number
mode
MPCI
,
[1]
MPCI and remote operations
MPCI entry points
MrsP
multiprocessing
,
[1]
,
[2]
multiprocessing topologies
multiprocessor
Multiprocessor Communications Interface Layer
Multiprocessor Configuration Table
Multiprocessor Resource Sharing Protocol (MrsP)
multitasking
mutual exclusion
,
[1]
N
nested
node
nodes
non-existent
NTP
NUMA
number of priority levels
numeric coprocessor
O
O(m) Independence-Preserving Protocol (OMIP)
OBC
object
object id
object id composition
object manipulation
object name
object-oriented
objects
obtain a semaphore
obtain buffer from partition
obtain buffer from regulator
obtain ID of a partition
obtain ID of caller
obtain per-task variable
obtain region information
obtain region information on free blocks
obtain statistics from regulator
obtain statistics of period
obtain status of period
obtain task mode
obtain task priority
,
[1]
obtain the ID of a timer
obtain the time of day
obtaining class from object ID
obtaining index from object ID
obtaining node from object ID
OMIP
open a device
OpenMP
operating system
overhead
P
packet
panic
partition
,
[1]
partition attribute set
Partition Control Block
partitions
PCB
PCI
PCI address translation
PCI Interrupt
PCI_LIB_AUTO
PCI_LIB_PERIPHERAL
PCI_LIB_READ
PCI_LIB_STATIC
pending
per-task variable
,
[1]
period initiation
period statistics report
,
[1]
periodic task
,
[1]
periodic tasks
physical address
poll
pool
portability
ports
POSIX
posting
PPS
preempt
preemption
,
[1]
prepend node
prepend node unprotected
print period statistics report
,
[1]
printk()
priority
,
[1]
priority boosting
priority ceiling protocol
priority inheritance
priority inheritance protocol
priority inversion
,
[1]
priority scheduling
processor utilization
proxy
,
[1]
Proxy Control Block
PTCB
put message at front of queue
putk()
PXCB
Q
QCB
quantum
queue
R
rate mononitonic tasks
Rate Monotonic Scheduling Algorithm
rbtree doc
rbtrees
read from a device
ready task
real priority
real-time
Real-time applications
Real-time executive
receive message from a queue
Red-Black Trees
reentrant
refinement
region
,
[1]
,
[2]
region attribute set
Region Control Block
regions
register a device driver
register a device in the file system
registers
regulator
reification
release a barrier
release a semaphore
release buffer back to regulator
remote
remote operation
ReqIF
reset a timer
reset statistics of all periods
reset statistics of period
resize segment
resource
restarting a task
restore interrupt level
,
[1]
resume
resuming a task
return buffer to partition
return code
return segment to region
return value
RMS Algorithm
RMS First Deadline Rule
RMS Processor Utilization Rule
RMS schedulability analysis
RNCB
round robin scheduling
round-robin
RS-232
RTEMS
RTEMS Data Types
RTEMS epoch
rtems extensions table index
RTEMS Workspace
rtems_api_configuration_table
rtems_asr
,
[1]
,
[2]
rtems_asr_entry
rtems_assert_context
rtems_attribute
rtems_barrier_create()
rtems_barrier_delete()
rtems_barrier_ident()
,
[1]
rtems_barrier_release()
rtems_barrier_wait()
rtems_build_id()
rtems_build_name()
,
[1]
rtems_cache_aligned_malloc()
rtems_cache_disable_data()
rtems_cache_disable_instruction()
rtems_cache_enable_data()
rtems_cache_enable_instruction()
rtems_cache_flush_entire_data()
rtems_cache_flush_multiple_data_lines()
rtems_cache_get_data_cache_size()
rtems_cache_get_data_line_size()
rtems_cache_get_instruction_cache_size()
rtems_cache_get_instruction_line_size()
rtems_cache_get_maximal_line_size()
rtems_cache_instruction_sync_after_code_change()
rtems_cache_invalidate_entire_data()
rtems_cache_invalidate_entire_instruction()
rtems_cache_invalidate_multiple_data_lines()
rtems_cache_invalidate_multiple_instruction_lines()
rtems_cbs_attach_thread()
rtems_cbs_cleanup()
rtems_cbs_create_server()
rtems_cbs_destroy_server()
rtems_cbs_detach_thread()
rtems_cbs_get_approved_budget()
rtems_cbs_get_execution_time()
rtems_cbs_get_parameters()
rtems_cbs_get_remaining_budget()
rtems_cbs_get_server_id()
rtems_cbs_initialize()
rtems_cbs_parameters
rtems_cbs_set_parameters()
rtems_chain_append()
rtems_chain_append_unprotected()
rtems_chain_are_nodes_equal()
rtems_chain_extract()
rtems_chain_extract_unprotected()
rtems_chain_get()
rtems_chain_get_unprotected()
rtems_chain_has_only_one_node()
rtems_chain_head()
rtems_chain_initialize()
rtems_chain_initialize_empty()
rtems_chain_insert()
rtems_chain_insert_unprotected()
rtems_chain_is_empty()
rtems_chain_is_first()
rtems_chain_is_head()
rtems_chain_is_last()
rtems_chain_is_null_node()
rtems_chain_is_tail()
rtems_chain_node_count_unprotected()
rtems_chain_prepend()
rtems_chain_prepend_unprotected()
rtems_chain_tail()
rtems_clock_get()
rtems_clock_get_boot_time()
rtems_clock_get_boot_time_bintime()
rtems_clock_get_boot_time_timeval()
rtems_clock_get_monotonic()
rtems_clock_get_monotonic_bintime()
rtems_clock_get_monotonic_coarse()
rtems_clock_get_monotonic_coarse_bintime()
rtems_clock_get_monotonic_coarse_timeval()
rtems_clock_get_monotonic_sbintime()
rtems_clock_get_monotonic_timeval()
rtems_clock_get_options
rtems_clock_get_realtime()
rtems_clock_get_realtime_bintime()
rtems_clock_get_realtime_coarse()
rtems_clock_get_realtime_coarse_bintime()
rtems_clock_get_realtime_coarse_timeval()
rtems_clock_get_realtime_timeval()
rtems_clock_get_seconds_since_epoch()
rtems_clock_get_ticks_per_second()
rtems_clock_get_ticks_since_boot()
rtems_clock_get_tod()
rtems_clock_get_tod_timeval()
rtems_clock_get_uptime()
rtems_clock_get_uptime_nanoseconds()
rtems_clock_get_uptime_seconds()
rtems_clock_get_uptime_timeval()
rtems_clock_set()
rtems_clock_tick_before()
rtems_clock_tick_later()
rtems_clock_tick_later_usec()
rtems_configuration_get_do_zero_of_workspace()
rtems_configuration_get_idle_task()
rtems_configuration_get_idle_task_stack_size()
rtems_configuration_get_interrupt_stack_size()
rtems_configuration_get_maximum_barriers()
rtems_configuration_get_maximum_extensions()
rtems_configuration_get_maximum_message_queues()
rtems_configuration_get_maximum_partitions()
rtems_configuration_get_maximum_periods()
rtems_configuration_get_maximum_ports()
rtems_configuration_get_maximum_processors()
rtems_configuration_get_maximum_regions()
rtems_configuration_get_maximum_semaphores()
rtems_configuration_get_maximum_tasks()
rtems_configuration_get_maximum_timers()
rtems_configuration_get_microseconds_per_tick()
rtems_configuration_get_milliseconds_per_tick()
rtems_configuration_get_nanoseconds_per_tick()
rtems_configuration_get_number_of_initial_extensions()
rtems_configuration_get_rtems_api_configuration()
rtems_configuration_get_stack_allocate_for_idle_hook()
rtems_configuration_get_stack_allocate_hook()
rtems_configuration_get_stack_allocate_init_hook()
rtems_configuration_get_stack_allocator_avoids_work_space()
rtems_configuration_get_stack_free_hook()
rtems_configuration_get_stack_space_size()
rtems_configuration_get_ticks_per_timeslice()
rtems_configuration_get_unified_work_area()
rtems_configuration_get_user_extension_table()
rtems_configuration_get_user_multiprocessing_table()
rtems_configuration_get_work_space_size()
rtems_cpu_usage_report()
rtems_cpu_usage_reset()
rtems_device_driver
rtems_device_driver_entry
rtems_device_major_number
,
[1]
rtems_device_minor_number
,
[1]
rtems_driver_address_table
rtems_event_receive()
rtems_event_send()
rtems_event_set
,
[1]
rtems_exception_frame
rtems_exception_frame_print()
rtems_extension_create()
rtems_extension_delete()
rtems_extension_ident()
,
[1]
rtems_extensions_table
,
[1]
rtems_fatal()
rtems_fatal_code
rtems_fatal_error_occurred()
rtems_fatal_extension
,
[1]
rtems_fatal_source
rtems_fatal_source_text()
rtems_get_build_label()
rtems_get_copyright_notice()
rtems_get_target_hash()
rtems_get_version_string()
RTEMS_GLOBAL
,
[1]
rtems_id
,
[1]
rtems_initialization_tasks_table
rtems_initialize_executive()
rtems_internal_error_text()
rtems_interrupt_attributes
rtems_interrupt_catch()
rtems_interrupt_clear()
rtems_interrupt_disable()
rtems_interrupt_enable()
rtems_interrupt_entry
rtems_interrupt_entry_initialize()
RTEMS_INTERRUPT_ENTRY_INITIALIZER()
rtems_interrupt_entry_install()
rtems_interrupt_entry_remove()
rtems_interrupt_flash()
rtems_interrupt_get_affinity()
rtems_interrupt_get_attributes()
rtems_interrupt_get_priority()
rtems_interrupt_handler
rtems_interrupt_handler_install()
rtems_interrupt_handler_iterate()
rtems_interrupt_handler_remove()
rtems_interrupt_is_in_progress()
rtems_interrupt_is_pending()
rtems_interrupt_level
rtems_interrupt_local_disable()
rtems_interrupt_local_enable()
rtems_interrupt_lock
rtems_interrupt_lock_acquire()
rtems_interrupt_lock_acquire_isr()
rtems_interrupt_lock_context
RTEMS_INTERRUPT_LOCK_DECLARE()
RTEMS_INTERRUPT_LOCK_DEFINE()
rtems_interrupt_lock_destroy()
rtems_interrupt_lock_initialize()
RTEMS_INTERRUPT_LOCK_INITIALIZER()
rtems_interrupt_lock_interrupt_disable()
RTEMS_INTERRUPT_LOCK_MEMBER()
RTEMS_INTERRUPT_LOCK_REFERENCE()
rtems_interrupt_lock_release()
rtems_interrupt_lock_release_isr()
rtems_interrupt_per_handler_routine
rtems_interrupt_raise()
rtems_interrupt_raise_on()
rtems_interrupt_server_action
rtems_interrupt_server_action_prepend()
rtems_interrupt_server_config
rtems_interrupt_server_control
rtems_interrupt_server_create()
rtems_interrupt_server_delete()
rtems_interrupt_server_entry
rtems_interrupt_server_entry_destroy()
rtems_interrupt_server_entry_initialize()
rtems_interrupt_server_entry_move()
rtems_interrupt_server_entry_submit()
rtems_interrupt_server_handler_install()
rtems_interrupt_server_handler_iterate()
rtems_interrupt_server_handler_remove()
rtems_interrupt_server_initialize()
rtems_interrupt_server_move()
rtems_interrupt_server_request
rtems_interrupt_server_request_destroy()
rtems_interrupt_server_request_initialize()
rtems_interrupt_server_request_set_vector()
rtems_interrupt_server_request_submit()
rtems_interrupt_server_resume()
rtems_interrupt_server_set_affinity()
rtems_interrupt_server_suspend()
rtems_interrupt_set_affinity()
rtems_interrupt_set_priority()
rtems_interrupt_signal_variant
rtems_interrupt_vector_disable()
rtems_interrupt_vector_enable()
rtems_interrupt_vector_is_enabled()
rtems_interval
,
[1]
rtems_io_close()
rtems_io_control()
rtems_io_initialize()
rtems_io_open()
rtems_io_read()
rtems_io_register_driver()
rtems_io_register_name()
rtems_io_unregister_driver()
rtems_io_write()
rtems_isr
,
[1]
rtems_isr_entry
rtems_iterate_over_all_threads()
RTEMS_LINKER_ROSET
RTEMS_LINKER_ROSET_CONTENT
RTEMS_LINKER_ROSET_DECLARE
RTEMS_LINKER_ROSET_ITEM
RTEMS_LINKER_ROSET_ITEM_DECLARE
RTEMS_LINKER_ROSET_ITEM_ORDERED
RTEMS_LINKER_ROSET_ITEM_ORDERED_DECLARE
RTEMS_LINKER_ROSET_ITEM_REFERENCE
RTEMS_LINKER_RWSET
RTEMS_LINKER_RWSET_CONTENT
RTEMS_LINKER_RWSET_DECLARE
RTEMS_LINKER_RWSET_ITEM
RTEMS_LINKER_RWSET_ITEM_DECLARE
RTEMS_LINKER_RWSET_ITEM_ORDERED
RTEMS_LINKER_RWSET_ITEM_ORDERED_DECLARE
RTEMS_LINKER_RWSET_ITEM_REFERENCE
RTEMS_LINKER_SET_BEGIN
RTEMS_LINKER_SET_END
RTEMS_LINKER_SET_FOREACH
RTEMS_LINKER_SET_IS_EMPTY
RTEMS_LINKER_SET_ITEM_COUNT
RTEMS_LINKER_SET_SIZE
RTEMS_LOCAL
rtems_message_queue_broadcast()
RTEMS_MESSAGE_QUEUE_BUFFER()
rtems_message_queue_config
rtems_message_queue_construct()
rtems_message_queue_create()
rtems_message_queue_delete()
rtems_message_queue_flush()
rtems_message_queue_get_number_pending()
rtems_message_queue_ident()
,
[1]
rtems_message_queue_receive()
rtems_message_queue_send()
rtems_message_queue_urgent()
rtems_mode
rtems_mp_packet_classes
rtems_mpci_entry
,
[1]
rtems_mpci_get_packet_entry
rtems_mpci_initialization_entry
rtems_mpci_receive_packet_entry
rtems_mpci_return_packet_entry
rtems_mpci_send_packet_entry
rtems_mpci_table
rtems_multiprocessing_announce()
rtems_multiprocessing_table
rtems_name
,
[1]
rtems_object_api_class_information
rtems_object_api_maximum_class()
rtems_object_api_minimum_class()
rtems_object_get_api_class_name()
rtems_object_get_api_name()
rtems_object_get_class_information()
rtems_object_get_classic_name()
rtems_object_get_local_node()
rtems_object_get_name()
,
[1]
rtems_object_id_api_maximum()
rtems_object_id_api_minimum()
rtems_object_id_get_api()
,
[1]
rtems_object_id_get_class()
,
[1]
rtems_object_id_get_index()
,
[1]
rtems_object_id_get_node()
,
[1]
RTEMS_OBJECT_ID_INITIAL()
rtems_object_set_name()
rtems_option
rtems_packet_prefix
rtems_panic()
rtems_partition_create()
rtems_partition_delete()
rtems_partition_get_buffer()
rtems_partition_ident()
,
[1]
rtems_partition_return_buffer()
rtems_port_create()
rtems_port_delete()
rtems_port_external_to_internal()
rtems_port_ident()
,
[1]
rtems_port_internal_to_external()
rtems_printk_printer()
rtems_put_char()
rtems_putc()
rtems_rate_monotonic_cancel()
rtems_rate_monotonic_create()
rtems_rate_monotonic_delete()
rtems_rate_monotonic_get_statistics()
rtems_rate_monotonic_get_status()
rtems_rate_monotonic_ident()
rtems_rate_monotonic_period()
rtems_rate_monotonic_period_states
rtems_rate_monotonic_period_statistics
rtems_rate_monotonic_period_status
rtems_rate_monotonic_report_statistics()
rtems_rate_monotonic_report_statistics_with_plugin()
rtems_rate_monotonic_reset_all_statistics()
rtems_rate_monotonic_reset_statistics()
rtems_region_create()
rtems_region_delete()
rtems_region_extend()
rtems_region_get_free_information()
rtems_region_get_information()
rtems_region_get_segment()
rtems_region_get_segment_size()
rtems_region_ident()
,
[1]
rtems_region_resize_segment()
rtems_region_return_segment()
rtems_regulator_attributes
rtems_regulator_create()
rtems_regulator_delete()
rtems_regulator_deliverer
rtems_regulator_get_statistics()
rtems_regulator_obtain_buffer()
rtems_regulator_release_buffer()
rtems_regulator_send()
rtems_regulator_statistics
rtems_resource_is_unlimited()
rtems_resource_maximum_per_allocation()
rtems_resource_unlimited()
rtems_scheduler_add_processor()
rtems_scheduler_get_maximum_priority()
rtems_scheduler_get_processor()
rtems_scheduler_get_processor_maximum()
rtems_scheduler_get_processor_set()
rtems_scheduler_ident()
rtems_scheduler_ident_by_processor()
rtems_scheduler_ident_by_processor_set()
rtems_scheduler_map_priority_from_posix()
rtems_scheduler_map_priority_to_posix()
rtems_scheduler_remove_processor()
rtems_semaphore_create()
rtems_semaphore_delete()
rtems_semaphore_flush()
rtems_semaphore_ident()
,
[1]
rtems_semaphore_obtain()
rtems_semaphore_release()
rtems_semaphore_set_priority()
rtems_shutdown_executive()
rtems_signal_catch()
rtems_signal_send()
rtems_signal_set
,
[1]
rtems_stack_allocate_hook
rtems_stack_allocate_init_hook
rtems_stack_free_hook
rtems_status_code
,
[1]
rtems_status_text()
rtems_task
,
[1]
rtems_task_argument
rtems_task_begin_extension
,
[1]
rtems_task_config
rtems_task_construct()
rtems_task_create()
rtems_task_create_extension
rtems_task_create_extension()
rtems_task_delete()
rtems_task_delete_extension
,
[1]
rtems_task_entry
rtems_task_exit()
rtems_task_exitted_extension
,
[1]
rtems_task_get_affinity()
rtems_task_get_note()
,
[1]
rtems_task_get_priority()
rtems_task_get_scheduler()
rtems_task_ident()
,
[1]
rtems_task_is_suspended()
rtems_task_iterate()
rtems_task_mode
rtems_task_mode()
rtems_task_priority
,
[1]
rtems_task_restart()
rtems_task_restart_extension
,
[1]
rtems_task_resume()
rtems_task_self()
rtems_task_set_affinity()
rtems_task_set_note()
,
[1]
rtems_task_set_priority()
rtems_task_set_scheduler()
rtems_task_start()
rtems_task_start_extension
,
[1]
RTEMS_TASK_STORAGE_SIZE()
rtems_task_suspend()
rtems_task_switch_extension
,
[1]
rtems_task_terminate_extension
,
[1]
rtems_task_variable_add()
,
[1]
rtems_task_variable_delete()
,
[1]
rtems_task_variable_get()
,
[1]
rtems_task_visitor
rtems_task_wake_after()
rtems_task_wake_when()
rtems_tcb
rtems_time_of_day
,
[1]
,
[2]
rtems_timer_cancel()
rtems_timer_create()
rtems_timer_delete()
rtems_timer_fire_after()
rtems_timer_fire_when()
rtems_timer_get_information()
rtems_timer_ident()
,
[1]
rtems_timer_information
rtems_timer_initiate_server()
rtems_timer_reset()
rtems_timer_server_fire_after()
rtems_timer_server_fire_when()
rtems_timer_service_routine
,
[1]
rtems_timer_service_routine_entry
rtems_timespec_add_to()
rtems_timespec_divide()
rtems_timespec_divide_by_integer()
rtems_timespec_equal_to()
rtems_timespec_from_ticks()
rtems_timespec_get_nanoseconds()
rtems_timespec_get_seconds()
rtems_timespec_greater_than()
rtems_timespec_is_valid()
rtems_timespec_less_than()
rtems_timespec_set()
rtems_timespec_subtract()
rtems_timespec_to_ticks()
rtems_timespec_zero()
rtems_vector_number
,
[1]
running
runtime driver registration
S
sbintime_t
scenario
schedulable
schedule
scheduled task
scheduler
scheduler instance
scheduling
scheduling algorithms
scheduling mechanisms
segment
segments
semantics
semaphore
Semaphore Control Block
semaphores
send buffer to regulator for delivery
send message to a queue
send signal set
separate work areas
set priority by scheduler for a semaphore
set scheduling parameters
set struct timespec instance
set task mode
set task notepad entry
set task preemption mode
set task priority
shared memory
shutdown RTEMS
signal
signal set
,
[1]
signals
SIS
SMCB
SMP
,
[1]
SMP barriers
SMP locks
soft real-time system
software component
software item
software product
software unit
source code
SPARC
special device services
sporadic task
,
[1]
stack
,
[1]
Stack Bounds Checker
start current period
start multitasking
starting a task
status code
Status Codes
Strong APA
struct bintime
struct timespec
struct timeval
suspend
suspending a task
Symmetric Multiprocessing
symmetric multiprocessing (SMP)
synchronous
system call
system-on-chip
T
target
target architecture
TAS
task
,
[1]
,
[2]
,
[3]
task affinity
task arguments
task attributes
Task Control Block
task entry
task life states
task memory
task migration
,
[1]
task mode
,
[1]
task name
task priority
,
[1]
,
[2]
task private data
,
[1]
task private variable
,
[1]
task processor affinity
task prototype
task scheduling
task stack allocator
,
[1]
task stack allocator for IDLE tasks
task stack deallocator
task state transitions
task states
task switch
tasks
TCB
TCB extension area
thread
thread affinity
thread dispatch
thread migration
thread queues
tick
tick quantum
ticks per timeslice
tightly-coupled
time
timeout
timeouts
timer
Timer Control Block
Timer_Classes
timers
timeslice
timeslicing
,
[1]
,
[2]
,
[3]
TImespec Helpers
TLS
TMCB
transient overload
TTAS
U
unblock all tasks waiting on a semaphore
unified work areas
uniprocesor
Unix epoch
unlock a semaphore
unregister a device driver
user extension set
User Extension Table
user extensions
,
[1]
User Initialization Tasks Table
user-provided
user-supplied
V
vector
vprintk()
W
wait at a barrier
wait queue
wake up after a count of clock ticks
wake up at a wall time
Weak APA
write to a device
Y
YAML
yield
Z
zero C Program Heap
zero RTEMS Workspace