summaryrefslogtreecommitdiffstats
path: root/c/src/tests/sptests/sp13
diff options
context:
space:
mode:
Diffstat (limited to 'c/src/tests/sptests/sp13')
-rw-r--r--c/src/tests/sptests/sp13/fillbuff.c31
-rw-r--r--c/src/tests/sptests/sp13/init.c112
-rw-r--r--c/src/tests/sptests/sp13/putbuff.c31
-rw-r--r--c/src/tests/sptests/sp13/sp13.doc25
-rw-r--r--c/src/tests/sptests/sp13/sp13.scn66
-rw-r--r--c/src/tests/sptests/sp13/system.h30
-rw-r--r--c/src/tests/sptests/sp13/task1.c213
-rw-r--r--c/src/tests/sptests/sp13/task2.c132
-rw-r--r--c/src/tests/sptests/sp13/task3.c74
9 files changed, 714 insertions, 0 deletions
diff --git a/c/src/tests/sptests/sp13/fillbuff.c b/c/src/tests/sptests/sp13/fillbuff.c
new file mode 100644
index 0000000000..43ccd86803
--- /dev/null
+++ b/c/src/tests/sptests/sp13/fillbuff.c
@@ -0,0 +1,31 @@
+/* Fill_buffer
+ *
+ * This test routine copies a given source string to a given destination
+ * buffer.
+ *
+ * Input parameters:
+ * source - pointer to string to be copied
+ * buffer - pointer to message buffer to be filled
+ *
+ * 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 Fill_buffer(
+ char *source,
+ long *buffer
+)
+{
+ memcpy( buffer, source, 16 );
+}
diff --git a/c/src/tests/sptests/sp13/init.c b/c/src/tests/sptests/sp13/init.c
new file mode 100644
index 0000000000..0629cdff21
--- /dev/null
+++ b/c/src/tests/sptests/sp13/init.c
@@ -0,0 +1,112 @@
+/* Init
+ *
+ * This routine is the initialization task for this test program.
+ * It is a user initialization task and has the responsibility for creating
+ * and starting the tasks that make up the test. If the time of day
+ * clock is required for the test, it should also be set to a known
+ * value by this function.
+ *
+ * Input parameters:
+ * argument - task argument
+ *
+ * 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"
+#undef EXTERN
+#define EXTERN
+#include "conftbl.h"
+#include "gvar.h"
+
+rtems_task Init(
+ rtems_task_argument argument
+)
+{
+ rtems_status_code status;
+
+ puts( "\n\n*** TEST 13 ***" );
+
+ Task_name[ 1 ] = rtems_build_name( 'T', 'A', '1', ' ' );
+ Task_name[ 2 ] = rtems_build_name( 'T', 'A', '2', ' ' );
+ Task_name[ 3 ] = rtems_build_name( 'T', 'A', '3', ' ' );
+
+ status = rtems_task_create(
+ Task_name[ 1 ],
+ 4,
+ 2048,
+ RTEMS_DEFAULT_MODES,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &Task_id[ 1 ]
+ );
+ directive_failed( status, "rtems_task_create of TA1" );
+
+ status = rtems_task_create(
+ Task_name[ 2 ],
+ 4,
+ 2048,
+ RTEMS_DEFAULT_MODES,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &Task_id[ 2 ]
+ );
+ directive_failed( status, "rtems_task_create of TA2" );
+
+ status = rtems_task_create(
+ Task_name[ 3 ],
+ 4,
+ 2048,
+ RTEMS_DEFAULT_MODES,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &Task_id[ 3 ]
+ );
+ directive_failed( status, "rtems_task_create of TA3" );
+
+ status = rtems_task_start( Task_id[ 1 ], Task_1, 0 );
+ directive_failed( status, "rtems_task_start of TA1" );
+
+ status = rtems_task_start( Task_id[ 2 ], Task_2, 0 );
+ directive_failed( status, "rtems_task_start of TA2" );
+
+ status = rtems_task_start( Task_id[ 3 ], Task_3, 0 );
+ directive_failed( status, "rtems_task_start of TA3" );
+
+ Queue_name[ 1 ] = rtems_build_name( 'Q', '1', ' ', ' ' );
+ Queue_name[ 2 ] = rtems_build_name( 'Q', '2', ' ', ' ' );
+ Queue_name[ 3 ] = rtems_build_name( 'Q', '3', ' ', ' ' );
+
+ status = rtems_message_queue_create(
+ Queue_name[ 1 ],
+ 0,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &Queue_id[ 1 ]
+ );
+ directive_failed( status, "rtems_message_queue_create of Q1" );
+
+ status = rtems_message_queue_create(
+ Queue_name[ 2 ],
+ 10,
+ RTEMS_PRIORITY | RTEMS_LIMIT,
+ &Queue_id[ 2 ]
+ );
+ directive_failed( status, "rtems_message_queue_create of Q2" );
+
+ status = rtems_message_queue_create(
+ Queue_name[ 3 ],
+ 0,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &Queue_id[ 3 ]
+ );
+ directive_failed( status, "rtems_message_queue_create of Q3" );
+
+ status = rtems_task_delete( RTEMS_SELF );
+ directive_failed( status, "rtems_task_delete of RTEMS_SELF" );
+}
diff --git a/c/src/tests/sptests/sp13/putbuff.c b/c/src/tests/sptests/sp13/putbuff.c
new file mode 100644
index 0000000000..e0bbfa4d7f
--- /dev/null
+++ b/c/src/tests/sptests/sp13/putbuff.c
@@ -0,0 +1,31 @@
+/* Put_buffer
+ *
+ * This test routine prints the given buffer.
+ * buffer.
+ *
+ * Input parameters:
+ * buffer - pointer to message buffer to be printer
+ *
+ * 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"
+
+#define BUFFER_LENGTH 16
+
+void Put_buffer(
+ long *buffer
+)
+{
+ printf( "%16s", (char *)buffer );
+}
diff --git a/c/src/tests/sptests/sp13/sp13.doc b/c/src/tests/sptests/sp13/sp13.doc
new file mode 100644
index 0000000000..4a0c9d24a0
--- /dev/null
+++ b/c/src/tests/sptests/sp13/sp13.doc
@@ -0,0 +1,25 @@
+#
+# $Id$
+#
+# 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.
+#
+
+
+This file describes the directives and concepts tested by this test set.
+
+test set name: test13
+
+directives:
+ ex_init, ex_start, t_create, t_start, t_delete, tm_tick, i_return,
+ q_create, q_ident, q_delete, q_send, q_urgent, q_broadcast, q_receive,
+ tm_wkafter, t_setpri
+
+concepts:
+
+ a. This test checks out the message manager.
diff --git a/c/src/tests/sptests/sp13/sp13.scn b/c/src/tests/sptests/sp13/sp13.scn
new file mode 100644
index 0000000000..bd3af7da48
--- /dev/null
+++ b/c/src/tests/sptests/sp13/sp13.scn
@@ -0,0 +1,66 @@
+*** TEST 13 ***
+TA1 - rtems_message_queue_ident - qid => 00010001
+TA1 - rtems_message_queue_send - BUFFER 1 TO Q 1
+TA1 - rtems_message_queue_send - BUFFER 2 TO Q 1
+TA1 - rtems_task_wake_after - sleep 5 seconds
+TA2 - rtems_message_queue_receive - receive from queue 1 - RTEMS_NO_WAIT
+TA2 - buffer received: BUFFER 1 TO Q 1
+TA2 - rtems_message_queue_receive - receive from queue 1 - RTEMS_WAIT FOREVER
+TA2 - buffer received: BUFFER 2 TO Q 1
+TA2 - rtems_message_queue_receive - receive from queue 1 - RTEMS_WAIT FOREVER
+TA3 - rtems_message_queue_receive - receive from queue 2 - RTEMS_WAIT FOREVER
+TA1 - rtems_message_queue_send - BUFFER 3 TO Q 1
+TA1 - rtems_task_wake_after - sleep 5 seconds
+TA2 - buffer received: BUFFER 3 TO Q 1
+TA2 - rtems_task_set_priority - make self highest priority task
+TA2 - rtems_message_queue_receive - receive from queue 2 - RTEMS_WAIT FOREVER
+<pause>
+TA1 - rtems_message_queue_send - BUFFER 1 TO Q 2
+TA2 - buffer received: BUFFER 1 TO Q 2
+TA2 - rtems_message_queue_send - BUFFER 2 TO Q 2
+TA2 - rtems_message_queue_receive - receive from queue 1 - 10 second timeout
+TA1 - rtems_message_queue_receive - receive from queue 1 - 10 second timeout
+TA3 - buffer received: BUFFER 2 TO Q 2
+TA3 - rtems_message_queue_broadcast - BUFFER 3 TO Q 1
+TA2 - buffer received: BUFFER 3 TO Q 1
+TA2 - rtems_message_queue_receive - receive from queue 3 - RTEMS_WAIT FOREVER
+TA3 - number of tasks awakened = 02
+TA3 - rtems_message_queue_receive - receive from queue 3 - RTEMS_WAIT FOREVER
+TA1 - buffer received: BUFFER 3 TO Q 1
+TA1 - rtems_task_delete - delete TA2
+TA1 - rtems_message_queue_send - BUFFER 1 TO Q 3
+TA1 - rtems_task_wake_after - sleep 5 seconds
+TA3 - buffer received: BUFFER 1 TO Q 3
+TA3 - rtems_task_delete - delete self
+<pause>
+TA1 - rtems_message_queue_send - BUFFER 2 TO Q 3
+TA1 - rtems_message_queue_send - BUFFER 3 TO Q 3
+TA1 - rtems_message_queue_send - BUFFER 4 TO Q 3
+TA1 - rtems_message_queue_urgent - BUFFER 5 TO Q 3
+TA1 - rtems_message_queue_receive - receive from queue 3 - RTEMS_WAIT FOREVER
+TA1 - buffer received: BUFFER 5 TO Q 3
+TA1 - rtems_message_queue_receive - receive from queue 3 - RTEMS_WAIT FOREVER
+TA1 - buffer received: BUFFER 2 TO Q 3
+TA1 - rtems_message_queue_receive - receive from queue 3 - RTEMS_WAIT FOREVER
+TA1 - buffer received: BUFFER 3 TO Q 3
+TA1 - rtems_message_queue_receive - receive from queue 3 - RTEMS_WAIT FOREVER
+TA1 - buffer received: BUFFER 4 TO Q 3
+TA1 - rtems_message_queue_urgent - BUFFER 3 TO Q 2
+TA1 - rtems_message_queue_receive - receive from queue 2 - RTEMS_WAIT FOREVER
+TA1 - buffer received: BUFFER 3 TO Q 2
+<pause>
+TA1 - rtems_message_queue_delete - delete queue 1
+TA1 - rtems_message_queue_urgent - BUFFER 3 TO Q 2
+TA1 - rtems_message_queue_delete - delete queue 2
+TA1 - rtems_message_queue_flush - empty Q 3
+TA1 - 0 messages were flushed from Q 3
+TA1 - rtems_message_queue_send - BUFFER 1 TO Q 3
+TA1 - rtems_message_queue_send - BUFFER 2 TO Q 3
+TA1 - rtems_message_queue_send - BUFFER 3 TO Q 3
+TA1 - rtems_message_queue_flush - Q 3
+TA1 - 3 messages were flushed from Q 3
+TA1 - rtems_message_queue_send until all message buffers consumed
+TA1 - all message buffers consumed
+TA1 - rtems_message_queue_flush - Q 3
+TA1 - 100 messages were flushed from Q 3
+*** END OF TEST 13 ***
diff --git a/c/src/tests/sptests/sp13/system.h b/c/src/tests/sptests/sp13/system.h
new file mode 100644
index 0000000000..aa2c6d17e4
--- /dev/null
+++ b/c/src/tests/sptests/sp13/system.h
@@ -0,0 +1,30 @@
+/* system.h
+ *
+ * This include file contains information that is included in every
+ * function in the test set.
+ *
+ * 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 <rtems.h>
+#include "tmacros.h"
+
+/* Miscellaneous */
+
+#define EXTERN extern /* external definition */
+
+/* macros */
+
+/* structures */
+
+#include "gvar.h"
+
+/* end of include file */
diff --git a/c/src/tests/sptests/sp13/task1.c b/c/src/tests/sptests/sp13/task1.c
new file mode 100644
index 0000000000..89c0619025
--- /dev/null
+++ b/c/src/tests/sptests/sp13/task1.c
@@ -0,0 +1,213 @@
+/* Task_1
+ *
+ * This routine serves as a test task. It verifies the message manager.
+ *
+ * Input parameters:
+ * argument - task argument
+ *
+ * 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"
+
+extern rtems_configuration_table BSP_Configuration;
+
+rtems_task Task_1(
+ rtems_task_argument argument
+)
+{
+ rtems_id qid;
+ long buffer[ 4 ];
+ rtems_unsigned32 index;
+ rtems_unsigned32 count;
+ rtems_status_code status;
+
+ status = rtems_message_queue_ident(
+ Queue_name[ 1 ],
+ RTEMS_SEARCH_ALL_NODES,
+ &qid
+ );
+ printf( "TA1 - rtems_message_queue_ident - qid => %08x\n", qid );
+ directive_failed( status, "rtems_message_queue_ident" );
+
+ Fill_buffer( "BUFFER 1 TO Q 1", buffer );
+ puts( "TA1 - rtems_message_queue_send - BUFFER 1 TO Q 1" );
+ status = rtems_message_queue_send( Queue_id[ 1 ], (long (*)[4])buffer );
+ directive_failed( status, "rtems_message_queue_send" );
+
+ Fill_buffer( "BUFFER 2 TO Q 1", buffer );
+ puts( "TA1 - rtems_message_queue_send - BUFFER 2 TO Q 1" );
+ status = rtems_message_queue_send( Queue_id[ 1 ], (long (*)[4])buffer );
+ directive_failed( status, "rtems_message_queue_send" );
+
+ puts( "TA1 - rtems_task_wake_after - sleep 5 seconds" );
+ status = rtems_task_wake_after( 5*TICKS_PER_SECOND );
+ directive_failed( status, "rtems_task_wake_after" );
+
+ Fill_buffer( "BUFFER 3 TO Q 1", buffer );
+ puts( "TA1 - rtems_message_queue_send - BUFFER 3 TO Q 1" );
+ status = rtems_message_queue_send( Queue_id[ 1 ], (long (*)[4])buffer );
+ directive_failed( status, "rtems_message_queue_send" );
+
+ puts( "TA1 - rtems_task_wake_after - sleep 5 seconds" );
+ status = rtems_task_wake_after( 5*TICKS_PER_SECOND );
+ directive_failed( status, "rtems_task_wake_after" );
+
+pause();
+
+ Fill_buffer( "BUFFER 1 TO Q 2", buffer );
+ puts( "TA1 - rtems_message_queue_send - BUFFER 1 TO Q 2" );
+ status = rtems_message_queue_send( Queue_id[ 2 ], (long (*)[4])buffer );
+ directive_failed( status, "rtems_message_queue_send" );
+
+ puts_nocr( "TA1 - rtems_message_queue_receive - receive from queue 1 - " );
+ puts ( "10 second timeout" );
+ status = rtems_message_queue_receive(
+ Queue_id[ 1 ],
+ (long (*)[4])buffer,
+ RTEMS_DEFAULT_OPTIONS,
+ 10 * TICKS_PER_SECOND
+ );
+ directive_failed( status, "rtems_message_queue_receive" );
+ puts_nocr( "TA1 - buffer received: " );
+ Put_buffer( buffer );
+ new_line;
+
+ puts( "TA1 - rtems_task_delete - delete TA2" );
+ status = rtems_task_delete( Task_id[ 2 ] );
+ directive_failed( status, "rtems_task_delete" );
+
+ Fill_buffer( "BUFFER 1 TO Q 3", buffer );
+ puts( "TA1 - rtems_message_queue_send - BUFFER 1 TO Q 3" );
+ status = rtems_message_queue_send( Queue_id[ 3 ], (long (*)[4])buffer );
+ directive_failed( status, "rtems_message_queue_send" );
+
+ puts( "TA1 - rtems_task_wake_after - sleep 5 seconds" );
+ status = rtems_task_wake_after( 5*TICKS_PER_SECOND );
+ directive_failed( status, "rtems_task_wake_after" );
+
+pause();
+
+ Fill_buffer( "BUFFER 2 TO Q 3", buffer );
+ puts( "TA1 - rtems_message_queue_send - BUFFER 2 TO Q 3" );
+ status = rtems_message_queue_send( Queue_id[ 3 ], (long (*)[4])buffer );
+ directive_failed( status, "rtems_message_queue_send" );
+
+ Fill_buffer( "BUFFER 3 TO Q 3", buffer );
+ puts( "TA1 - rtems_message_queue_send - BUFFER 3 TO Q 3" );
+ status = rtems_message_queue_send( Queue_id[ 3 ], (long (*)[4])buffer );
+ directive_failed( status, "rtems_message_queue_send" );
+
+ Fill_buffer( "BUFFER 4 TO Q 3", buffer );
+ puts( "TA1 - rtems_message_queue_send - BUFFER 4 TO Q 3" );
+ status = rtems_message_queue_send( Queue_id[ 3 ], (long (*)[4])buffer );
+ directive_failed( status, "rtems_message_queue_send" );
+
+ Fill_buffer( "BUFFER 5 TO Q 3", buffer );
+ puts( "TA1 - rtems_message_queue_urgent - BUFFER 5 TO Q 3" );
+ status = rtems_message_queue_urgent( Queue_id[ 3 ], (long (*)[4])buffer );
+ directive_failed( status, "rtems_message_queue_urgent" );
+
+ for ( index = 1 ; index <= 4 ; index++ ) {
+ puts(
+ "TA1 - rtems_message_queue_receive - receive from queue 3 - "
+ "RTEMS_WAIT FOREVER"
+ );
+ status = rtems_message_queue_receive(
+ Queue_id[ 3 ],
+ (long (*)[4])buffer,
+ RTEMS_DEFAULT_OPTIONS,
+ RTEMS_NO_TIMEOUT
+ );
+ directive_failed( status, "rtems_message_queue_receive" );
+ puts_nocr( "TA1 - buffer received: " );
+ Put_buffer( buffer );
+ new_line;
+ }
+
+ Fill_buffer( "BUFFER 3 TO Q 2", buffer );
+ puts( "TA1 - rtems_message_queue_urgent - BUFFER 3 TO Q 2" );
+ status = rtems_message_queue_urgent( Queue_id[ 2 ], (long (*)[4])buffer );
+ directive_failed( status, "rtems_message_queue_urgent" );
+
+ puts(
+ "TA1 - rtems_message_queue_receive - receive from queue 2 - "
+ "RTEMS_WAIT FOREVER"
+ );
+ status = rtems_message_queue_receive(
+ Queue_id[ 2 ],
+ (long (*)[4])buffer,
+ RTEMS_DEFAULT_OPTIONS,
+ RTEMS_NO_TIMEOUT
+ );
+ directive_failed( status, "rtems_message_queue_receive" );
+ puts_nocr( "TA1 - buffer received: " );
+ Put_buffer( buffer );
+ new_line;
+
+pause();
+
+ puts( "TA1 - rtems_message_queue_delete - delete queue 1" );
+ status = rtems_message_queue_delete( Queue_id[ 1 ] );
+ directive_failed( status, "rtems_message_queue_delete" );
+
+ Fill_buffer( "BUFFER 3 TO Q 2", buffer );
+ puts( "TA1 - rtems_message_queue_urgent - BUFFER 3 TO Q 2" );
+ status = rtems_message_queue_urgent( Queue_id[ 2 ], (long (*)[4])buffer );
+ directive_failed( status, "rtems_message_queue_urgent" );
+
+ puts( "TA1 - rtems_message_queue_delete - delete queue 2" );
+ status = rtems_message_queue_delete( Queue_id[ 2 ] );
+ directive_failed( status, "rtems_message_queue_delete" );
+
+ puts( "TA1 - rtems_message_queue_flush - empty Q 3" );
+ status = rtems_message_queue_flush( Queue_id[ 3 ], &count );
+ printf( "TA1 - %d messages were flushed from Q 3\n", count );
+
+ Fill_buffer( "BUFFER 1 TO Q 3", buffer );
+ puts( "TA1 - rtems_message_queue_send - BUFFER 1 TO Q 3" );
+ status = rtems_message_queue_send( Queue_id[ 3 ], (long (*)[4])buffer );
+ directive_failed( status, "rtems_message_queue_send" );
+
+ Fill_buffer( "BUFFER 2 TO Q 3", buffer );
+ puts( "TA1 - rtems_message_queue_send - BUFFER 2 TO Q 3" );
+ status = rtems_message_queue_send( Queue_id[ 3 ], (long (*)[4])buffer );
+ directive_failed( status, "rtems_message_queue_send" );
+
+ Fill_buffer( "BUFFER 3 TO Q 3", buffer );
+ puts( "TA1 - rtems_message_queue_send - BUFFER 3 TO Q 3" );
+ status = rtems_message_queue_send( Queue_id[ 3 ], (long (*)[4])buffer );
+ directive_failed( status, "rtems_message_queue_send" );
+
+ puts( "TA1 - rtems_message_queue_flush - Q 3" );
+ status = rtems_message_queue_flush( Queue_id[ 3 ], &count );
+ printf( "TA1 - %d messages were flushed from Q 3\n", count );
+
+ puts( "TA1 - rtems_message_queue_send until all message buffers consumed" );
+ while ( FOREVER ) {
+ status = rtems_message_queue_send( Queue_id[ 3 ], (long (*)[4])buffer );
+ if ( status == RTEMS_UNSATISFIED ) break;
+ directive_failed( status, "rtems_message_queue_send loop" );
+ }
+
+ puts( "TA1 - all message buffers consumed" );
+ puts( "TA1 - rtems_message_queue_flush - Q 3" );
+ status = rtems_message_queue_flush( Queue_id[ 3 ], &count );
+ printf( "TA1 - %d messages were flushed from Q 3\n", count );
+
+ if ( count != BSP_Configuration.maximum_messages )
+ printf( "TA1 - ERROR - %d messages flushed!!!", count );
+
+ puts( "*** END OF TEST 13 ***" );
+ exit( 0 );
+}
diff --git a/c/src/tests/sptests/sp13/task2.c b/c/src/tests/sptests/sp13/task2.c
new file mode 100644
index 0000000000..7d6438312c
--- /dev/null
+++ b/c/src/tests/sptests/sp13/task2.c
@@ -0,0 +1,132 @@
+/* Task_2
+ *
+ * This routine serves as a test task. Multiple tasks are required to
+ * verify all message manager capabilities.
+ *
+ * Input parameters:
+ * argument - task argument
+ *
+ * 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"
+
+rtems_task Task_2(
+ rtems_task_argument argument
+)
+{
+ long buffer[ 4 ];
+ rtems_task_priority previous_priority;
+ rtems_status_code status;
+
+ puts(
+ "TA2 - rtems_message_queue_receive - receive from queue 1 - RTEMS_NO_WAIT"
+ );
+ status = rtems_message_queue_receive(
+ Queue_id[ 1 ],
+ (long (*)[4])buffer,
+ RTEMS_NO_WAIT,
+ RTEMS_NO_TIMEOUT
+ );
+ directive_failed( status, "rtems_message_queue_receive" );
+ puts_nocr( "TA2 - buffer received: " );
+ Put_buffer( buffer );
+ new_line;
+
+ puts(
+ "TA2 - rtems_message_queue_receive - receive from queue 1 - "
+ "RTEMS_WAIT FOREVER"
+ );
+ status = rtems_message_queue_receive(
+ Queue_id[ 1 ],
+ (long (*)[4])buffer,
+ RTEMS_DEFAULT_OPTIONS,
+ RTEMS_NO_TIMEOUT
+ );
+ directive_failed( status, "rtems_message_queue_receive" );
+ puts_nocr( "TA2 - buffer received: " );
+ Put_buffer( buffer );
+ new_line;
+
+ puts(
+ "TA2 - rtems_message_queue_receive - receive from queue 1 - "
+ "RTEMS_WAIT FOREVER"
+ );
+ status = rtems_message_queue_receive(
+ Queue_id[ 1 ],
+ (long (*)[4])buffer,
+ RTEMS_DEFAULT_OPTIONS,
+ RTEMS_NO_TIMEOUT
+ );
+ directive_failed( status, "rtems_message_queue_receive" );
+ puts_nocr( "TA2 - buffer received: " );
+ Put_buffer( buffer );
+ new_line;
+
+ puts( "TA2 - rtems_task_set_priority - make self highest priority task" );
+ status = rtems_task_set_priority( RTEMS_SELF, 3, &previous_priority );
+ directive_failed( status, "rtems_task_set_priority" );
+
+ puts(
+ "TA2 - rtems_message_queue_receive - receive from queue 2 - "
+ "RTEMS_WAIT FOREVER"
+ );
+ status = rtems_message_queue_receive(
+ Queue_id[ 2 ],
+ (long (*)[4])buffer,
+ RTEMS_DEFAULT_OPTIONS,
+ RTEMS_NO_TIMEOUT
+ );
+ directive_failed( status, "rtems_message_queue_receive" );
+ puts_nocr( "TA2 - buffer received: " );
+ Put_buffer( buffer );
+ new_line;
+
+ Fill_buffer( "BUFFER 2 TO Q 2", (long *)buffer );
+ puts( "TA2 - rtems_message_queue_send - BUFFER 2 TO Q 2" );
+ directive_failed( status, "rtems_message_queue_send" );
+
+ status = rtems_message_queue_send( Queue_id[ 2 ], (long (*)[4])buffer );
+ directive_failed( status, "rtems_message_queue_send" );
+
+ puts(
+ "TA2 - rtems_message_queue_receive - receive from queue 1 - "
+ "10 second timeout"
+ );
+ status = rtems_message_queue_receive(
+ Queue_id[ 1 ],
+ (long (*)[4])buffer,
+ RTEMS_DEFAULT_OPTIONS,
+ 10 * TICKS_PER_SECOND
+ );
+ directive_failed( status, "rtems_message_queue_receive" );
+ puts_nocr( "TA2 - buffer received: " );
+ Put_buffer( buffer );
+ new_line;
+
+ puts(
+ "TA2 - rtems_message_queue_receive - receive from queue 3 - "
+ "RTEMS_WAIT FOREVER"
+ );
+ status = rtems_message_queue_receive(
+ Queue_id[ 3 ],
+ (long (*)[4])buffer,
+ RTEMS_DEFAULT_OPTIONS,
+ RTEMS_NO_TIMEOUT
+ );
+ directive_failed( status, "rtems_message_queue_receive" );
+ puts_nocr( "TA2 - buffer received: " );
+ Put_buffer( buffer );
+ new_line;
+
+}
diff --git a/c/src/tests/sptests/sp13/task3.c b/c/src/tests/sptests/sp13/task3.c
new file mode 100644
index 0000000000..3ba7b61728
--- /dev/null
+++ b/c/src/tests/sptests/sp13/task3.c
@@ -0,0 +1,74 @@
+/* Task_3
+ *
+ * This routine serves as a test task. Its major function is to
+ * broadcast a messge to all the other tasks.
+ *
+ * Input parameters:
+ * argument - task argument
+ *
+ * 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"
+
+rtems_task Task_3(
+ rtems_task_argument argument
+)
+{
+ long buffer[ 4 ];
+ rtems_unsigned32 count;
+ rtems_status_code status;
+
+ puts(
+ "TA3 - rtems_message_queue_receive - receive from queue 2 - "
+ "RTEMS_WAIT FOREVER"
+ );
+ status = rtems_message_queue_receive(
+ Queue_id[ 2 ],
+ (long (*)[4])buffer,
+ RTEMS_DEFAULT_OPTIONS,
+ RTEMS_NO_TIMEOUT
+ );
+ directive_failed( status, "rtems_message_queue_receive" );
+ puts_nocr( "TA3 - buffer received: " );
+ Put_buffer( buffer );
+ new_line;
+
+ Fill_buffer( "BUFFER 3 TO Q 1", (long *)buffer );
+ puts( "TA3 - rtems_message_queue_broadcast - BUFFER 3 TO Q 1" );
+ status = rtems_message_queue_broadcast(
+ Queue_id[ 1 ],
+ (long (*)[4])buffer,
+ &count
+ );
+ printf( "TA3 - number of tasks awakened = %02d\n", count );
+ puts(
+ "TA3 - rtems_message_queue_receive - receive from queue 3 - "
+ "RTEMS_WAIT FOREVER"
+ );
+
+ status = rtems_message_queue_receive(
+ Queue_id[ 3 ],
+ (long (*)[4])buffer,
+ RTEMS_DEFAULT_OPTIONS,
+ RTEMS_NO_TIMEOUT
+ );
+ directive_failed( status, "rtems_message_queue_receive" );
+ puts_nocr( "TA3 - buffer received: " );
+ Put_buffer( buffer );
+ new_line;
+
+ puts( "TA3 - rtems_task_delete - delete self" );
+ status = rtems_task_delete( RTEMS_SELF );
+ directive_failed( status, "rtems_task_delete of RTEMS_SELF" );
+}