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 #ifdef HAVE_CONFIG_H
0029 #include "config.h"
0030 #endif
0031
0032 #include "tmacros.h"
0033
0034 #include <stdlib.h>
0035
0036
0037 #include <assert.h>
0038
0039 #include <rtems.h>
0040
0041 const char rtems_test_name[] = "EXIT 2";
0042
0043 #define EXIT_STATUS 123
0044
0045 static void atexit_not_reached(void)
0046 {
0047 assert(0);
0048 }
0049
0050 static void fatal_extension(
0051 rtems_fatal_source source,
0052 bool always_set_to_false,
0053 rtems_fatal_code error
0054 )
0055 {
0056 if (
0057 source == RTEMS_FATAL_SOURCE_EXIT
0058 && !always_set_to_false
0059 && error == EXIT_STATUS
0060 ) {
0061 TEST_END();
0062 }
0063 }
0064
0065 static void exit_task(rtems_task_argument arg)
0066 {
0067 int rv;
0068
0069 rv = atexit(atexit_not_reached);
0070 assert(rv == 0);
0071
0072 _Exit(EXIT_STATUS);
0073 }
0074
0075 static void Init(rtems_task_argument arg)
0076 {
0077 rtems_status_code sc;
0078 rtems_id id;
0079
0080 TEST_BEGIN();
0081
0082 sc = rtems_task_create(
0083 rtems_build_name('E', 'X', 'I', 'T'),
0084 RTEMS_MINIMUM_PRIORITY,
0085 RTEMS_MINIMUM_STACK_SIZE,
0086 RTEMS_DEFAULT_MODES,
0087 RTEMS_DEFAULT_ATTRIBUTES,
0088 &id
0089 );
0090 assert(sc == RTEMS_SUCCESSFUL);
0091
0092 sc = rtems_task_start(id, exit_task, 0);
0093 assert(sc == RTEMS_SUCCESSFUL);
0094
0095 rtems_task_exit();
0096 }
0097
0098 #define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
0099 #define CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER
0100
0101 #define CONFIGURE_INITIAL_EXTENSIONS \
0102 { .fatal = fatal_extension }, \
0103 RTEMS_TEST_INITIAL_EXTENSION
0104
0105 #define CONFIGURE_MAXIMUM_TASKS 2
0106
0107 #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
0108
0109 #define CONFIGURE_INIT
0110
0111 #include <rtems/confdefs.h>