RTEMS Classic API Guide (6.9e8141c).¶
The authors have used their best efforts in preparing this material. These efforts include the development, research, and testing of the theories and programs to determine their effectiveness. No warranty of any kind, expressed or implied, with regard to the software or the material contained in this document is provided. No liability arising out of the application or use of any product described in this document is assumed. The authors reserve the right to revise this material and to make changes from time to time in the content hereof without obligation to notify anyone of such revision or changes.
The RTEMS Project is hosted at https://www.rtems.org. Any inquiries concerning RTEMS, its related support components, or its documentation should be directed to the RTEMS Project community.
- 1. Preface
- 2. Overview
- 3. Key Concepts
- 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.3. Uniprocessor Schedulers
- 5.4. SMP Schedulers
- 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
- 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.6. Removed Directives
- 8. Interrupt Manager
- 8.1. Introduction
- 8.2. Background
- 8.3. Operations
- 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.3. Operations
- 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
- 10. Timer Manager
- 10.1. Introduction
- 10.2. Background
- 10.3. Operations
- 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.3. Operations
- 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
- 13. Barrier Manager
- 14. Message Manager
- 14.1. Introduction
- 14.2. Background
- 14.3. Operations
- 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
- 16. Signal Manager
- 17. Partition Manager
- 18. Region Manager
- 18.1. Introduction
- 18.2. Background
- 18.3. Operations
- 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
- 20. I/O Manager
- 21. Kernel Character I/O Support
- 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
- 24. Board Support Packages
- 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
- 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.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.13. Event Recording Configuration
- 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.17. Idle Task Configuration
- 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.20. FACE Technical Standard Related Configuration
- 26.21. Multiprocessing Configuration
- 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.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
- 29. Multiprocessing Manager
- 30. Symmetric Multiprocessing (SMP)
- 30.1. Introduction
- 30.2. Background
- 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
- 31. PCI Library
- 32. Stack Bounds Checker
- 33. CPU Usage Statistics
- 34. Object Services
- 34.1. Introduction
- 34.2. Background
- 34.3. Operations
- 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.3. Operations
- 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
- 37. Timespec Helpers
- 37.1. Introduction
- 37.2. Background
- 37.3. Operations
- 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.3. Operations
- 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
- 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
- 42. Example Application
- 43. Glossary
- 44. References