Back to home page

LXR

 
 

    


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

0001 /* SPDX-License-Identifier: BSD-2-Clause */
0002 
0003 /* 
0004  *  COPYRIGHT (c) 1989-2012.
0005  *  On-Line Applications Research Corporation (OAR).
0006  *
0007  * Redistribution and use in source and binary forms, with or without
0008  * modification, are permitted provided that the following conditions
0009  * are met:
0010  * 1. Redistributions of source code must retain the above copyright
0011  *    notice, this list of conditions and the following disclaimer.
0012  * 2. Redistributions in binary form must reproduce the above copyright
0013  *    notice, this list of conditions and the following disclaimer in the
0014  *    documentation and/or other materials provided with the distribution.
0015  *
0016  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
0017  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
0018  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
0019  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
0020  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
0021  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
0022  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
0023  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
0024  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
0025  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
0026  * POSSIBILITY OF SUCH DAMAGE.
0027  */
0028 
0029 #ifdef HAVE_CONFIG_H
0030 #include "config.h"
0031 #endif
0032 
0033 #include <tmacros.h>
0034 
0035 const char rtems_test_name[] = "SP 76";
0036 
0037 static rtems_task High_task(
0038   rtems_task_argument index
0039 )
0040 {
0041   rtems_status_code  status;
0042   rtems_name         name;
0043 
0044   status = rtems_object_get_classic_name( rtems_task_self(), &name );
0045   directive_failed( status, "rtems_object_get_classic_name" );
0046 
0047   put_name( name, FALSE );
0048   puts( " - Successfully yielded it to higher priority task" );
0049 
0050   TEST_END();
0051   rtems_test_exit( 0 );
0052 }
0053 
0054 static rtems_task Equal_task(
0055   rtems_task_argument index
0056 )
0057 {
0058   rtems_test_assert( 0 );
0059 }
0060 
0061 static rtems_task Init(
0062   rtems_task_argument argument
0063 )
0064 {
0065   rtems_status_code     status;
0066   rtems_id              id;
0067   rtems_task_priority   old;
0068 
0069   TEST_BEGIN();
0070 
0071   status = rtems_task_ident( RTEMS_WHO_AM_I, RTEMS_SEARCH_ALL_NODES, &id );
0072   directive_failed( status, "task ident" );
0073 
0074   /* to make sure it is equal to TA2 */
0075   puts( "Set Init task priority = 2" );
0076   status = rtems_task_set_priority( id, 2, &old );
0077   directive_failed( status, "task priority" );
0078 
0079   puts( "Create TA1 at higher priority task" );
0080   status = rtems_task_create(
0081     rtems_build_name( 'T', 'A', '1', ' ' ),
0082     1,
0083     RTEMS_MINIMUM_STACK_SIZE,
0084     RTEMS_DEFAULT_MODES,
0085     RTEMS_DEFAULT_ATTRIBUTES,
0086     &id
0087   );
0088   directive_failed( status, "create 1" );
0089 
0090   status = rtems_task_start( id, High_task, 1 );
0091   directive_failed( status, "start 1" );
0092 
0093   puts( "Create TA2 at equal priority task" );
0094   status = rtems_task_create(
0095     rtems_build_name( 'T', 'A', '2', ' ' ),
0096     2,
0097     RTEMS_MINIMUM_STACK_SIZE,
0098     RTEMS_DEFAULT_MODES,
0099     RTEMS_DEFAULT_ATTRIBUTES,
0100     &id
0101   );
0102   directive_failed( status, "create 2" );
0103 
0104   status = rtems_task_start( id, Equal_task, 1 );
0105   directive_failed( status, "start 2" );
0106 
0107   puts( "Yield to TA1" );
0108   status = rtems_task_wake_after( RTEMS_YIELD_PROCESSOR );
0109   directive_failed( status, "yield" );
0110 
0111   puts( "*** should now get here ***" );
0112 }
0113 
0114 /* configuration information */
0115 #include <bsp.h> /* for device driver prototypes */
0116 
0117 #define CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER
0118 #define CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER
0119 
0120 #define CONFIGURE_MAXIMUM_TASKS           3
0121 #define CONFIGURE_INIT_TASK_PRIORITY      2
0122 
0123 #define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION
0124 
0125 #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
0126 
0127 #define CONFIGURE_INIT
0128 #include <rtems/confdefs.h>
0129 /* end of file */