RTEMS Documentation Project
RTEMS Classic API Guide
6.68a44b2
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
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_affinity()
8.4.34. rtems_interrupt_set_affinity()
8.4.35. rtems_interrupt_get_attributes()
8.4.36. rtems_interrupt_handler_iterate()
8.4.37. rtems_interrupt_server_initialize()
8.4.38. rtems_interrupt_server_create()
8.4.39. rtems_interrupt_server_handler_install()
8.4.40. rtems_interrupt_server_handler_remove()
8.4.41. rtems_interrupt_server_set_affinity()
8.4.42. rtems_interrupt_server_delete()
8.4.43. rtems_interrupt_server_suspend()
8.4.44. rtems_interrupt_server_resume()
8.4.45. rtems_interrupt_server_move()
8.4.46. rtems_interrupt_server_handler_iterate()
8.4.47. rtems_interrupt_server_entry_initialize()
8.4.48. rtems_interrupt_server_action_prepend()
8.4.49. rtems_interrupt_server_entry_destroy()
8.4.50. rtems_interrupt_server_entry_submit()
8.4.51. rtems_interrupt_server_entry_move()
8.4.52. rtems_interrupt_server_request_initialize()
8.4.53. rtems_interrupt_server_request_set_vector()
8.4.54. rtems_interrupt_server_request_destroy()
8.4.55. 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. Fatal Sources
23.2.3. 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_INITIAL_EXTENSIONS
26.7.7. CONFIGURE_INTERRUPT_STACK_SIZE
26.7.8. CONFIGURE_MALLOC_DIRTY
26.7.9. CONFIGURE_MAXIMUM_FILE_DESCRIPTORS
26.7.10. CONFIGURE_MAXIMUM_PROCESSORS
26.7.11. CONFIGURE_MAXIMUM_THREAD_LOCAL_STORAGE_SIZE
26.7.12. CONFIGURE_MAXIMUM_THREAD_NAME_SIZE
26.7.13. CONFIGURE_MEMORY_OVERHEAD
26.7.14. CONFIGURE_MESSAGE_BUFFER_MEMORY
26.7.15. CONFIGURE_MICROSECONDS_PER_TICK
26.7.16. CONFIGURE_MINIMUM_TASK_STACK_SIZE
26.7.17. CONFIGURE_STACK_CHECKER_ENABLED
26.7.18. CONFIGURE_TICKS_PER_TIMESLICE
26.7.19. CONFIGURE_UNIFIED_WORK_AREAS
26.7.20. CONFIGURE_UNLIMITED_ALLOCATION_SIZE
26.7.21. CONFIGURE_UNLIMITED_OBJECTS
26.7.22. CONFIGURE_VERBOSE_SYSTEM_INITIALIZATION
26.7.23. 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_USE_DEVFS_AS_BASE_FILESYSTEM
26.14.27. 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. BSP Related Configuration Options
26.21.1. BSP_IDLE_TASK_BODY
26.21.2. BSP_IDLE_TASK_STACK_SIZE
26.21.3. BSP_INITIAL_EXTENSION
26.21.4. BSP_INTERRUPT_STACK_SIZE
26.21.5. CONFIGURE_BSP_PREREQUISITE_DRIVERS
26.21.6. CONFIGURE_DISABLE_BSP_SETTINGS
26.21.7. CONFIGURE_MALLOC_BSP_SUPPORTS_SBRK
26.22. Multiprocessing Configuration
26.22.1. CONFIGURE_EXTRA_MPCI_RECEIVE_SERVER_STACK
26.22.2. CONFIGURE_MP_APPLICATION
26.22.3. CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS
26.22.4. CONFIGURE_MP_MAXIMUM_NODES
26.22.5. CONFIGURE_MP_MAXIMUM_PROXIES
26.22.6. CONFIGURE_MP_MPCI_TABLE_POINTER
26.22.7. CONFIGURE_MP_NODE_NUMBER
26.23. PCI Library Configuration
26.24. Ada Configuration
26.25. Directives
26.25.1. rtems_get_build_label()
26.25.2. rtems_get_copyright_notice()
26.25.3. rtems_get_target_hash()
26.25.4. rtems_get_version_string()
26.25.5. rtems_configuration_get_do_zero_of_workspace()
26.25.6. rtems_configuration_get_idle_task_stack_size()
26.25.7. rtems_configuration_get_idle_task()
26.25.8. rtems_configuration_get_interrupt_stack_size()
26.25.9. rtems_configuration_get_maximum_barriers()
26.25.10. rtems_configuration_get_maximum_extensions()
26.25.11. rtems_configuration_get_maximum_message_queues()
26.25.12. rtems_configuration_get_maximum_partitions()
26.25.13. rtems_configuration_get_maximum_periods()
26.25.14. rtems_configuration_get_maximum_ports()
26.25.15. rtems_configuration_get_maximum_processors()
26.25.16. rtems_configuration_get_maximum_regions()
26.25.17. rtems_configuration_get_maximum_semaphores()
26.25.18. rtems_configuration_get_maximum_tasks()
26.25.19. rtems_configuration_get_maximum_timers()
26.25.20. rtems_configuration_get_microseconds_per_tick()
26.25.21. rtems_configuration_get_milliseconds_per_tick()
26.25.22. rtems_configuration_get_nanoseconds_per_tick()
26.25.23. rtems_configuration_get_number_of_initial_extensions()
26.25.24. rtems_configuration_get_stack_allocate_for_idle_hook()
26.25.25. rtems_configuration_get_stack_allocate_hook()
26.25.26. rtems_configuration_get_stack_allocate_init_hook()
26.25.27. rtems_configuration_get_stack_allocator_avoids_work_space()
26.25.28. rtems_configuration_get_stack_free_hook()
26.25.29. rtems_configuration_get_stack_space_size()
26.25.30. rtems_configuration_get_ticks_per_timeslice()
26.25.31. rtems_configuration_get_unified_work_area()
26.25.32. rtems_configuration_get_user_extension_table()
26.25.33. rtems_configuration_get_user_multiprocessing_table()
26.25.34. rtems_configuration_get_work_space_size()
26.25.35. rtems_configuration_get_rtems_api_configuration()
26.25.36. rtems_resource_is_unlimited()
26.25.37. rtems_resource_maximum_per_allocation()
26.25.38. rtems_resource_unlimited()
26.26. Obsolete Configuration Options
26.26.1. CONFIGURE_BDBUF_BUFFER_COUNT
26.26.2. CONFIGURE_BDBUF_BUFFER_SIZE
26.26.3. CONFIGURE_DISABLE_CLASSIC_API_NOTEPADS
26.26.4. CONFIGURE_ENABLE_GO
26.26.5. CONFIGURE_GNAT_RTEMS
26.26.6. CONFIGURE_HAS_OWN_CONFIGURATION_TABLE
26.26.7. CONFIGURE_HAS_OWN_BDBUF_TABLE
26.26.8. CONFIGURE_HAS_OWN_DEVICE_DRIVER_TABLE
26.26.9. CONFIGURE_HAS_OWN_INIT_TASK_TABLE
26.26.10. CONFIGURE_HAS_OWN_MOUNT_TABLE
26.26.11. CONFIGURE_HAS_OWN_MULTIPROCESSING_TABLE
26.26.12. CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS
26.26.13. CONFIGURE_MAXIMUM_ADA_TASKS
26.26.14. CONFIGURE_MAXIMUM_DEVICES
26.26.15. CONFIGURE_MAXIMUM_FAKE_ADA_TASKS
26.26.16. CONFIGURE_MAXIMUM_GO_CHANNELS
26.26.17. CONFIGURE_MAXIMUM_GOROUTINES
26.26.18. CONFIGURE_MAXIMUM_MRSP_SEMAPHORES
26.26.19. CONFIGURE_NUMBER_OF_TERMIOS_PORTS
26.26.20. CONFIGURE_MAXIMUM_POSIX_BARRIERS
26.26.21. CONFIGURE_MAXIMUM_POSIX_CONDITION_VARIABLES
26.26.22. CONFIGURE_MAXIMUM_POSIX_MESSAGE_QUEUE_DESCRIPTORS
26.26.23. CONFIGURE_MAXIMUM_POSIX_MUTEXES
26.26.24. CONFIGURE_MAXIMUM_POSIX_RWLOCKS
26.26.25. CONFIGURE_MAXIMUM_POSIX_SPINLOCKS
26.26.26. CONFIGURE_POSIX_HAS_OWN_INIT_THREAD_TABLE
26.26.27. CONFIGURE_SMP_APPLICATION
26.26.28. CONFIGURE_SMP_MAXIMUM_PROCESSORS
26.26.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. Post a counting semaphore
27.5.5. Set counting semaphore name
27.5.6. Get counting semaphore name
27.5.7. 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. Multiprocessing Manager
28.1. Introduction
28.2. Background
28.2.1. Nodes
28.2.2. Global Objects
28.2.3. Global Object Table
28.2.4. Remote Operations
28.2.5. Proxies
28.2.6. Multiprocessor Configuration Table
28.3. Multiprocessor Communications Interface Layer
28.3.1. INITIALIZATION
28.3.2. GET_PACKET
28.3.3. RETURN_PACKET
28.3.4. RECEIVE_PACKET
28.3.5. SEND_PACKET
28.3.6. Supporting Heterogeneous Environments
28.4. Operations
28.4.1. Announcing a Packet
28.5. Directives
28.5.1. rtems_multiprocessing_announce()
29. Symmetric Multiprocessing (SMP)
29.1. Introduction
29.2. Background
29.2.1. Application Configuration
29.2.2. Examples
29.2.3. Uniprocessor versus SMP Parallelism
29.2.4. Task Affinity
29.2.5. Task Migration
29.2.6. Clustered Scheduling
29.2.7. OpenMP
29.2.8. Atomic Operations
29.3. Application Issues
29.3.1. Task variables
29.3.2. Highest Priority Thread Never Walks Alone
29.3.3. Disabling of Thread Preemption
29.3.4. Disabling of Interrupts
29.3.5. Interrupt Service Routines Execute in Parallel With Threads
29.3.6. Timers Do Not Stop Immediately
29.3.7. False Sharing of Cache Lines Due to Objects Table
29.4. Implementation Details
29.4.1. Low-Level Synchronization
29.4.2. Internal Locking
29.4.3. Profiling
29.4.4. Scheduler Helping Protocol
29.4.5. Thread Dispatch Details
29.4.6. Per-Processor Data
29.4.7. Thread Pinning
30. PCI Library
30.1. Introduction
30.2. Background
30.2.1. Software Components
30.2.2. PCI Configuration
30.2.2.1. RTEMS Configuration selection
30.2.2.2. Auto Configuration
30.2.2.3. Read Configuration
30.2.2.4. Static Configuration
30.2.2.5. Peripheral Configuration
30.2.3. PCI Access
30.2.3.1. Configuration space
30.2.3.2. I/O space
30.2.3.3. Registers over Memory space
30.2.3.4. Access functions
30.2.3.5. PCI address translation
30.2.4. PCI Interrupt
30.2.5. PCI Shell command
31. Stack Bounds Checker
31.1. Introduction
31.2. Background
31.2.1. Task Stack
31.2.2. Execution
31.3. Operations
31.3.1. Initializing the Stack Bounds Checker
31.3.2. Checking for Blown Task Stack
31.3.3. Reporting Task Stack Usage
31.3.4. When a Task Overflows the Stack
31.4. Routines
31.4.1. STACK_CHECKER_IS_BLOWN - Has Current Task Blown Its Stack
31.4.2. STACK_CHECKER_REPORT_USAGE - Report Task Stack Usage
32. CPU Usage Statistics
32.1. Introduction
32.2. Background
32.3. Operations
32.3.1. Report CPU Usage Statistics
32.3.2. Reset CPU Usage Statistics
32.4. Directives
32.4.1. cpu_usage_report - Report CPU Usage Statistics
32.4.2. cpu_usage_reset - Reset CPU Usage Statistics
33. Object Services
33.1. Introduction
33.2. Background
33.2.1. APIs
33.2.2. Object Classes
33.2.3. Object Names
33.3. Operations
33.3.1. Decomposing and Recomposing an Object Id
33.3.2. Printing an Object Id
33.4. Directives
33.4.1. rtems_build_id()
33.4.2. rtems_build_name()
33.4.3. rtems_object_get_classic_name()
33.4.4. rtems_object_get_name()
33.4.5. rtems_object_set_name()
33.4.6. rtems_object_id_get_api()
33.4.7. rtems_object_id_get_class()
33.4.8. rtems_object_id_get_node()
33.4.9. rtems_object_id_get_index()
33.4.10. rtems_object_id_api_minimum()
33.4.11. rtems_object_id_api_maximum()
33.4.12. rtems_object_api_minimum_class()
33.4.13. rtems_object_api_maximum_class()
33.4.14. rtems_object_get_api_name()
33.4.15. rtems_object_get_api_class_name()
33.4.16. rtems_object_get_class_information()
33.4.17. rtems_object_get_local_node()
33.4.18. RTEMS_OBJECT_ID_INITIAL()
34. Chains
34.1. Introduction
34.2. Background
34.2.1. Nodes
34.2.2. Controls
34.3. Operations
34.3.1. Multi-threading
34.3.2. Creating a Chain
34.3.3. Iterating a Chain
34.4. Directives
34.4.1. Initialize Chain With Nodes
34.4.2. Initialize Empty
34.4.3. Is Null Node ?
34.4.4. Head
34.4.5. Tail
34.4.6. Are Two Nodes Equal ?
34.4.7. Is the Chain Empty
34.4.8. Is this the First Node on the Chain ?
34.4.9. Is this the Last Node on the Chain ?
34.4.10. Does this Chain have only One Node ?
34.4.11. Returns the node count of the chain (unprotected)
34.4.12. Is this Node the Chain Head ?
34.4.13. Is this Node the Chain Tail ?
34.4.14. Extract a Node
34.4.15. Extract a Node (unprotected)
34.4.16. Get the First Node
34.4.17. Get the First Node (unprotected)
34.4.18. Insert a Node
34.4.19. Insert a Node (unprotected)
34.4.20. Append a Node
34.4.21. Append a Node (unprotected)
34.4.22. Prepend a Node
34.4.23. Prepend a Node (unprotected)
35. Red-Black Trees
35.1. Introduction
35.2. Background
35.2.1. Nodes
35.2.2. Controls
35.3. Operations
35.4. Directives
35.4.1. Documentation for the Red-Black Tree Directives
36. Timespec Helpers
36.1. Introduction
36.2. Background
36.2.1. Time Storage Conventions
36.3. Operations
36.3.1. Set and Obtain Timespec Value
36.3.2. Timespec Math
36.3.3. Comparing struct timespec Instances
36.3.4. Conversions and Validity Check
36.4. Directives
36.4.1. TIMESPEC_SET - Set struct timespec Instance
36.4.2. TIMESPEC_ZERO - Zero struct timespec Instance
36.4.3. TIMESPEC_IS_VALID - Check validity of a struct timespec instance
36.4.4. TIMESPEC_ADD_TO - Add Two struct timespec Instances
36.4.5. TIMESPEC_SUBTRACT - Subtract Two struct timespec Instances
36.4.6. TIMESPEC_DIVIDE - Divide Two struct timespec Instances
36.4.7. TIMESPEC_DIVIDE_BY_INTEGER - Divide a struct timespec Instance by an Integer
36.4.8. TIMESPEC_LESS_THAN - Less than operator
36.4.9. TIMESPEC_GREATER_THAN - Greater than operator
36.4.10. TIMESPEC_EQUAL_TO - Check equality of timespecs
36.4.11. TIMESPEC_GET_SECONDS - Get Seconds Portion of struct timespec Instance
36.4.12. TIMESPEC_GET_NANOSECONDS - Get Nanoseconds Portion of the struct timespec Instance
36.4.13. TIMESPEC_TO_TICKS - Convert struct timespec Instance to Ticks
36.4.14. TIMESPEC_FROM_TICKS - Convert Ticks to struct timespec Representation
37. Constant Bandwidth Server Scheduler API
37.1. Introduction
37.2. Background
37.2.1. Constant Bandwidth Server Definitions
37.2.2. Handling Periodic Tasks
37.2.3. Registering a Callback Function
37.2.4. Limitations
37.3. Operations
37.3.1. Setting up a server
37.3.2. Attaching Task to a Server
37.3.3. Detaching Task from a Server
37.3.4. Examples
37.4. Directives
37.4.1. CBS_INITIALIZE - Initialize the CBS library
37.4.2. CBS_CLEANUP - Cleanup the CBS library
37.4.3. CBS_CREATE_SERVER - Create a new bandwidth server
37.4.4. CBS_ATTACH_THREAD - Attach a thread to server
37.4.5. CBS_DETACH_THREAD - Detach a thread from server
37.4.6. CBS_DESTROY_SERVER - Destroy a bandwidth server
37.4.7. CBS_GET_SERVER_ID - Get an ID of a server
37.4.8. CBS_GET_PARAMETERS - Get scheduling parameters of a server
37.4.9. CBS_SET_PARAMETERS - Set scheduling parameters
37.4.10. CBS_GET_EXECUTION_TIME - Get elapsed execution time
37.4.11. CBS_GET_REMAINING_BUDGET - Get remaining execution time
37.4.12. CBS_GET_APPROVED_BUDGET - Get scheduler approved execution time
38. Ada Support
38.1. Introduction
38.2. Ada Programming Language Support
38.3. Classic API Ada Bindings
39. Linker Sets
39.1. Introduction
39.2. Background
39.3. Directives
39.3.1. RTEMS_LINKER_SET_BEGIN - Designator of the linker set begin marker
39.3.2. RTEMS_LINKER_SET_END - Designator of the linker set end marker
39.3.3. RTEMS_LINKER_SET_SIZE - The linker set size in characters
39.3.4. RTEMS_LINKER_SET_ITEM_COUNT - The linker set item count
39.3.5. RTEMS_LINKER_SET_IS_EMPTY - Is the linker set empty?
39.3.6. RTEMS_LINKER_SET_FOREACH - Iterate through the linker set items
39.3.7. RTEMS_LINKER_ROSET_DECLARE - Declares a read-only linker set
39.3.8. RTEMS_LINKER_ROSET - Defines a read-only linker set
39.3.9. RTEMS_LINKER_ROSET_ITEM_DECLARE - Declares a read-only linker set item
39.3.10. RTEMS_LINKER_ROSET_ITEM_ORDERED_DECLARE - Declares an ordered read-only linker set item
39.3.11. RTEMS_LINKER_ROSET_ITEM_REFERENCE - References a read-only linker set item
39.3.12. RTEMS_LINKER_ROSET_ITEM - Defines a read-only linker set item
39.3.13. RTEMS_LINKER_ROSET_ITEM_ORDERED - Defines an ordered read-only linker set item
39.3.14. RTEMS_LINKER_ROSET_CONTENT - Marks a declaration as a read-only linker set content
39.3.15. RTEMS_LINKER_RWSET_DECLARE - Declares a read-write linker set
39.3.16. RTEMS_LINKER_RWSET - Defines a read-write linker set
39.3.17. RTEMS_LINKER_RWSET_ITEM_DECLARE - Declares a read-write linker set item
39.3.18. RTEMS_LINKER_RWSET_ITEM_ORDERED_DECLARE - Declares an ordered read-write linker set item
39.3.19. RTEMS_LINKER_RWSET_ITEM_REFERENCE - References a read-write linker set item
39.3.20. RTEMS_LINKER_RWSET_ITEM - Defines a read-write linker set item
39.3.21. RTEMS_LINKER_RWSET_ITEM_ORDERED - Defines an ordered read-write linker set item
39.3.22. RTEMS_LINKER_RWSET_CONTENT - Marks a declaration as a read-write linker set content
40. Directive Status Codes
40.1. Introduction
40.2. Directives
40.2.1. STATUS_TEXT - Returns the enumeration name for a status code
41. Example Application
42. Glossary
43. References
Index
RTEMS Classic API Guide
»
17.
Partition Manager
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()