summaryrefslogtreecommitdiffstats
path: root/c/src/tests/sptests/sp09/screen12.c
diff options
context:
space:
mode:
Diffstat (limited to 'c/src/tests/sptests/sp09/screen12.c')
-rw-r--r--c/src/tests/sptests/sp09/screen12.c327
1 files changed, 327 insertions, 0 deletions
diff --git a/c/src/tests/sptests/sp09/screen12.c b/c/src/tests/sptests/sp09/screen12.c
new file mode 100644
index 0000000000..300d54043a
--- /dev/null
+++ b/c/src/tests/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"
+ );
+
+}