Back to home page

LXR

 
 

    


File indexing completed on 2025-05-11 08:24:51

0001 /* SPDX-License-Identifier: BSD-2-Clause */
0002 
0003 /**
0004  * @file
0005  *
0006  * @ingroup TestsuitesBspsFatalExtension
0007  */
0008 
0009 /*
0010  * Copyright (C) 2021, 2022 embedded brains GmbH & Co. KG
0011  *
0012  * Redistribution and use in source and binary forms, with or without
0013  * modification, are permitted provided that the following conditions
0014  * are met:
0015  * 1. Redistributions of source code must retain the above copyright
0016  *    notice, this list of conditions and the following disclaimer.
0017  * 2. Redistributions in binary form must reproduce the above copyright
0018  *    notice, this list of conditions and the following disclaimer in the
0019  *    documentation and/or other materials provided with the distribution.
0020  *
0021  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
0022  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
0023  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
0024  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
0025  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
0026  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
0027  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
0028  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
0029  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
0030  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
0031  * POSSIBILITY OF SUCH DAMAGE.
0032  */
0033 
0034 /*
0035  * This file is part of the RTEMS quality process and was automatically
0036  * generated.  If you find something that needs to be fixed or
0037  * worded better please post a report or patch to an RTEMS mailing list
0038  * or raise a bug report:
0039  *
0040  * https://www.rtems.org/bugs.html
0041  *
0042  * For information on updating and regenerating please refer to the How-To
0043  * section in the Software Requirements Engineering chapter of the
0044  * RTEMS Software Engineering manual.  The manual is provided as a part of
0045  * a release.  For development sources please refer to the online
0046  * documentation at:
0047  *
0048  * https://docs.rtems.org
0049  */
0050 
0051 #ifdef HAVE_CONFIG_H
0052 #include "config.h"
0053 #endif
0054 
0055 #include <rtems.h>
0056 #include <rtems/bspIo.h>
0057 #include <rtems/test-info.h>
0058 #include <rtems/test.h>
0059 #include <rtems/testopts.h>
0060 #include <rtems/score/smpimpl.h>
0061 
0062 #include "ts-config.h"
0063 #include "tx-support.h"
0064 
0065 #include <rtems/test.h>
0066 
0067 /**
0068  * @defgroup TestsuitesBspsFatalExtension spec:/testsuites/bsps/fatal-extension
0069  *
0070  * @ingroup RTEMSTestSuitesValidation
0071  *
0072  * @brief This validation test suite provides an application configuration to
0073  *   perform a shutdown.
0074  *
0075  * @{
0076  */
0077 
0078 const char rtems_test_name[] = "TestsuitesBspsFatalExtension";
0079 
0080 static char buffer[ 512 ];
0081 
0082 static const T_action actions[] = {
0083   T_report_hash_sha256
0084 };
0085 
0086 static const T_config test_config = {
0087   .name = rtems_test_name,
0088   .buf = buffer,
0089   .buf_size = sizeof( buffer ),
0090   .putchar = rtems_put_char,
0091   .verbosity = RTEMS_TEST_VERBOSITY,
0092   .now = T_now_tick,
0093   .allocate = T_memory_allocate,
0094   .deallocate = T_memory_deallocate,
0095   .action_count = T_ARRAY_SIZE( actions ),
0096   .actions = actions
0097 };
0098 
0099 void __real_bsp_reset( rtems_fatal_source source, rtems_fatal_code code );
0100 
0101 void __wrap_bsp_reset( rtems_fatal_source source, rtems_fatal_code code );
0102 
0103 void __wrap_bsp_reset( rtems_fatal_source source, rtems_fatal_code code )
0104 {
0105   int exit_code;
0106 
0107   T_register();
0108   exit_code = T_main( &test_config );
0109 
0110   if ( exit_code == 0 ) {
0111     rtems_test_end( rtems_test_name );
0112   }
0113 
0114 #if defined(RTEMS_GCOV_COVERAGE)
0115   rtems_test_gcov_dump_info();
0116 #endif
0117   __real_bsp_reset( source, code );
0118 }
0119 
0120 #if !defined(RTEMS_SMP)
0121 void *__real__CPU_Thread_Idle_body( void *arg );
0122 
0123 void *__wrap__CPU_Thread_Idle_body( void *arg );
0124 
0125 void *__wrap__CPU_Thread_Idle_body( void *arg )
0126 {
0127   return __real__CPU_Thread_Idle_body( arg );
0128 }
0129 #endif
0130 
0131 #define CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER
0132 
0133 #if defined(RTEMS_SMP)
0134 #define CONFIGURE_MAXIMUM_PROCESSORS 2
0135 
0136 #include <rtems/score/scheduleredfsmp.h>
0137 
0138 #define CONFIGURE_SCHEDULER_EDF_SMP
0139 
0140 #include <rtems/scheduler.h>
0141 
0142 RTEMS_SCHEDULER_EDF_SMP( a );
0143 
0144 #define CONFIGURE_SCHEDULER_TABLE_ENTRIES \
0145   RTEMS_SCHEDULER_TABLE_EDF_SMP( a, TEST_SCHEDULER_A_NAME )
0146 
0147 #define CONFIGURE_SCHEDULER_ASSIGNMENTS \
0148   RTEMS_SCHEDULER_ASSIGN( 0, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_MANDATORY ), \
0149   RTEMS_SCHEDULER_ASSIGN( 0, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_MANDATORY )
0150 #endif /* RTEMS_SMP */
0151 
0152 #define CONFIGURE_MAXIMUM_FILE_DESCRIPTORS 0
0153 
0154 #define CONFIGURE_MAXIMUM_USER_EXTENSIONS 1
0155 
0156 #define CONFIGURE_DISABLE_NEWLIB_REENTRANCY
0157 
0158 #define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM
0159 
0160 #define CONFIGURE_IDLE_TASK_STORAGE_SIZE RTEMS_MINIMUM_STACK_SIZE
0161 
0162 #define CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION
0163 
0164 static void *ShutdownIdleBody( uintptr_t arg )
0165 {
0166 #if defined(RTEMS_SMP)
0167   if ( rtems_scheduler_get_processor() == 0 ) {
0168     rtems_test_begin( rtems_test_name, TEST_STATE );
0169     rtems_fatal( RTEMS_FATAL_SOURCE_SMP, SMP_FATAL_SHUTDOWN );
0170   }
0171 
0172   return _CPU_Thread_Idle_body( arg );
0173 #else
0174   rtems_test_begin( rtems_test_name, TEST_STATE );
0175   rtems_fatal( RTEMS_FATAL_SOURCE_APPLICATION, 123 );
0176 #endif
0177 }
0178 
0179 #define CONFIGURE_IDLE_TASK_BODY ShutdownIdleBody
0180 
0181 #define CONFIGURE_INITIAL_EXTENSIONS { .fatal = FatalInitialExtension }
0182 
0183 #define CONFIGURE_INIT
0184 
0185 #include <rtems/confdefs.h>
0186 
0187 /** @} */