SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
copyrights:
- Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
enabled-by: true
links: []
test-actions:
- action-brief: |
Check the effect of application configuration options with optional
BSP-provided settings.
action-code: |
rtems_extensions_table bsp = BSP_INITIAL_EXTENSION;
checks:
- brief: |
Check the configured ${/acfg/if/idle-task-body:/name}.
code: |
T_step_eq_ptr( ${.:/step}, rtems_configuration_get_idle_task(), IdleBody );
links:
- role: validation
uid: ../if/idle-task-body
- role: validation
uid: /rtems/config/req/get-idle-task
- brief: |
Check the default value of ${/acfg/if/idle-task-stack-size:/name} where
the optional BSP-provided default value is enabled.
code: |
T_step_eq_sz(
${.:/step},
rtems_configuration_get_idle_task_stack_size(),
#if defined(BSP_IDLE_TASK_STACK_SIZE)
BSP_IDLE_TASK_STACK_SIZE
#else
CPU_STACK_MINIMUM_SIZE
#endif
);
links:
- role: validation
uid: ../if/idle-task-stack-size
- role: validation
uid: ../if/disable-bsp-settings
- brief: |
Check the default value of ${/acfg/if/interrupt-stack-size:/name} where
the optional BSP-provided default value is enabled.
code: |
T_step_eq_sz(
${.:/step},
rtems_configuration_get_interrupt_stack_size(),
#if defined(BSP_INTERRUPT_STACK_SIZE)
BSP_INTERRUPT_STACK_SIZE
#else
CPU_STACK_MINIMUM_SIZE
#endif
);
links:
- role: validation
uid: ../if/interrupt-stack-size
- role: validation
uid: ../if/disable-bsp-settings
- brief: |
Check the BSP-provided initial extension is registered.
code: |
T_step_eq_sz( ${.:/step}, _User_extensions_Initial_count, 1 );
T_step_eq_ptr(
${.:/step},
_User_extensions_Initial_extensions[ 0 ].fatal,
bsp.fatal
);
links:
- role: validation
uid: ../req/bsp-initial-extension
- role: validation
uid: ../if/disable-bsp-settings
links: []
- action-brief: |
Try to create a barrier.
action-code: |
rtems_status_code sc;
rtems_id id;
sc = rtems_barrier_create(
NAME,
RTEMS_DEFAULT_ATTRIBUTES,
1,
&id
);
checks:
- brief: |
Check that the returned status code is
${/rtems/status/if/too-many:/name}.
code: |
T_step_rsc( ${.:/step}, sc, RTEMS_TOO_MANY );
links:
- role: validation
uid: ../if/max-barriers
links: []
- action-brief: |
Try to construct a message queue.
action-code: |
rtems_message_queue_config config;
RTEMS_MESSAGE_QUEUE_BUFFER( 1 ) buffers[ 1 ];
rtems_status_code sc;
rtems_id id;
memset( &config, 0, sizeof( config ) );
config.name = NAME;
config.maximum_pending_messages = 1;
config.maximum_message_size = 1;
config.storage_size = sizeof( buffers );
config.storage_area = buffers;
config.attributes = RTEMS_DEFAULT_ATTRIBUTES;
sc = rtems_message_queue_construct( &config, &id );
checks:
- brief: |
Check that the returned status code is
${/rtems/status/if/too-many:/name}.
code: |
T_step_rsc( ${.:/step}, sc, RTEMS_TOO_MANY );
links:
- role: validation
uid: ../if/max-message-queues
links: []
- action-brief: |
Try to create a partition.
action-code: |
RTEMS_ALIGNED( RTEMS_PARTITION_ALIGNMENT ) uint8_t buffers[ 1 ][ 32 ];
rtems_status_code sc;
rtems_id id;
sc = rtems_partition_create(
NAME,
buffers,
sizeof( buffers ),
sizeof( buffers[ 0 ] ),
RTEMS_DEFAULT_ATTRIBUTES,
&id
);
checks:
- brief: |
Check that the returned status code is
${/rtems/status/if/too-many:/name}.
code: |
T_step_rsc( ${.:/step}, sc, RTEMS_TOO_MANY );
links:
- role: validation
uid: ../if/max-partitions
links: []
- action-brief: |
Try to create a period.
action-code: |
rtems_status_code sc;
rtems_id id;
sc = rtems_rate_monotonic_create( NAME, &id );
checks:
- brief: |
Check that the returned status code is
${/rtems/status/if/too-many:/name}.
code: |
T_step_rsc( ${.:/step}, sc, RTEMS_TOO_MANY );
links:
- role: validation
uid: ../if/max-periods
links: []
- action-brief: |
Check that the processor maximum is one.
action-code: |
T_step_eq_u32( ${.:/step}, rtems_scheduler_get_processor_maximum(), 1 );
checks: []
links:
- role: validation
uid: ../if/max-processors
- action-brief: |
Try to create a semaphore.
action-code: |
rtems_status_code sc;
rtems_id id;
sc = rtems_semaphore_create(
NAME,
0,
RTEMS_DEFAULT_ATTRIBUTES,
0,
&id
);
checks:
- brief: |
Check that the returned status code is
${/rtems/status/if/too-many:/name}.
code: |
T_step_rsc( ${.:/step}, sc, RTEMS_TOO_MANY );
links:
- role: validation
uid: ../if/max-semaphores
links: []
- action-brief: |
Try to construct a task.
action-code: |
rtems_status_code sc;
rtems_id id;
sc = rtems_task_construct( &task_config, &id );
checks:
- brief: |
Check that the returned status code is
${/rtems/status/if/too-many:/name}.
code: |
T_step_rsc( ${.:/step}, sc, RTEMS_TOO_MANY );
links:
- role: validation
uid: ../if/max-tasks
- brief: |
Check the default ${/acfg/if/max-tasks:/name} value. A maximum Classic
API task value of zero is only configurable if
${../if/idle-task-init-appl:/name} is defined or
${../if/max-posix-threads:/name} is set to a positive value. The default
value of zero for ${../if/max-posix-threads:/name} is used by the test
suite containing the test case. The test suite defines
${../if/idle-task-init-appl:/name}.
code: |
T_step_eq_u32( ${.:/step}, rtems_configuration_get_maximum_tasks(), 0 );
links:
- role: validation
uid: ../req/max-tasks
- role: validation
uid: ../req/idle-task-init-appl
- role: validation
uid: /rtems/config/req/get-maximum-tasks
links: []
- action-brief: |
Try to create a timer.
action-code: |
rtems_status_code sc;
rtems_id id;
sc = rtems_timer_create( NAME, &id );
checks:
- brief: |
Check that the returned status code is
${/rtems/status/if/too-many:/name}.
code: |
T_step_rsc( ${.:/step}, sc, RTEMS_TOO_MANY );
links:
- role: validation
uid: ../if/max-timers
links: []
- action-brief: |
Try to create a user extension set.
action-code: |
rtems_extensions_table table;
rtems_status_code sc;
rtems_id id;
memset( &table, 0, sizeof( table ) );
sc = rtems_extension_create( NAME, &table, &id );
checks:
- brief: |
Check that the returned status code is
${/rtems/status/if/too-many:/name}.
code: |
T_step_rsc( ${.:/step}, sc, RTEMS_TOO_MANY );
links:
- role: validation
uid: ../if/max-user-extensions
links: []
test-brief: |
Tests the default values of application configuration options.
test-context: []
test-context-support: null
test-description: null
test-header: null
test-includes:
- bsp.h
- string.h
- rtems/score/userextdata.h
test-local-includes:
- tx-support.h
test-setup: null
test-stop: null
test-support: |
#define NAME rtems_build_name( 'N', 'A', 'M', 'E' )
RTEMS_ALIGNED(RTEMS_TASK_STORAGE_ALIGNMENT) static char task_storage[
RTEMS_TASK_STORAGE_SIZE(
RTEMS_MINIMUM_STACK_SIZE,
RTEMS_DEFAULT_ATTRIBUTES
)
];
static const rtems_task_config task_config = {
.name = NAME,
.initial_priority = 1,
.storage_area = task_storage,
.storage_size = sizeof( task_storage ),
.maximum_thread_local_storage_size = 0,
.initial_modes = RTEMS_DEFAULT_MODES,
.attributes = RTEMS_DEFAULT_ATTRIBUTES
};
test-target: testsuites/validation/tc-acfg-default.c
test-teardown: null
type: test-case