File indexing completed on 2025-05-11 08:24:33
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029 #ifdef HAVE_CONFIG_H
0030 #include "config.h"
0031 #endif
0032
0033 #include "tmacros.h"
0034
0035 #include <stdlib.h>
0036
0037
0038 #include <assert.h>
0039
0040 #include <rtems.h>
0041
0042 void cplusplus_stdio(void);
0043
0044 const char rtems_test_name[] = "EXIT 3";
0045
0046 #define EXIT_STATUS 123
0047
0048 static int counter;
0049
0050 static void atexit_0(void)
0051 {
0052 assert(counter == 0);
0053 ++counter;
0054 }
0055
0056 static void fatal_extension(
0057 rtems_fatal_source source,
0058 bool always_set_to_false,
0059 rtems_fatal_code error
0060 )
0061 {
0062 if (
0063 source == RTEMS_FATAL_SOURCE_EXIT
0064 && !always_set_to_false
0065 && error == EXIT_STATUS
0066 && counter == 1
0067 ) {
0068 TEST_END();
0069 }
0070 }
0071
0072 static void exit_task(rtems_task_argument arg)
0073 {
0074 int rv;
0075
0076 rv = atexit(atexit_0);
0077 assert(rv == 0);
0078
0079 cplusplus_stdio();
0080
0081 exit(EXIT_STATUS);
0082 }
0083
0084 static void Init(rtems_task_argument arg)
0085 {
0086 rtems_status_code sc;
0087 rtems_id id;
0088
0089 TEST_BEGIN();
0090
0091 sc = rtems_task_create(
0092 rtems_build_name('E', 'X', 'I', 'T'),
0093 RTEMS_MINIMUM_PRIORITY,
0094 RTEMS_MINIMUM_STACK_SIZE,
0095 RTEMS_DEFAULT_MODES,
0096 RTEMS_DEFAULT_ATTRIBUTES,
0097 &id
0098 );
0099 assert(sc == RTEMS_SUCCESSFUL);
0100
0101 sc = rtems_task_start(id, exit_task, 0);
0102 assert(sc == RTEMS_SUCCESSFUL);
0103
0104 rtems_task_exit();
0105 }
0106
0107 #define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
0108 #define CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER
0109
0110 #define CONFIGURE_INITIAL_EXTENSIONS \
0111 { .fatal = fatal_extension }, \
0112 RTEMS_TEST_INITIAL_EXTENSION
0113
0114 #define CONFIGURE_MAXIMUM_TASKS 2
0115
0116 #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
0117
0118 #define CONFIGURE_MAXIMUM_POSIX_KEYS 2
0119
0120 #define CONFIGURE_INIT
0121
0122 #include <rtems/confdefs.h>