#3702 closed task (fixed)

Space profile for RTEMS SMP

Reported by: Sebastian Huber Owned by: Sebastian Huber
Priority: normal Milestone: 6.1
Component: doc Version: 6
Severity: normal Keywords: qualification
Cc: Blocked By:
Blocking: #3701

Description

Define a subset of RTEMS SMP functionality which is

  • useful for space applications, and
  • can be pre-qualified by project #3701.

To figure out the feature set carry out an online survey. In addition, do a workshop at ESA / ESTEC premises (also accessible on-line via Skype for Business).

The space profile needs to be documented.

Change History (7)

comment:1 Changed on 02/26/19 at 13:30:45 by Sebastian Huber

Status: assignedaccepted

comment:2 Changed on 11/19/21 at 14:44:03 by Sebastian Huber

Resolution: fixed
Status: acceptedclosed

The Technical Note: Space Profile is finalized:

https://ftp.rtems.org/pub/rtems/people/sebh/tn-space-profile-r6-23062019.pdf

Please note that the pre-qualified feature set of RTEMS is a proper superset of the space profile.

comment:3 Changed on 11/19/21 at 14:56:54 by Joel Sherrill

Would it be possible to generate a document similar to the one you linked to which documents that superset? Asked another way, how could someone approaching RTEMS.org know the subset of RTEMS which has the supporting artifacts for pre-qualification?

comment:4 Changed on 11/19/21 at 15:00:19 by Sebastian Huber

Yes, this is possible, but I think this belongs to another ticket. I am currently busy with integrating all my work in progress.

comment:5 Changed on 12/02/21 at 11:10:16 by Sebastian Huber

Just for reference, a list of pre-qualified interfaces can be obtained via the ./specview.py --filter=api.

Application Configuration Information

  • 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_processors
  • 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_stack_allocate_for_idle_hook
  • rtems_configuration_get_stack_allocate_hook
  • rtems_configuration_get_stack_allocator_avoids_work_space
  • rtems_configuration_get_stack_free_hook
  • rtems_configuration_get_ticks_per_timeslice

Barrier Manager

  • rtems_barrier_create
  • rtems_barrier_delete
  • rtems_barrier_ident
  • rtems_barrier_release
  • rtems_barrier_wait

Base Definitions

  • RTEMS_ALIAS
  • RTEMS_ALIGNED
  • RTEMS_ALIGNOF
  • RTEMS_ALIGN_DOWN
  • RTEMS_ALIGN_UP
  • RTEMS_ALLOC_ALIGN
  • RTEMS_ALLOC_SIZE
  • RTEMS_ALLOC_SIZE_2
  • RTEMS_ARRAY_SIZE
  • RTEMS_COMPILER_MEMORY_BARRIER
  • RTEMS_CONCAT
  • RTEMS_CONTAINER_OF
  • RTEMS_DECLARE_GLOBAL_SYMBOL
  • RTEMS_DECONST
  • RTEMS_DEFINE_GLOBAL_SYMBOL
  • RTEMS_DEQUALIFY
  • RTEMS_DEQUALIFY_DEPTHX
  • RTEMS_DEVOLATILE
  • RTEMS_EXPAND
  • RTEMS_HAVE_MEMBER_SAME_TYPE
  • RTEMS_OBFUSCATE_VARIABLE
  • RTEMS_PREDICT_FALSE
  • RTEMS_PREDICT_TRUE
  • RTEMS_PRINTFLIKE
  • RTEMS_RETURN_ADDRESS
  • RTEMS_SECTION
  • RTEMS_STATIC_ASSERT
  • RTEMS_STRING
  • RTEMS_SYMBOL_NAME
  • RTEMS_TYPEOF_REFX
  • RTEMS_UNREACHABLE
  • RTEMS_WEAK_ALIAS
  • RTEMS_XCONCAT
  • RTEMS_XSTRING

C and POSIX

  • clock_nanosleep
  • flsl
  • memcpy
  • memset
  • posix_memalign

CPU Usage Reporting

  • rtems_cpu_usage_reset

Cache Manager

  • 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

Classic API Configuration

  • CONFIGURE_MAXIMUM_BARRIERS
  • CONFIGURE_MAXIMUM_MESSAGE_QUEUES
  • CONFIGURE_MAXIMUM_PARTITIONS
  • CONFIGURE_MAXIMUM_PERIODS
  • CONFIGURE_MAXIMUM_SEMAPHORES
  • CONFIGURE_MAXIMUM_TASKS
  • CONFIGURE_MAXIMUM_THREAD_LOCAL_STORAGE_SIZE
  • CONFIGURE_MAXIMUM_TIMERS
  • CONFIGURE_MAXIMUM_USER_EXTENSIONS
  • CONFIGURE_MINIMUM_TASKS_WITH_USER_PROVIDED_STORAGE

Classic API Initialization Task Configuration

  • 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_RTEMS_INIT_TASKS_TABLE

Clock Manager

  • 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_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_ticks_per_second
  • rtems_clock_get_ticks_since_boot
  • rtems_clock_get_tod
  • rtems_clock_get_uptime
  • rtems_clock_set

Device Driver Configuration

  • CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER
  • CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER

Directive Status Codes

  • rtems_are_statuses_equal
  • rtems_is_status_successful
  • rtems_status_text

Dynamic Memory Allocation

  • rtems_calloc
  • rtems_malloc

Event Manager

  • rtems_event_receive
  • rtems_event_send

Fatal Error Manager

  • rtems_fatal

Filesystem Configuration

  • CONFIGURE_APPLICATION_DISABLE_FILESYSTEM

General Scheduler Configuration

  • CONFIGURE_MAXIMUM_PRIORITY
  • CONFIGURE_SCHEDULER_ASSIGNMENTS
  • CONFIGURE_SCHEDULER_EDF_SMP
  • CONFIGURE_SCHEDULER_NAME
  • CONFIGURE_SCHEDULER_PRIORITY

General System Configuration

  • CONFIGURE_DISABLE_BSP_SETTINGS
  • CONFIGURE_DISABLE_NEWLIB_REENTRANCY
  • CONFIGURE_INITIAL_EXTENSIONS
  • CONFIGURE_INTERRUPT_STACK_SIZE
  • CONFIGURE_MAXIMUM_FILE_DESCRIPTORS
  • CONFIGURE_MAXIMUM_PROCESSORS
  • CONFIGURE_MICROSECONDS_PER_TICK
  • CONFIGURE_MINIMUM_TASK_STACK_SIZE
  • CONFIGURE_TICKS_PER_TIMESLICE

Idle Task Configuration

  • CONFIGURE_IDLE_TASK_BODY
  • CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION
  • CONFIGURE_IDLE_TASK_STACK_SIZE

Interrupt Manager

  • RTEMS_INTERRUPT_ENTRY_INITIALIZER
  • RTEMS_INTERRUPT_LOCK_DECLARE
  • RTEMS_INTERRUPT_LOCK_DEFINE
  • RTEMS_INTERRUPT_LOCK_INITIALIZER
  • RTEMS_INTERRUPT_LOCK_MEMBER
  • RTEMS_INTERRUPT_LOCK_REFERENCE
  • rtems_interrupt_clear
  • rtems_interrupt_entry_initialize
  • rtems_interrupt_entry_install
  • rtems_interrupt_entry_remove
  • rtems_interrupt_get_affinity
  • rtems_interrupt_get_attributes
  • rtems_interrupt_handler_iterate
  • rtems_interrupt_is_pending
  • rtems_interrupt_local_disable
  • rtems_interrupt_local_enable
  • rtems_interrupt_lock_acquire
  • rtems_interrupt_lock_acquire_isr
  • rtems_interrupt_lock_destroy
  • rtems_interrupt_lock_initialize
  • rtems_interrupt_lock_interrupt_disable
  • rtems_interrupt_lock_release
  • rtems_interrupt_lock_release_isr
  • rtems_interrupt_raise
  • rtems_interrupt_raise_on
  • rtems_interrupt_set_affinity
  • rtems_interrupt_vector_disable
  • rtems_interrupt_vector_enable
  • rtems_interrupt_vector_is_enabled

Kernel Character I/O Support

  • getchark
  • rtems_put_char
  • rtems_putc

Message Manager

  • RTEMS_MESSAGE_QUEUE_BUFFER
  • rtems_message_queue_broadcast
  • rtems_message_queue_construct
  • rtems_message_queue_delete
  • rtems_message_queue_flush
  • rtems_message_queue_get_number_pending
  • rtems_message_queue_ident
  • rtems_message_queue_receive
  • rtems_message_queue_send
  • rtems_message_queue_urgent

Newlib

  • _Futex_Wait
  • _Futex_Wake
  • _Mutex_Acquire
  • _Mutex_Acquire_timed
  • _Mutex_Release
  • _Mutex_Try_acquire
  • _Mutex_recursive_Acquire
  • _Mutex_recursive_Acquire_timed
  • _Mutex_recursive_Release
  • _Mutex_recursive_Try_acquire

Object Services

  • rtems_build_name
  • rtems_object_get_local_node

Partition Manager

  • rtems_partition_create
  • rtems_partition_delete
  • rtems_partition_get_buffer
  • rtems_partition_ident
  • rtems_partition_return_buffer

Rate-Monotonic Manager

  • rtems_rate_monotonic_cancel
  • rtems_rate_monotonic_create
  • rtems_rate_monotonic_delete
  • rtems_rate_monotonic_get_status
  • rtems_rate_monotonic_ident
  • rtems_rate_monotonic_period

Scheduler Manager

  • 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_remove_processor

Semaphore Manager

  • rtems_semaphore_create
  • rtems_semaphore_delete
  • rtems_semaphore_flush
  • rtems_semaphore_ident
  • rtems_semaphore_obtain
  • rtems_semaphore_release
  • rtems_semaphore_set_priority

Signal Manager

  • rtems_signal_catch
  • rtems_signal_send

Support Services

  • rtems_is_name_valid
  • rtems_name_to_characters

Task Manager

  • RTEMS_TASK_STORAGE_SIZE
  • rtems_task_construct
  • rtems_task_create
  • rtems_task_delete
  • rtems_task_exit
  • rtems_task_get_affinity
  • rtems_task_get_priority
  • rtems_task_get_scheduler
  • rtems_task_ident
  • rtems_task_is_suspended
  • rtems_task_iterate
  • rtems_task_mode
  • rtems_task_restart
  • rtems_task_resume
  • rtems_task_self
  • rtems_task_set_affinity
  • rtems_task_set_priority
  • rtems_task_set_scheduler
  • rtems_task_start
  • rtems_task_suspend
  • rtems_task_wake_after
  • rtems_task_wake_when

Task Modes

  • RTEMS_INTERRUPT_LEVEL

Task Stack Allocator Configuration

  • CONFIGURE_TASK_STACK_ALLOCATOR
  • CONFIGURE_TASK_STACK_ALLOCATOR_AVOIDS_WORK_SPACE
  • CONFIGURE_TASK_STACK_ALLOCATOR_FOR_IDLE
  • CONFIGURE_TASK_STACK_DEALLOCATOR

Timer Manager

  • rtems_timer_cancel
  • rtems_timer_create
  • rtems_timer_delete
  • rtems_timer_fire_after
  • rtems_timer_fire_when
  • rtems_timer_ident
  • rtems_timer_initiate_server
  • rtems_timer_reset
  • rtems_timer_server_fire_after
  • rtems_timer_server_fire_when

User Extensions Manager

  • rtems_extension_create
  • rtems_extension_delete
  • rtems_extension_ident

comment:6 Changed on 12/02/21 at 22:15:47 by Joel Sherrill

I'm sure that list is right but wasn't there a small set of POSIX APIs which were candidates? I looked for pthread_once() which I expected but isn't there. Was thinking of the pthread APIs which were always on before the POSIX configuration was reworked -- once and keys.

comment:7 Changed on 12/03/21 at 05:54:40 by Sebastian Huber

We considered to add POSIX keys and once, but we had no time left over to do this.

Note: See TracTickets for help on using tickets.