Back to home page

LXR

 
 

    


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

0001 /*
0002  *  Copyright (C) 2009 Nickolay Kolchin <nbkolchin@gmail.com>
0003  *
0004  *  Permission to use, copy, modify, and/or distribute this software
0005  *  for any purpose with or without fee is hereby granted.
0006  *
0007  *  THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
0008  *  WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
0009  *  WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR
0010  *  BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES
0011  *  OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
0012  *  WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
0013  *  ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
0014  */
0015 
0016 /*
0017  *  Submitted as part of PR1357
0018  */
0019 
0020 #ifdef HAVE_CONFIG_H
0021 #include "config.h"
0022 #endif
0023 
0024 #include <tmacros.h>
0025 
0026 const char rtems_test_name[] = "SP 47";
0027 
0028 #define PRIXrtems_mode  PRIX32
0029 
0030 rtems_task test_asr(rtems_task_argument unused);
0031 rtems_task Init(rtems_task_argument ignored);
0032 
0033 rtems_task test_asr(rtems_task_argument unused)
0034 {
0035   rtems_mode mode;
0036 
0037   rtems_task_mode(0, RTEMS_CURRENT_MODE, &mode);
0038 
0039   if ( (mode & RTEMS_NO_ASR) == 0 ) {
0040     puts( "ERROR - disable ASR not honored" );
0041     printf(
0042       "mode = 0x%08" PRIXrtems_mode " asr = %s\n", mode,
0043       (mode & RTEMS_NO_ASR) ? "OFF" : "ON"
0044     );
0045   } else
0046     puts( "Creating task with ASR disable mode honored" );
0047 
0048   TEST_END();
0049   rtems_test_exit( 0 );
0050 }
0051 
0052 rtems_task Init(rtems_task_argument ignored)
0053 {
0054   rtems_status_code sc;
0055   rtems_id ti;
0056 
0057   TEST_BEGIN();
0058   sc = rtems_task_create(
0059     rtems_build_name('t', 's', 't', '0'),
0060     100,
0061     RTEMS_MINIMUM_STACK_SIZE,
0062     RTEMS_NO_ASR,
0063     RTEMS_DEFAULT_ATTRIBUTES,
0064     &ti
0065   );
0066 
0067   if (sc != RTEMS_SUCCESSFUL) {
0068     printf("rtems_task_create failed: %i\n", sc);
0069     exit(0);
0070   }
0071 
0072   rtems_task_start(ti, test_asr, 0);
0073 
0074   rtems_task_exit();
0075 }
0076 
0077 /* configuration stuff */
0078 
0079 #define CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER
0080 #define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
0081 
0082 #define CONFIGURE_MICROSECONDS_PER_TICK 10000
0083 
0084 #define CONFIGURE_MAXIMUM_TASKS            64
0085 #define CONFIGURE_MAXIMUM_PERIODS         10
0086 
0087 #define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION
0088 
0089 #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
0090 
0091 #define CONFIGURE_INIT
0092 #include <rtems/confdefs.h>