diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 1995-05-11 17:39:37 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 1995-05-11 17:39:37 +0000 |
commit | ac7d5ef06a6d6e8d84abbd1f0b82162725f98326 (patch) | |
tree | 9304cf759a73f2a1c6fd3191948f00e870af3787 /testsuites/sptests/sp09/screen12.c | |
download | rtems-ac7d5ef06a6d6e8d84abbd1f0b82162725f98326.tar.bz2 |
Initial revision
Diffstat (limited to 'testsuites/sptests/sp09/screen12.c')
-rw-r--r-- | testsuites/sptests/sp09/screen12.c | 327 |
1 files changed, 327 insertions, 0 deletions
diff --git a/testsuites/sptests/sp09/screen12.c b/testsuites/sptests/sp09/screen12.c new file mode 100644 index 0000000000..300d54043a --- /dev/null +++ b/testsuites/sptests/sp09/screen12.c @@ -0,0 +1,327 @@ +/* Screen12 + * + * This routine generates error screen 12 for test 9. + * + * Input parameters: NONE + * + * Output parameters: NONE + * + * COPYRIGHT (c) 1989, 1990, 1991, 1992, 1993, 1994. + * On-Line Applications Research Corporation (OAR). + * All rights assigned to U.S. Government, 1994. + * + * This material may be reproduced by or for the U.S. Government pursuant + * to the copyright license under the clause at DFARS 252.227-7013. This + * notice must appear in all copies of this file and its derivatives. + * + * $Id$ + */ + +#include "system.h" + +void Screen12() +{ + void *segment_address_1; + void *segment_address_2; + void *segment_address_3; + rtems_unsigned32 offset; + rtems_unsigned32 good_front_flag; + rtems_unsigned32 good_back_flag; + rtems_status_code status; + + status = rtems_region_create( + 0, + Region_good_area, + 128, + 32, + RTEMS_DEFAULT_ATTRIBUTES, + &Junk_id + ); + fatal_directive_status( + status, + RTEMS_INVALID_NAME, + "rtems_region_create with illegal name" + ); + puts( "TA1 - rtems_region_create - RTEMS_INVALID_NAME" ); + + status = rtems_region_create( + Region_name[ 1 ], + Region_bad_area, + 128, + 32, + RTEMS_DEFAULT_ATTRIBUTES, + &Junk_id + ); + fatal_directive_status( + status, + RTEMS_INVALID_ADDRESS, + "rtems_region_create with illegal address" + ); + puts( "TA1 - rtems_region_create - RTEMS_INVALID_ADDRESS" ); + + status = rtems_region_create( + Region_name[ 1 ], + Region_good_area, + 128, + 34, + RTEMS_DEFAULT_ATTRIBUTES, + &Junk_id + ); + fatal_directive_status( + status, + RTEMS_INVALID_SIZE, + "rtems_region_create with illegal size" + ); + puts( "TA1 - rtems_region_create - RTEMS_INVALID_SIZE" ); + + status = rtems_region_create( + Region_name[ 1 ], + &Region_good_area[ REGION_START_OFFSET ], + REGION_LENGTH, + 128, + RTEMS_DEFAULT_ATTRIBUTES, + &Region_id[ 1 ] + ); + directive_failed( status, "rtems_region_create" ); + puts( "TA1 - rtems_region_create - RTEMS_SUCCESSFUL" ); + + status = rtems_region_create( + Region_name[ 1 ], + Region_good_area, + 512, + 128, + RTEMS_DEFAULT_ATTRIBUTES, + &Junk_id + ); + fatal_directive_status( + status, + RTEMS_TOO_MANY, + "rtems_region_create of too many" + ); + puts( "TA1 - rtems_region_create - RTEMS_TOO_MANY" ); + + status = rtems_region_delete( 100 ); + fatal_directive_status( + status, + RTEMS_INVALID_ID, + "rtems_region_delete with illegal id" + ); + puts( "TA1 - rtems_region_delete - unknown RTEMS_INVALID_ID" ); + + status = rtems_region_delete( 0x10100 ); + fatal_directive_status( + status, + RTEMS_INVALID_ID, + "rtems_region_delete with illegal id" + ); + puts( "TA1 - rtems_region_delete - local RTEMS_INVALID_ID" ); + + status = rtems_region_ident( 0, &Junk_id ); + fatal_directive_status( + status, + RTEMS_INVALID_NAME, + "rtems_region_ident with illegal name" + ); + puts( "TA1 - rtems_region_ident - RTEMS_INVALID_NAME" ); + + status = rtems_region_get_segment( + 100, + 128, + RTEMS_DEFAULT_OPTIONS, + RTEMS_NO_TIMEOUT, + &segment_address_1 + ); + fatal_directive_status( + status, + RTEMS_INVALID_ID, + "rtems_region_get_segment with illegal id" + ); + puts( "TA1 - rtems_region_get_segment - RTEMS_INVALID_ID" ); + + status = rtems_region_get_segment( + Region_id[ 1 ], + sizeof( Region_good_area ) * 2, + RTEMS_DEFAULT_OPTIONS, + RTEMS_NO_TIMEOUT, + &segment_address_1 + ); + fatal_directive_status( + status, + RTEMS_INVALID_SIZE, + "rtems_region_get_segment with illegal size" + ); + puts( "TA1 - rtems_region_get_segment - RTEMS_INVALID_SIZE" ); + + status = rtems_region_get_segment( + Region_id[ 1 ], + 384, + RTEMS_DEFAULT_OPTIONS, + RTEMS_NO_TIMEOUT, + &segment_address_1 + ); + directive_failed( status, "rtems_region_get_segment" ); + puts( "TA1 - rtems_region_get_segment - RTEMS_SUCCESSFUL" ); + + status = rtems_region_get_segment( + Region_id[ 1 ], + 384, + RTEMS_NO_WAIT, + RTEMS_NO_TIMEOUT, + &segment_address_2 + ); + fatal_directive_status( + status, + RTEMS_UNSATISFIED, + "rtems_region_get_segment unsatisfied" + ); + puts( "TA1 - rtems_region_get_segment - RTEMS_UNSATISFIED" ); + + puts( "TA1 - rtems_region_get_segment - timeout in 3 seconds" ); + status = rtems_region_get_segment( + Region_id[ 1 ], + 128, + RTEMS_DEFAULT_OPTIONS, + 3 * TICKS_PER_SECOND, + &segment_address_3 + ); + fatal_directive_status( + status, + RTEMS_TIMEOUT, + "rtems_region_get_segment timeout" + ); + puts( "TA1 - rtems_region_get_segment - woke up with RTEMS_TIMEOUT" ); + + status = rtems_region_delete( Region_id[ 1 ] ); + fatal_directive_status( + status, + RTEMS_RESOURCE_IN_USE, + "rtems_region_delete with buffers in use" + ); + puts( "TA1 - rtems_region_delete - RTEMS_RESOURCE_IN_USE" ); + + status = rtems_region_return_segment( 100, segment_address_1 ); + fatal_directive_status( + status, + RTEMS_INVALID_ID, + "rtems_region_return_segment with illegal id" + ); + puts( "TA1 - rtems_region_return_segment - RTEMS_INVALID_ID" ); + + status = rtems_region_return_segment( Region_id[ 1 ], Region_good_area ); + fatal_directive_status( + status, + RTEMS_INVALID_ADDRESS, + "rtems_region_return_segment with illegal segment" + ); + puts( "TA1 - rtems_region_return_segment - RTEMS_INVALID_ADDRESS" ); + +/* + * The following generate internal heap errors. Thus this code + * is subject to change if the heap code changes. + */ + + puts( "TA1 - rtems_debug_disable - RTEMS_DEBUG_REGION" ); + rtems_debug_disable( RTEMS_DEBUG_REGION ); + + offset = (segment_address_1 - (void *)Region_good_area) / 4; + +/* bad FRONT_FLAG error */ + + good_front_flag = Region_good_area[ offset - 1 ]; + Region_good_area[ offset - 1 ] = good_front_flag + 2; + + status = rtems_region_return_segment( Region_id[ 1 ], segment_address_1 ); + fatal_directive_status( + status, + RTEMS_INVALID_ADDRESS, + "rtems_region_return_segment with back_flag != front_flag" + ); + puts( "TA1 - rtems_region_return_segment - RTEMS_INVALID_ADDRESS" ); + + Region_good_area[ offset - 1 ] = good_front_flag; + +/* bad FRONT_FLAG error */ + + good_back_flag = Region_good_area[ offset - 2 ]; + Region_good_area[ offset - 2 ] = 1024; + + status = rtems_region_return_segment( Region_id[ 1 ], segment_address_1 ); + fatal_directive_status( + status, + RTEMS_INVALID_ADDRESS, + "rtems_region_return_segment with back_flag != front_flag" + ); + puts( "TA1 - rtems_region_return_segment - RTEMS_INVALID_ADDRESS" ); + + Region_good_area[ offset - 2 ] = good_back_flag; + + puts( "TA1 - rtems_debug_enable - RTEMS_DEBUG_REGION" ); + rtems_debug_enable( RTEMS_DEBUG_REGION ); + + status = rtems_region_extend( + 100, + Region_good_area, + 128 + ); + fatal_directive_status( + status, + RTEMS_INVALID_ID, + "rtems_region_extend with illegal id" + ); + puts( "TA1 - rtems_region_extend - RTEMS_INVALID_ID" ); + + status = rtems_region_extend( + Region_id[ 1 ], + &Region_good_area[ REGION_START_OFFSET + 16 ], + 128 + ); + fatal_directive_status( + status, + RTEMS_INVALID_ADDRESS, + "rtems_region_extend with illegal starting address" + ); + puts( "TA1 - rtems_region_extend - within heap - RTEMS_INVALID_ADDRESS" ); + + status = rtems_region_extend( + Region_id[ 1 ], + Region_bad_area, + 128 + ); + fatal_directive_status( + status, + RTEMS_NOT_IMPLEMENTED, + "rtems_region_extend with unsupported starting address" + ); + puts( + "TA1 - rtems_region_extend - non-contiguous lower - RTEMS_NOT_IMPLEMENTED" + ); + + status = rtems_region_extend( + Region_id[ 1 ], + &Region_good_area[ REGION_START_OFFSET - REGION_LENGTH ], + 128 + ); + fatal_directive_status( + status, + RTEMS_NOT_IMPLEMENTED, + "rtems_region_extend with unsupported starting address" + ); + puts( + "TA1 - rtems_region_extend - contiguous lower - RTEMS_NOT_IMPLEMENTED" + ); + + status = rtems_region_extend( + Region_id[ 1 ], + &Region_good_area[ REGION_START_OFFSET + REGION_LENGTH + 16 ], + 128 + ); + fatal_directive_status( + status, + RTEMS_NOT_IMPLEMENTED, + "rtems_region_extend with unsupported starting address" + ); + puts( + "TA1 - rtems_region_extend - non-contiguous higher - RTEMS_NOT_IMPLEMENTED" + ); + +} |