source: rtems-central/spec/testsuites/validation-0.yml @ 724df1c

Last change on this file since 724df1c was 724df1c, checked in by Sebastian Huber <sebastian.huber@…>, on 08/21/20 at 14:04:36

spec: Specify rtems_task_construct()

Previous directive name was rtems_task_create_from_config().

  • Property mode set to 100644
File size: 4.5 KB
Line 
1SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
2copyrights:
3- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de)
4enabled-by: true
5links: []
6test-brief: |
7  This general purpose validation test suite provides enough resources to run
8  basic tests for all specified managers and functions.
9test-code: |
10  #include <rtems/test-info.h>
11
12  const char rtems_test_name[] = "Validation0";
13
14  static char buffer[ 512 ];
15
16  static const T_action actions[] = {
17    T_report_hash_sha256,
18    T_check_task_context,
19    T_check_rtems_barriers,
20    T_check_rtems_extensions,
21    T_check_rtems_message_queues,
22    T_check_rtems_partitions,
23    T_check_rtems_periods,
24    T_check_rtems_semaphores,
25    T_check_rtems_tasks,
26    T_check_rtems_timers
27  };
28
29  static const T_config test_config = {
30    .name = rtems_test_name,
31    .buf = buffer,
32    .buf_size = sizeof( buffer ),
33    .putchar = rtems_put_char,
34    .verbosity = T_VERBOSE,
35    .now = T_now_clock,
36    .action_count = T_ARRAY_SIZE( actions ),
37    .actions = actions
38  };
39
40  static void runner_task( rtems_task_argument arg )
41  {
42    int exit_code;
43
44    (void) arg;
45
46    rtems_test_begin( rtems_test_name, TEST_STATE );
47    T_register();
48    exit_code = T_main( &test_config );
49
50    if ( exit_code == 0 ) {
51      rtems_test_end( rtems_test_name );
52    }
53
54    rtems_fatal( RTEMS_FATAL_SOURCE_EXIT, (uint32_t) exit_code );
55  }
56
57  #define MAX_TLS_SIZE RTEMS_ALIGN_UP( 64, RTEMS_TASK_STORAGE_ALIGNMENT )
58
59  #define ATTRIBUTES RTEMS_FLOATING_POINT
60
61  RTEMS_ALIGNED( RTEMS_TASK_STORAGE_ALIGNMENT )
62  static char runner_task_storage[
63    RTEMS_TASK_STORAGE_SIZE(
64      MAX_TLS_SIZE + RTEMS_MINIMUM_STACK_SIZE,
65      ATTRIBUTES
66    )
67  ];
68
69  static const rtems_task_config runner_task_config = {
70    .name = rtems_build_name( 'R', 'U', 'N', ' ' ),
71    .initial_priority = 1,
72    .storage_area = runner_task_storage,
73    .storage_size = sizeof( runner_task_storage ),
74    .maximum_thread_local_storage_size = MAX_TLS_SIZE,
75    .initial_modes = RTEMS_DEFAULT_MODES,
76    .attributes = ATTRIBUTES
77  };
78
79  static void init_runner_task(void)
80  {
81    rtems_id id;
82    rtems_status_code sc;
83
84    sc = rtems_task_construct( &runner_task_config, &id );
85    if ( sc != RTEMS_SUCCESSFUL ) {
86      rtems_fatal( RTEMS_FATAL_SOURCE_EXIT, 1 );
87    }
88
89    sc = rtems_task_start( id, runner_task, 0 );
90    if ( sc != RTEMS_SUCCESSFUL ) {
91      rtems_fatal( RTEMS_FATAL_SOURCE_EXIT, 1 );
92    }
93  }
94
95  RTEMS_SYSINIT_ITEM(
96    init_runner_task,
97    RTEMS_SYSINIT_CLASSIC_USER_TASKS,
98    RTEMS_SYSINIT_ORDER_MIDDLE
99  );
100
101  #define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
102
103  #define CONFIGURE_MAXIMUM_PROCESSORS 4
104
105  #define CONFIGURE_MAXIMUM_BARRIERS 3
106
107  #define CONFIGURE_MAXIMUM_MESSAGE_QUEUES 3
108
109  #define CONFIGURE_MAXIMUM_PARTITIONS 3
110
111  #define CONFIGURE_MAXIMUM_PERIODS 3
112
113  #define CONFIGURE_MAXIMUM_SEMAPHORES 3
114
115  #define CONFIGURE_MAXIMUM_TASKS 3
116
117  #define CONFIGURE_MINIMUM_TASKS_WITH_USER_PROVIDED_STORAGE \
118    CONFIGURE_MAXIMUM_TASKS
119
120  #define CONFIGURE_MAXIMUM_TIMERS 3
121
122  #define CONFIGURE_MAXIMUM_USER_EXTENSIONS 3
123
124  #define CONFIGURE_MICROSECONDS_PER_TICK 1000
125
126  #define CONFIGURE_MAXIMUM_FILE_DESCRIPTORS 0
127
128  #define CONFIGURE_DISABLE_NEWLIB_REENTRANCY
129
130  #define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
131
132  #define CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION
133
134  #define CONFIGURE_IDLE_TASK_BODY _CPU_Thread_Idle_body
135
136  #if defined(RTEMS_SMP)
137
138  #define CONFIGURE_SCHEDULER_EDF_SMP
139
140  #include <rtems/scheduler.h>
141
142  RTEMS_SCHEDULER_EDF_SMP(a);
143
144  RTEMS_SCHEDULER_EDF_SMP(b);
145
146  RTEMS_SCHEDULER_EDF_SMP(c);
147
148  #define CONFIGURE_SCHEDULER_TABLE_ENTRIES \
149    RTEMS_SCHEDULER_TABLE_EDF_SMP(a, rtems_build_name('A', ' ', ' ', ' ')), \
150    RTEMS_SCHEDULER_TABLE_EDF_SMP(b, rtems_build_name('B', ' ', ' ', ' ')), \
151    RTEMS_SCHEDULER_TABLE_EDF_SMP(c, rtems_build_name('C', ' ', ' ', ' '))
152
153  #define CONFIGURE_SCHEDULER_ASSIGNMENTS \
154    RTEMS_SCHEDULER_ASSIGN(0, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_MANDATORY), \
155    RTEMS_SCHEDULER_ASSIGN(1, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL), \
156    RTEMS_SCHEDULER_ASSIGN(2, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL), \
157    RTEMS_SCHEDULER_ASSIGN(2, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL)
158
159  #endif /* RTEMS_SMP */
160
161  #define CONFIGURE_INIT
162
163  #include <rtems/confdefs.h>
164test-description: |
165  In SMP configurations, up to three scheduler instances using the SMP EDF
166  scheduler are provided using up to four processors.
167test-includes:
168- rtems.h
169- rtems/bspIo.h
170- rtems/sysinit.h
171test-local-includes: []
172test-target: testsuites/validation/ts-validation-0.c
173type: test-suite
Note: See TracBrowser for help on using the repository browser.