source: rtems/testsuites/sptests/sp08/init.c @ 21e96d66

5
Last change on this file since 21e96d66 was 21e96d66, checked in by Joel Sherrill <joel@…>, on 12/08/17 at 18:14:20

sp08: Disable RTEMS_INTERRUPT_MASK testing when SMP enabled

Updates #3000.

  • Property mode set to 100644
File size: 7.3 KB
Line 
1/*
2 *  COPYRIGHT (c) 1989-2012.
3 *  On-Line Applications Research Corporation (OAR).
4 *
5 *  The license and distribution terms for this file may be
6 *  found in the file LICENSE in this distribution or at
7 *  http://www.rtems.org/license/LICENSE.
8 */
9
10#ifdef HAVE_CONFIG_H
11#include "config.h"
12#endif
13
14#include <tmacros.h>
15
16#include <rtems/score/sysstate.h>
17
18const char rtems_test_name[] = "SP 8";
19
20/* forward declarations to avoid warnings */
21rtems_task Init(rtems_task_argument argument);
22
23#define PRIxModes_Control       PRIx32
24#define PRIxrtems_mode          PRIxModes_Control
25
26#define put_mode( _comment, _output_mode ) \
27   printf( "%s %08" PRIxrtems_mode "\n", _comment, _output_mode );
28
29rtems_task Init(
30  rtems_task_argument argument
31)
32{
33  rtems_mode        previous_mode;
34  rtems_status_code status;
35
36  TEST_BEGIN();
37
38/* BEGINNING OF RTEMS_ASR */
39
40  status = rtems_task_mode( RTEMS_ASR, RTEMS_ASR_MASK, &previous_mode );
41  directive_failed( status, "rtems_task_mode" );
42  put_mode(
43    "TA1 - rtems_task_mode - RTEMS_ASR                  - previous mode: ",
44    previous_mode
45  );
46
47  status = rtems_task_mode(
48    RTEMS_NO_ASR,
49    RTEMS_ASR_MASK,
50    &previous_mode
51  );
52  directive_failed( status, "rtems_task_mode" );
53  put_mode(
54    "TA1 - rtems_task_mode - RTEMS_NO_ASR               - previous mode: ",
55    previous_mode
56  );
57
58  status = rtems_task_mode(
59    RTEMS_NO_ASR,
60    RTEMS_ASR_MASK,
61    &previous_mode
62  );
63  directive_failed( status, "rtems_task_mode" );
64  put_mode(
65    "TA1 - rtems_task_mode - RTEMS_NO_ASR               - previous mode: ",
66    previous_mode
67  );
68
69  status = rtems_task_mode(
70    RTEMS_ASR,
71    RTEMS_ASR_MASK,
72    &previous_mode
73  );
74  directive_failed( status, "rtems_task_mode" );
75  put_mode(
76    "TA1 - rtems_task_mode - RTEMS_ASR                  - previous mode: ",
77    previous_mode
78  );
79
80/* END OF RTEMS_ASR */
81
82/* BEGINNING OF RTEMS_TIMESLICE */
83
84  status = rtems_task_mode(
85    RTEMS_NO_TIMESLICE,
86    RTEMS_TIMESLICE_MASK,
87    &previous_mode
88  );
89  directive_failed( status, "rtems_task_mode" );
90  put_mode(
91    "TA1 - rtems_task_mode - RTEMS_NO_TIMESLICE         - previous mode: ",
92    previous_mode
93  );
94
95  status = rtems_task_mode(
96    RTEMS_TIMESLICE,
97    RTEMS_TIMESLICE_MASK,
98    &previous_mode
99  );
100  directive_failed( status, "rtems_task_mode" );
101  put_mode(
102    "TA1 - rtems_task_mode - RTEMS_TIMESLICE            - previous mode: ",
103    previous_mode
104  );
105
106  status = rtems_task_mode(
107    RTEMS_TIMESLICE,
108    RTEMS_TIMESLICE_MASK,
109    &previous_mode
110  );
111  directive_failed( status, "rtems_task_mode" );
112  put_mode(
113    "TA1 - rtems_task_mode - RTEMS_TIMESLICE            - previous mode: ",
114    previous_mode
115  );
116
117  status = rtems_task_mode(
118    RTEMS_NO_TIMESLICE,
119    RTEMS_TIMESLICE_MASK,
120    &previous_mode
121  );
122  directive_failed( status, "rtems_task_mode" );
123  put_mode(
124    "TA1 - rtems_task_mode - RTEMS_NO_TIMESLICE         - previous mode: ",
125    previous_mode
126  );
127
128/* END OF RTEMS_TIMESLICE */
129
130/* BEGINNING OF RTEMS_PREEMPT */
131
132  status = rtems_task_mode(
133    RTEMS_PREEMPT,
134    RTEMS_PREEMPT_MASK,
135    &previous_mode
136  );
137  directive_failed( status, "rtems_task_mode" );
138  put_mode(
139    "TA1 - rtems_task_mode - RTEMS_PREEMPT              - previous mode: ",
140    previous_mode
141  );
142
143  status = rtems_task_mode(
144    RTEMS_NO_PREEMPT,
145    RTEMS_PREEMPT_MASK,
146    &previous_mode
147  );
148  directive_failed( status, "rtems_task_mode" );
149  put_mode(
150    "TA1 - rtems_task_mode - RTEMS_NO_PREEMPT           - previous mode: ",
151    previous_mode
152  );
153
154  status = rtems_task_mode(
155    RTEMS_NO_PREEMPT,
156    RTEMS_PREEMPT_MASK,
157    &previous_mode
158  );
159  directive_failed( status, "rtems_task_mode" );
160  put_mode(
161    "TA1 - rtems_task_mode - RTEMS_NO_PREEMPT           - previous mode: ",
162    previous_mode
163  );
164
165  status = rtems_task_mode(
166    RTEMS_PREEMPT,
167    RTEMS_PREEMPT_MASK,
168    &previous_mode
169  );
170  directive_failed( status, "rtems_task_mode" );
171  put_mode(
172    "TA1 - rtems_task_mode - RTEMS_PREEMPT              - previous mode: ",
173    previous_mode
174  );
175
176/* END OF RTEMS_PREEMPT */
177
178/* BEGINNING OF RTEMS_INTERRUPT_LEVEL */
179#if !defined(RTEMS_SMP)
180  status = rtems_task_mode(
181    RTEMS_INTERRUPT_LEVEL(3),
182    RTEMS_INTERRUPT_MASK,
183    &previous_mode
184  );
185  directive_failed( status, "rtems_task_mode" );
186  put_mode(
187    "TA1 - rtems_task_mode - RTEMS_INTERRUPT_LEVEL( 3 ) - previous mode: ",
188    previous_mode
189  );
190
191  status = rtems_task_mode(
192    RTEMS_INTERRUPT_LEVEL(5),
193    RTEMS_INTERRUPT_MASK,
194    &previous_mode
195  );
196  directive_failed( status, "rtems_task_mode" );
197  put_mode(
198    "TA1 - rtems_task_mode - RTEMS_INTERRUPT_LEVEL( 5 ) - previous mode: ",
199    previous_mode
200  );
201#endif
202/* END OF RTEMS_INTERRUPT_LEVEL */
203
204/* BEGINNING OF COMBINATIONS */
205
206  status = rtems_task_mode(
207    RTEMS_INTERRUPT_LEVEL(3) | RTEMS_NO_ASR |
208      RTEMS_TIMESLICE | RTEMS_NO_PREEMPT,
209    RTEMS_INTERRUPT_MASK | RTEMS_ASR_MASK |
210      RTEMS_TIMESLICE_MASK | RTEMS_PREEMPT_MASK,
211    &previous_mode
212  );
213  directive_failed( status, "rtems_task_mode" );
214  put_mode(
215    "TA1 - rtems_task_mode - set all modes        - previous mode: ",
216    previous_mode
217  );
218
219  status = rtems_task_mode(
220    RTEMS_INTERRUPT_LEVEL(3) | RTEMS_NO_ASR |
221      RTEMS_TIMESLICE | RTEMS_NO_PREEMPT,
222    RTEMS_INTERRUPT_MASK | RTEMS_ASR_MASK |
223      RTEMS_TIMESLICE_MASK | RTEMS_PREEMPT_MASK,
224    &previous_mode
225  );
226  directive_failed( status, "rtems_task_mode" );
227  put_mode(
228    "TA1 - rtems_task_mode - set all modes        - previous mode: ",
229    previous_mode
230  );
231
232  status = rtems_task_mode(
233    RTEMS_INTERRUPT_LEVEL(0) | RTEMS_ASR | RTEMS_NO_TIMESLICE | RTEMS_PREEMPT,
234    RTEMS_INTERRUPT_MASK | RTEMS_ASR_MASK |
235    RTEMS_TIMESLICE_MASK | RTEMS_PREEMPT_MASK,
236    &previous_mode
237  );
238  directive_failed( status, "rtems_task_mode" );
239  put_mode(
240    "TA1 - rtems_task_mode - clear all modes      - previous mode: ",
241    previous_mode
242  );
243
244/* END OF COMBINATIONS */
245
246/* BEGINNING OF CURRENT MODE */
247
248  status = rtems_task_mode(
249    RTEMS_CURRENT_MODE,
250    RTEMS_CURRENT_MODE,
251    &previous_mode
252  );
253  directive_failed( status, "rtems_task_mode" );
254  put_mode(
255    "TA1 - rtems_task_mode - get current mode     - previous mode: ",
256    previous_mode
257  );
258
259/* END OF CURRENT MODE */
260
261/* TEST BEING IN A SYSTEM STATE OTHER THAN UP */
262  puts( "TA1 - FORCE system state to before multitasking" );
263  _System_state_Set( SYSTEM_STATE_BEFORE_MULTITASKING );
264
265  puts( "TA1 - enable preemption mode" );
266  status = rtems_task_mode(
267    RTEMS_PREEMPT,
268    RTEMS_PREEMPT_MASK,
269    &previous_mode
270  );
271  directive_failed( status, "rtems_task_mode" );
272  put_mode(
273    "TA1 - rtems_task_mode - RTEMS_PREEMPT              - previous mode: ",
274    previous_mode
275  );
276
277  puts( "TA1 - disable preemption mode" );
278  status = rtems_task_mode(
279    RTEMS_NO_PREEMPT,
280    RTEMS_PREEMPT_MASK,
281    &previous_mode
282  );
283  directive_failed( status, "rtems_task_mode" );
284
285  puts( "TA1 - Restore system state" );
286  _System_state_Set( SYSTEM_STATE_UP );
287
288/* END OF TEST BEING IN A SYSTEM STATE OTHER THAN UP */
289
290  TEST_END();
291  rtems_test_exit( 0 );
292}
293
294/* configuration information */
295#define CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER
296#define CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER
297
298#define CONFIGURE_MAXIMUM_TASKS             1
299#define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION
300
301#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
302
303#define CONFIGURE_DISABLE_SMP_CONFIGURATION
304
305#define CONFIGURE_INIT
306#include <rtems/confdefs.h>
307/* end of file */
Note: See TracBrowser for help on using the repository browser.