summaryrefslogtreecommitdiffstats
path: root/testsuites/tmtests
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>1995-05-11 17:39:37 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>1995-05-11 17:39:37 +0000
commitac7d5ef06a6d6e8d84abbd1f0b82162725f98326 (patch)
tree9304cf759a73f2a1c6fd3191948f00e870af3787 /testsuites/tmtests
downloadrtems-ac7d5ef06a6d6e8d84abbd1f0b82162725f98326.tar.bz2
Initial revision
Diffstat (limited to 'testsuites/tmtests')
-rw-r--r--testsuites/tmtests/README21
-rw-r--r--testsuites/tmtests/include/timesys.h30
-rw-r--r--testsuites/tmtests/tm01/system.h23
-rw-r--r--testsuites/tmtests/tm01/task1.c187
-rw-r--r--testsuites/tmtests/tm01/tm01.doc13
-rw-r--r--testsuites/tmtests/tm02/system.h23
-rw-r--r--testsuites/tmtests/tm02/task1.c156
-rw-r--r--testsuites/tmtests/tm02/tm02.doc13
-rw-r--r--testsuites/tmtests/tm03/system.h23
-rw-r--r--testsuites/tmtests/tm03/task1.c149
-rw-r--r--testsuites/tmtests/tm03/tm03.doc13
-rw-r--r--testsuites/tmtests/tm04/system.h23
-rw-r--r--testsuites/tmtests/tm04/task1.c387
-rw-r--r--testsuites/tmtests/tm04/tm04.doc13
-rw-r--r--testsuites/tmtests/tm05/system.h23
-rw-r--r--testsuites/tmtests/tm05/task1.c132
-rw-r--r--testsuites/tmtests/tm05/tm05.doc13
-rw-r--r--testsuites/tmtests/tm06/system.h23
-rw-r--r--testsuites/tmtests/tm06/task1.c162
-rw-r--r--testsuites/tmtests/tm06/tm06.doc13
-rw-r--r--testsuites/tmtests/tm07/system.h23
-rw-r--r--testsuites/tmtests/tm07/task1.c120
-rw-r--r--testsuites/tmtests/tm07/tm07.doc13
-rw-r--r--testsuites/tmtests/tm08/system.h23
-rw-r--r--testsuites/tmtests/tm08/task1.c255
-rw-r--r--testsuites/tmtests/tm08/tm08.doc13
-rw-r--r--testsuites/tmtests/tm09/system.h23
-rw-r--r--testsuites/tmtests/tm09/task1.c221
-rw-r--r--testsuites/tmtests/tm09/tm09.doc13
-rw-r--r--testsuites/tmtests/tm10/system.h23
-rw-r--r--testsuites/tmtests/tm10/task1.c156
-rw-r--r--testsuites/tmtests/tm10/tm10.doc13
-rw-r--r--testsuites/tmtests/tm11/system.h23
-rw-r--r--testsuites/tmtests/tm11/task1.c148
-rw-r--r--testsuites/tmtests/tm11/tm11.doc13
-rw-r--r--testsuites/tmtests/tm12/system.h23
-rw-r--r--testsuites/tmtests/tm12/task1.c142
-rw-r--r--testsuites/tmtests/tm12/tm12.doc13
-rw-r--r--testsuites/tmtests/tm13/system.h23
-rw-r--r--testsuites/tmtests/tm13/task1.c147
-rw-r--r--testsuites/tmtests/tm13/tm13.doc13
-rw-r--r--testsuites/tmtests/tm14/system.h23
-rw-r--r--testsuites/tmtests/tm14/task1.c142
-rw-r--r--testsuites/tmtests/tm14/tm14.doc13
-rw-r--r--testsuites/tmtests/tm15/system.h23
-rw-r--r--testsuites/tmtests/tm15/task1.c222
-rw-r--r--testsuites/tmtests/tm15/tm15.doc13
-rw-r--r--testsuites/tmtests/tm16/system.h23
-rw-r--r--testsuites/tmtests/tm16/task1.c148
-rw-r--r--testsuites/tmtests/tm16/tm16.doc13
-rw-r--r--testsuites/tmtests/tm17/system.h23
-rw-r--r--testsuites/tmtests/tm17/task1.c127
-rw-r--r--testsuites/tmtests/tm17/tm17.doc13
-rw-r--r--testsuites/tmtests/tm18/system.h23
-rw-r--r--testsuites/tmtests/tm18/task1.c112
-rw-r--r--testsuites/tmtests/tm18/tm18.doc13
-rw-r--r--testsuites/tmtests/tm19/system.h23
-rw-r--r--testsuites/tmtests/tm19/task1.c212
-rw-r--r--testsuites/tmtests/tm19/tm19.doc13
-rw-r--r--testsuites/tmtests/tm20/system.h23
-rw-r--r--testsuites/tmtests/tm20/task1.c467
-rw-r--r--testsuites/tmtests/tm20/tm20.doc13
-rw-r--r--testsuites/tmtests/tm21/system.h23
-rw-r--r--testsuites/tmtests/tm21/task1.c234
-rw-r--r--testsuites/tmtests/tm21/tm21.doc13
-rw-r--r--testsuites/tmtests/tm22/system.h23
-rw-r--r--testsuites/tmtests/tm22/task1.c193
-rw-r--r--testsuites/tmtests/tm22/tm22.doc13
-rw-r--r--testsuites/tmtests/tm23/system.h23
-rw-r--r--testsuites/tmtests/tm23/task1.c302
-rw-r--r--testsuites/tmtests/tm23/tm23.doc13
-rw-r--r--testsuites/tmtests/tm24/system.h23
-rw-r--r--testsuites/tmtests/tm24/task1.c124
-rw-r--r--testsuites/tmtests/tm24/tm24.doc13
-rw-r--r--testsuites/tmtests/tm25/system.h23
-rw-r--r--testsuites/tmtests/tm25/task1.c108
-rw-r--r--testsuites/tmtests/tm25/tm25.doc13
-rw-r--r--testsuites/tmtests/tm26/fptest.h165
-rw-r--r--testsuites/tmtests/tm26/system.h23
-rw-r--r--testsuites/tmtests/tm26/task1.c470
-rw-r--r--testsuites/tmtests/tm26/tm26.doc13
-rw-r--r--testsuites/tmtests/tm27/system.h23
-rw-r--r--testsuites/tmtests/tm27/task1.c237
-rw-r--r--testsuites/tmtests/tm27/tm27.doc13
-rw-r--r--testsuites/tmtests/tm28/system.h23
-rw-r--r--testsuites/tmtests/tm28/task1.c134
-rw-r--r--testsuites/tmtests/tm28/tm28.doc13
-rw-r--r--testsuites/tmtests/tm29/system.h23
-rw-r--r--testsuites/tmtests/tm29/task1.c207
-rw-r--r--testsuites/tmtests/tm29/tm29.doc13
-rw-r--r--testsuites/tmtests/tmck/system.h23
-rw-r--r--testsuites/tmtests/tmck/task1.c180
-rw-r--r--testsuites/tmtests/tmck/tmck.doc20
-rw-r--r--testsuites/tmtests/tmoverhd/dumrtems.h255
-rw-r--r--testsuites/tmtests/tmoverhd/empty.c41
-rw-r--r--testsuites/tmtests/tmoverhd/system.h23
-rw-r--r--testsuites/tmtests/tmoverhd/testtask.c1279
-rw-r--r--testsuites/tmtests/tmoverhd/tmoverhd.doc13
98 files changed, 8895 insertions, 0 deletions
diff --git a/testsuites/tmtests/README b/testsuites/tmtests/README
new file mode 100644
index 0000000000..c27617d5a3
--- /dev/null
+++ b/testsuites/tmtests/README
@@ -0,0 +1,21 @@
+#
+# $Id$
+#
+
+This directory contains the RTEMS Timing Test Suite.
+The tests in this directory are used to measure the execution
+time of RTEMS directive and some critical internal functions.
+The results of these test are reported in the Fact Sheets
+and Supplental Manuals.
+
+These tests attempt to benchmark RTEMS as the user would. They measure
+the execution time for a directive (under various circumstances)
+from the time RTEMS is entered until it is executed. Where possible,
+the time is the average of at least 100 invocations of the directive.
+
+The accuracy of the times reported by these benchmarks is very dependent
+on the resolution of the timer being used. It is also important to
+insure that all sources of hardware interrupts are disabled during
+execution of the tests. This insures that the directive time reported
+does not include any interrupt time.
+
diff --git a/testsuites/tmtests/include/timesys.h b/testsuites/tmtests/include/timesys.h
new file mode 100644
index 0000000000..3b61d7b42d
--- /dev/null
+++ b/testsuites/tmtests/include/timesys.h
@@ -0,0 +1,30 @@
+/* timesystem.h
+ *
+ * This include file contains information that is included in every
+ * function in the Time Suite.
+ *
+ * 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$
+ */
+
+
+/* constants */
+
+#define OPERATION_COUNT 100
+#define IT_COUNT 100
+
+/* Miscellaneous */
+
+#define FOREVER 1 /* infinite loop */
+#define EXTERN extern /* external definition */
+
+/* structures */
+
+/* end of include file */
diff --git a/testsuites/tmtests/tm01/system.h b/testsuites/tmtests/tm01/system.h
new file mode 100644
index 0000000000..9133506e7f
--- /dev/null
+++ b/testsuites/tmtests/tm01/system.h
@@ -0,0 +1,23 @@
+/* system.h
+ *
+ * This include file is used by all tests in the Time Suite.
+ *
+ * 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 "coverhd.h"
+#include "tmacros.h"
+
+#include "timesys.h"
+#include "timegvar.h"
diff --git a/testsuites/tmtests/tm01/task1.c b/testsuites/tmtests/tm01/task1.c
new file mode 100644
index 0000000000..2463722320
--- /dev/null
+++ b/testsuites/tmtests/tm01/task1.c
@@ -0,0 +1,187 @@
+/*
+ *
+ * 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 Test_task(
+ rtems_task_argument argument
+);
+
+rtems_task Init(
+ rtems_task_argument argument
+)
+{
+ rtems_status_code status;
+
+ puts( "\n\n*** TIME TEST 1 ***" );
+
+ 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 ],
+ 128,
+ 4096,
+ RTEMS_DEFAULT_MODES,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &Task_id[ 1 ]
+ );
+ directive_failed( status, "rtems_task_create of TA1" );
+
+ status = rtems_task_start( Task_id[ 1 ], Test_task, 0 );
+ directive_failed( status, "rtems_task_start of TA1" );
+
+ status = rtems_task_delete( RTEMS_SELF );
+ directive_failed( status, "rtems_task_delete of RTEMS_SELF" );
+
+}
+
+rtems_task Test_task(
+ rtems_task_argument argument
+)
+{
+ rtems_unsigned32 semaphore_obtain_time;
+ rtems_unsigned32 semaphore_release_time;
+ rtems_unsigned32 semaphore_obtain_no_wait_time;
+ rtems_unsigned32 semaphore_obtain_loop_time;
+ rtems_unsigned32 semaphore_release_loop_time;
+ rtems_unsigned32 index;
+ rtems_unsigned32 iterations;
+ rtems_name name;
+ rtems_id smid;
+ rtems_status_code status;
+
+ name = rtems_build_name( 'S', 'M', '1', ' ' );
+
+ semaphore_obtain_time = 0;
+ semaphore_release_time = 0;
+ semaphore_obtain_no_wait_time = 0;
+ semaphore_obtain_loop_time = 0;
+ semaphore_release_loop_time = 0;
+
+
+ /* Time one invocation of rtems_semaphore_create */
+
+ Timer_initialize();
+ (void) rtems_semaphore_create(
+ name,
+ OPERATION_COUNT,
+ RTEMS_DEFAULT_MODES,
+ &smid
+ );
+ end_time = Read_timer();
+ put_time(
+ "rtems_semaphore_create",
+ end_time,
+ 1,
+ 0,
+ CALLING_OVERHEAD_SEMAPHORE_CREATE
+ );
+
+ /* Time one invocation of rtems_semaphore_delete */
+
+ Timer_initialize();
+ (void) rtems_semaphore_delete( smid );
+ end_time = Read_timer();
+ put_time(
+ "rtems_semaphore_delete",
+ end_time,
+ 1,
+ 0,
+ CALLING_OVERHEAD_SEMAPHORE_CREATE
+ );
+
+ status = rtems_semaphore_create(
+ name,
+ OPERATION_COUNT,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &smid
+ );
+
+ for ( iterations=OPERATION_COUNT ; iterations ; iterations-- ) {
+
+ Timer_initialize();
+ for ( index = 1 ; index<=OPERATION_COUNT ; index++ )
+ (void) Empty_function();
+ end_time = Read_timer();
+
+ semaphore_obtain_loop_time += end_time;
+ semaphore_release_loop_time += end_time;
+
+ /* rtems_semaphore_obtain (available) */
+
+ Timer_initialize();
+ for ( index = 1 ; index<=OPERATION_COUNT ; index++ )
+ (void) rtems_semaphore_obtain(
+ smid,
+ RTEMS_DEFAULT_OPTIONS,
+ RTEMS_NO_TIMEOUT
+ );
+ end_time = Read_timer();
+
+ semaphore_obtain_time += end_time;
+
+ /* rtems_semaphore_release */
+
+ Timer_initialize();
+ for ( index = 1 ; index<=OPERATION_COUNT ; index++ )
+ (void) rtems_semaphore_release( smid );
+ end_time = Read_timer();
+
+ semaphore_release_time += end_time;
+
+ /* semaphore obtain (RTEMS_NO_WAIT) */
+ Timer_initialize();
+ for ( index = 1 ; index<=OPERATION_COUNT ; index++ )
+ rtems_semaphore_obtain( smid, RTEMS_NO_WAIT, RTEMS_NO_TIMEOUT );
+ semaphore_obtain_no_wait_time += Read_timer();
+
+ Timer_initialize();
+ for ( index = 1 ; index<=OPERATION_COUNT ; index++ )
+ rtems_semaphore_release( smid );
+ end_time = Read_timer();
+
+ semaphore_release_time += end_time;
+ }
+
+ put_time(
+ "rtems_semaphore_obtain",
+ semaphore_obtain_time,
+ OPERATION_COUNT * OPERATION_COUNT,
+ semaphore_obtain_loop_time,
+ CALLING_OVERHEAD_SEMAPHORE_OBTAIN
+ );
+
+ put_time(
+ "rtems_semaphore_obtain (RTEMS_NO_WAIT)",
+ semaphore_obtain_no_wait_time,
+ OPERATION_COUNT * OPERATION_COUNT,
+ semaphore_obtain_loop_time,
+ CALLING_OVERHEAD_SEMAPHORE_OBTAIN
+ );
+
+ put_time(
+ "rtems_semaphore_release",
+ semaphore_release_time,
+ OPERATION_COUNT * OPERATION_COUNT * 2,
+ semaphore_release_loop_time * 2,
+ CALLING_OVERHEAD_SEMAPHORE_RELEASE
+ );
+
+ exit( 0 );
+}
diff --git a/testsuites/tmtests/tm01/tm01.doc b/testsuites/tmtests/tm01/tm01.doc
new file mode 100644
index 0000000000..0de40191c6
--- /dev/null
+++ b/testsuites/tmtests/tm01/tm01.doc
@@ -0,0 +1,13 @@
+#
+# $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.
+#
+
+
diff --git a/testsuites/tmtests/tm02/system.h b/testsuites/tmtests/tm02/system.h
new file mode 100644
index 0000000000..9133506e7f
--- /dev/null
+++ b/testsuites/tmtests/tm02/system.h
@@ -0,0 +1,23 @@
+/* system.h
+ *
+ * This include file is used by all tests in the Time Suite.
+ *
+ * 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 "coverhd.h"
+#include "tmacros.h"
+
+#include "timesys.h"
+#include "timegvar.h"
diff --git a/testsuites/tmtests/tm02/task1.c b/testsuites/tmtests/tm02/task1.c
new file mode 100644
index 0000000000..e86ed6af65
--- /dev/null
+++ b/testsuites/tmtests/tm02/task1.c
@@ -0,0 +1,156 @@
+/*
+ *
+ * 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_id High_id;
+rtems_id Low_id;
+rtems_id Semaphore_id;
+
+rtems_task High_task(
+ rtems_task_argument argument
+);
+
+rtems_task Middle_tasks(
+ rtems_task_argument argument
+);
+
+rtems_task Low_task(
+ rtems_task_argument argument
+);
+
+
+void test_init();
+
+rtems_task Init(
+ rtems_task_argument argument
+)
+{
+ rtems_status_code status;
+
+ puts( "\n\n*** TIME TEST 2 ***" );
+
+ test_init();
+
+ status = rtems_task_delete( RTEMS_SELF );
+ directive_failed( status, "rtems_task_delete" );
+}
+
+void test_init()
+{
+ rtems_status_code status;
+ rtems_unsigned32 index;
+ rtems_task_priority priority;
+
+ priority = 5;
+
+ status = rtems_task_create(
+ rtems_build_name( 'H', 'I', 'G', 'H' ),
+ priority,
+ 1024,
+ RTEMS_DEFAULT_MODES,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &High_id
+ );
+ directive_failed( status, "rtems_task_create of high task" );
+
+ priority++;
+
+ status = rtems_task_start( High_id, High_task, 0 );
+ directive_failed( status, "rtems_task_start of high task" );
+
+ for ( index=2 ; index <= OPERATION_COUNT ; index++ ) {
+ status = rtems_task_create(
+ rtems_build_name( 'M', 'I', 'D', ' ' ),
+ priority,
+ 1024,
+ RTEMS_DEFAULT_MODES,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &Low_id
+ );
+ directive_failed( status, "rtems_task_create middle" );
+
+ priority++;
+
+ status = rtems_task_start( Low_id, Middle_tasks, 0 );
+ directive_failed( status, "rtems_task_start middle" );
+ }
+
+ status = rtems_task_create(
+ rtems_build_name( 'L', 'O', 'W', ' ' ),
+ priority,
+ 2048,
+ RTEMS_DEFAULT_MODES,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &Low_id
+ );
+ directive_failed( status, "rtems_task_create low" );
+
+ status = rtems_task_start( Low_id, Low_task, 0 );
+ directive_failed( status, "rtems_task_start low" );
+
+ status = rtems_semaphore_create(
+ rtems_build_name( 'S', 'M', '1', ' '),
+ 0,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &Semaphore_id
+ );
+ directive_failed( status, "rtems_semaphore_create of SM1" );
+}
+
+rtems_task High_task(
+ rtems_task_argument argument
+)
+{
+ rtems_status_code status;
+
+ Timer_initialize(); /* start blocking rtems_semaphore_obtain time */
+ status = rtems_semaphore_obtain(
+ Semaphore_id,
+ RTEMS_DEFAULT_OPTIONS,
+ RTEMS_NO_TIMEOUT
+ );
+}
+
+rtems_task Middle_tasks(
+ rtems_task_argument argument
+)
+{
+ rtems_status_code status;
+
+ status = rtems_semaphore_obtain(
+ Semaphore_id,
+ RTEMS_DEFAULT_OPTIONS,
+ RTEMS_NO_TIMEOUT
+ );
+}
+
+rtems_task Low_task(
+ rtems_task_argument argument
+)
+{
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_semaphore_obtain (blocking)",
+ end_time,
+ OPERATION_COUNT,
+ 0,
+ CALLING_OVERHEAD_SEMAPHORE_OBTAIN
+ );
+ exit( 0 );
+}
diff --git a/testsuites/tmtests/tm02/tm02.doc b/testsuites/tmtests/tm02/tm02.doc
new file mode 100644
index 0000000000..0de40191c6
--- /dev/null
+++ b/testsuites/tmtests/tm02/tm02.doc
@@ -0,0 +1,13 @@
+#
+# $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.
+#
+
+
diff --git a/testsuites/tmtests/tm03/system.h b/testsuites/tmtests/tm03/system.h
new file mode 100644
index 0000000000..9133506e7f
--- /dev/null
+++ b/testsuites/tmtests/tm03/system.h
@@ -0,0 +1,23 @@
+/* system.h
+ *
+ * This include file is used by all tests in the Time Suite.
+ *
+ * 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 "coverhd.h"
+#include "tmacros.h"
+
+#include "timesys.h"
+#include "timegvar.h"
diff --git a/testsuites/tmtests/tm03/task1.c b/testsuites/tmtests/tm03/task1.c
new file mode 100644
index 0000000000..0ee82005d7
--- /dev/null
+++ b/testsuites/tmtests/tm03/task1.c
@@ -0,0 +1,149 @@
+/*
+ *
+ * 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_id Semaphore_id;
+rtems_task test_init(
+ rtems_task_argument argument
+);
+
+rtems_task Middle_tasks(
+ rtems_task_argument argument
+);
+
+rtems_task High_task(
+ rtems_task_argument argument
+);
+
+
+rtems_task Init(
+ rtems_task_argument argument
+)
+{
+ rtems_status_code status;
+ rtems_id task_id;
+
+ puts( "\n\n*** TIME TEST 3 ***" );
+ status = rtems_task_create(
+ rtems_build_name( 'T', 'A', '1', ' ' ),
+ 252,
+ 2048,
+ RTEMS_DEFAULT_MODES,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &task_id
+ );
+ directive_failed( status, "rtems_task_create of test_init" );
+
+ status = rtems_task_start( task_id, test_init, 0 );
+ directive_failed( status, "rtems_task_start of test_init" );
+
+ status = rtems_task_delete( RTEMS_SELF );
+ directive_failed( status, "rtems_task_delete of RTEMS_SELF" );
+}
+
+rtems_task test_init(
+ rtems_task_argument argument
+)
+{
+ rtems_status_code status;
+ rtems_unsigned32 index;
+ rtems_id task_id;
+ rtems_task_priority priority;
+
+ priority = 250;
+
+ status = rtems_semaphore_create(
+ rtems_build_name( 'S', 'M', '1', '\0'),
+ 0,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &Semaphore_id
+ );
+ directive_failed( status, "rtems_semaphore_create of SM1" );
+
+ for ( index = 2 ; index <= OPERATION_COUNT ; index ++ ) {
+ rtems_task_create(
+ rtems_build_name( 'M', 'I', 'D', ' ' ),
+ priority,
+ 1024,
+ RTEMS_DEFAULT_MODES,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &task_id
+ );
+ directive_failed( status, "rtems_task_create middle" );
+
+ priority--;
+
+ rtems_task_start( task_id, Middle_tasks, 0 );
+ directive_failed( status, "rtems_task_start middle" );
+ }
+
+ status = rtems_task_create(
+ rtems_build_name( 'H', 'I', 'G', 'H' ),
+ priority,
+ 1024,
+ RTEMS_DEFAULT_MODES,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &task_id
+ );
+ directive_failed( status, "rtems_task_create of high task" );
+
+ status = rtems_task_start( task_id, High_task, 0 );
+ directive_failed( status, "rtems_task_start of high task" );
+
+ Timer_initialize(); /* start the timer */
+ status = rtems_semaphore_release( Semaphore_id );
+}
+
+rtems_task Middle_tasks(
+ rtems_task_argument argument
+)
+{
+ rtems_status_code status;
+
+ status = rtems_semaphore_obtain(
+ Semaphore_id,
+ RTEMS_DEFAULT_OPTIONS,
+ RTEMS_NO_TIMEOUT
+ );
+
+ status = rtems_semaphore_release( Semaphore_id );
+}
+
+rtems_task High_task(
+ rtems_task_argument argument
+)
+{
+ rtems_status_code status;
+
+ status = rtems_semaphore_obtain(
+ Semaphore_id,
+ RTEMS_DEFAULT_OPTIONS,
+ RTEMS_NO_TIMEOUT
+ );
+
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_semaphore_release (preemptive)",
+ end_time,
+ OPERATION_COUNT,
+ 0,
+ CALLING_OVERHEAD_SEMAPHORE_RELEASE
+ );
+ exit( 0 );
+}
diff --git a/testsuites/tmtests/tm03/tm03.doc b/testsuites/tmtests/tm03/tm03.doc
new file mode 100644
index 0000000000..0de40191c6
--- /dev/null
+++ b/testsuites/tmtests/tm03/tm03.doc
@@ -0,0 +1,13 @@
+#
+# $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.
+#
+
+
diff --git a/testsuites/tmtests/tm04/system.h b/testsuites/tmtests/tm04/system.h
new file mode 100644
index 0000000000..9133506e7f
--- /dev/null
+++ b/testsuites/tmtests/tm04/system.h
@@ -0,0 +1,23 @@
+/* system.h
+ *
+ * This include file is used by all tests in the Time Suite.
+ *
+ * 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 "coverhd.h"
+#include "tmacros.h"
+
+#include "timesys.h"
+#include "timegvar.h"
diff --git a/testsuites/tmtests/tm04/task1.c b/testsuites/tmtests/tm04/task1.c
new file mode 100644
index 0000000000..0014d02dd3
--- /dev/null
+++ b/testsuites/tmtests/tm04/task1.c
@@ -0,0 +1,387 @@
+/*
+ *
+ * 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_id Semaphore_id;
+rtems_id Task_id[OPERATION_COUNT+1];
+rtems_unsigned32 task_count;
+rtems_id Highest_id;
+
+rtems_task Low_tasks(
+ rtems_task_argument argument
+);
+
+rtems_task High_task(
+ rtems_task_argument argument
+);
+
+rtems_task Restart_task(
+ rtems_task_argument argument
+);
+
+void test_init();
+
+rtems_task Init(
+ rtems_task_argument argument
+)
+{
+ rtems_status_code status;
+
+ puts( "\n\n*** TIME TEST 4 ***" );
+
+ test_init();
+
+ status = rtems_task_delete( RTEMS_SELF );
+ directive_failed( status, "rtems_task_delete of RTEMS_SELF" );
+}
+
+void test_init()
+{
+ rtems_status_code status;
+ rtems_unsigned32 index;
+
+ task_count = OPERATION_COUNT;
+
+ for ( index = 1 ; index <= OPERATION_COUNT ; index++ ) {
+
+ status = rtems_task_create(
+ rtems_build_name( 'T', 'I', 'M', 'E' ),
+ 10,
+ 1024,
+ RTEMS_NO_PREEMPT,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &Task_id[ index ]
+ );
+ directive_failed( status, "rtems_task_create loop" );
+
+ status = rtems_task_start( Task_id[ index ], Low_tasks, 0 );
+ directive_failed( status, "rtems_task_start loop" );
+ }
+
+ status = rtems_semaphore_create(
+ rtems_build_name( 'S', 'M', '1', ' ' ),
+ 0,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &Semaphore_id
+ );
+ directive_failed( status, "rtems_semaphore_create of SM1" );
+}
+
+rtems_task Highest_task(
+ rtems_task_argument argument
+)
+{
+ rtems_task_priority old_priority;
+ rtems_status_code status;
+
+ if ( argument == 1 ) {
+
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_task_restart (blocked, preempt)",
+ end_time,
+ 1,
+ 0,
+ CALLING_OVERHEAD_TASK_RESTART
+ );
+
+ status = rtems_task_set_priority(
+ RTEMS_CURRENT_PRIORITY,
+ 254,
+ &old_priority
+ );
+ directive_failed( status, "rtems_task_set_priority" );
+
+ } else if ( argument == 2 ) {
+
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_task_restart (ready, preempt)",
+ end_time,
+ 1,
+ 0,
+ CALLING_OVERHEAD_TASK_RESTART
+ );
+
+ status = rtems_task_delete( RTEMS_SELF );
+ directive_failed( status, "rtems_task_delete of RTEMS_SELF" );
+
+ } else
+ (void) rtems_semaphore_obtain(
+ Semaphore_id,
+ RTEMS_DEFAULT_OPTIONS,
+ RTEMS_NO_TIMEOUT
+ );
+
+}
+
+rtems_task High_task(
+ rtems_task_argument argument
+)
+{
+ rtems_status_code status;
+ rtems_unsigned32 index;
+ rtems_name name;
+ rtems_task_priority old_priority;
+
+ Timer_initialize();
+ (void) rtems_task_restart( Highest_id, 1 );
+ /* preempted by Higher_task */
+
+ Timer_initialize();
+ (void) rtems_task_restart( Highest_id, 2 );
+ /* preempted by Higher_task */
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) Empty_function();
+ overhead = Read_timer();
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ rtems_semaphore_release( Semaphore_id );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_semaphore_release (readying)",
+ end_time,
+ OPERATION_COUNT,
+ 0,
+ CALLING_OVERHEAD_SEMAPHORE_RELEASE
+ );
+
+ name = rtems_build_name( 'T', 'I', 'M', 'E' );
+
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ ) {
+ status = rtems_task_delete( Task_id[index] );
+ directive_failed( status, "rtems_task_delete" );
+ }
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ rtems_task_create(
+ name,
+ 10,
+ 1024,
+ RTEMS_NO_PREEMPT,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &Task_id[ index ]
+ );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_task_create",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ CALLING_OVERHEAD_TASK_CREATE
+ );
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ rtems_task_start( Task_id[ index ], Low_tasks, 0 );
+
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_task_start",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ CALLING_OVERHEAD_TASK_START
+ );
+
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ ) {
+ status = rtems_task_delete( Task_id[ index ] );
+ directive_failed( status, "rtems_task_delete" );
+ }
+
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ ) {
+ status = rtems_task_create(
+ name,
+ 250,
+ 1024,
+ RTEMS_NO_PREEMPT,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &Task_id[ index ]
+ );
+ directive_failed( status, "rtems_task_create LOOP" );
+
+ status = rtems_task_start( Task_id[ index ], Restart_task, 0 );
+ directive_failed( status, "rtems_task_start LOOP" );
+
+ status = rtems_task_suspend( Task_id[ index ] );
+ directive_failed( status, "rtems_task_suspend LOOP" );
+ }
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) rtems_task_restart( Task_id[ index ], 0 );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_task_restart (suspended)",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ CALLING_OVERHEAD_TASK_RESTART
+ );
+
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) rtems_task_suspend( Task_id[ index ] );
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) rtems_task_delete( Task_id[ index ] );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_task_delete (suspended)",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ CALLING_OVERHEAD_TASK_DELETE
+ );
+
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ ) {
+ status = rtems_task_create(
+ name,
+ 250,
+ 1024,
+ RTEMS_DEFAULT_MODES,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &Task_id[ index ]
+ );
+ directive_failed( status, "rtems_task_create LOOP" );
+
+ status = rtems_task_start( Task_id[ index ], Restart_task, 0 );
+ directive_failed( status, "rtems_task_start LOOP" );
+ }
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) rtems_task_restart( Task_id[ index ], 1 );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_task_restart (ready)",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ CALLING_OVERHEAD_TASK_RESTART
+ );
+
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ ) {
+ status = rtems_task_set_priority( Task_id[ index ], 5, &old_priority );
+ directive_failed( status, "rtems_task_set_priority loop" );
+ }
+
+ /* yield processor -- tasks block */
+ status = rtems_task_wake_after( RTEMS_YIELD_PROCESSOR );
+ directive_failed( status, "rtems_task_wake_after" );
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) rtems_task_restart( Task_id[ index ], 1 );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_task_restart (blocked, no preempt)",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ CALLING_OVERHEAD_TASK_RESTART
+ );
+
+ /* yield processor -- tasks block */
+ status = rtems_task_wake_after( RTEMS_YIELD_PROCESSOR );
+ directive_failed( status, "rtems_task_wake_after" );
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) rtems_task_delete( Task_id[ index ] );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_task_delete (blocked)",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ CALLING_OVERHEAD_TASK_DELETE
+ );
+
+ exit( 0 );
+}
+
+rtems_task Low_tasks(
+ rtems_task_argument argument
+)
+{
+ rtems_id id;
+ rtems_status_code status;
+
+ task_count--;
+
+ if ( task_count == 0 ) {
+ status = rtems_task_create(
+ rtems_build_name( 'H', 'I', ' ', ' ' ),
+ 5,
+ 2048,
+ RTEMS_DEFAULT_MODES,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &id
+ );
+ directive_failed( status, "rtems_task_create HI" );
+
+ status = rtems_task_start( id, High_task, 0 );
+ directive_failed( status, "rtems_task_start HI" );
+
+ status = rtems_task_create(
+ rtems_build_name( 'H', 'I', 'G', 'H' ),
+ 3,
+ 2048,
+ RTEMS_DEFAULT_MODES,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &Highest_id
+ );
+ directive_failed( status, "rtems_task_create HIGH" );
+
+ status = rtems_task_start( Highest_id, Highest_task, 0 );
+ directive_failed( status, "rtems_task_start HIGH" );
+
+ }
+ (void) rtems_semaphore_obtain(
+ Semaphore_id,
+ RTEMS_DEFAULT_OPTIONS,
+ RTEMS_NO_TIMEOUT
+ );
+}
+
+rtems_task Restart_task(
+ rtems_task_argument argument
+)
+{
+ if ( argument == 1 )
+ (void) rtems_semaphore_obtain(
+ Semaphore_id,
+ RTEMS_DEFAULT_OPTIONS,
+ RTEMS_NO_TIMEOUT
+ );
+}
diff --git a/testsuites/tmtests/tm04/tm04.doc b/testsuites/tmtests/tm04/tm04.doc
new file mode 100644
index 0000000000..0de40191c6
--- /dev/null
+++ b/testsuites/tmtests/tm04/tm04.doc
@@ -0,0 +1,13 @@
+#
+# $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.
+#
+
+
diff --git a/testsuites/tmtests/tm05/system.h b/testsuites/tmtests/tm05/system.h
new file mode 100644
index 0000000000..9133506e7f
--- /dev/null
+++ b/testsuites/tmtests/tm05/system.h
@@ -0,0 +1,23 @@
+/* system.h
+ *
+ * This include file is used by all tests in the Time Suite.
+ *
+ * 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 "coverhd.h"
+#include "tmacros.h"
+
+#include "timesys.h"
+#include "timegvar.h"
diff --git a/testsuites/tmtests/tm05/task1.c b/testsuites/tmtests/tm05/task1.c
new file mode 100644
index 0000000000..624a87114a
--- /dev/null
+++ b/testsuites/tmtests/tm05/task1.c
@@ -0,0 +1,132 @@
+/*
+ *
+ * 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_id Task_id[OPERATION_COUNT+1];
+rtems_unsigned32 Task_index;
+
+rtems_task High_task(
+ rtems_task_argument argument
+);
+
+rtems_task Middle_tasks(
+ rtems_task_argument argument
+);
+
+rtems_task Low_task(
+ rtems_task_argument argument
+);
+
+void test_init();
+
+rtems_task Init(
+ rtems_task_argument argument
+)
+{
+ rtems_status_code status;
+
+ puts( "\n\n*** TIME TEST 5 ***" );
+
+ test_init();
+
+ status = rtems_task_delete( RTEMS_SELF );
+ directive_failed( status, "rtems_task_delete of RTEMS_SELF" );
+}
+
+void test_init()
+{
+ rtems_status_code status;
+ rtems_task_entry task_entry;
+ rtems_task_priority priority;
+ rtems_unsigned32 index;
+
+ priority = 250;
+
+ for( index = 0; index <= OPERATION_COUNT ; index++ ) {
+
+ status = rtems_task_create(
+ rtems_build_name( 'T', 'I', 'M', 'E' ),
+ priority,
+ 1024,
+ RTEMS_DEFAULT_MODES,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &Task_id[ index ]
+ );
+ directive_failed( status, "rtems_task_create loop" );
+
+ priority--;
+
+ if ( index==0 ) task_entry = Low_task;
+ else if ( index==OPERATION_COUNT ) task_entry = High_task;
+ else task_entry = Middle_tasks;
+
+ status = rtems_task_start( Task_id[ index ], task_entry, 0 );
+ directive_failed( status, "rtems_task_start loop" );
+ }
+}
+
+rtems_task High_task(
+ rtems_task_argument argument
+)
+{
+ Timer_initialize();
+
+ (void) rtems_task_suspend( RTEMS_SELF );
+
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_task_resume (causing preempt)",
+ end_time,
+ OPERATION_COUNT,
+ 0,
+ CALLING_OVERHEAD_TASK_RESUME
+ );
+
+ exit( 0 );
+}
+
+rtems_task Middle_tasks(
+ rtems_task_argument argument
+)
+{
+ (void) rtems_task_suspend( RTEMS_SELF );
+
+ Task_index++;
+ (void) rtems_task_resume( Task_id[ Task_index ] );
+}
+
+rtems_task Low_task(
+ rtems_task_argument argument
+)
+{
+
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_task_resume self",
+ end_time,
+ OPERATION_COUNT,
+ 0,
+ CALLING_OVERHEAD_TASK_SUSPEND
+ );
+
+ Task_index = 1;
+ Timer_initialize();
+ (void) rtems_task_resume( Task_id[ Task_index ] );
+}
diff --git a/testsuites/tmtests/tm05/tm05.doc b/testsuites/tmtests/tm05/tm05.doc
new file mode 100644
index 0000000000..0de40191c6
--- /dev/null
+++ b/testsuites/tmtests/tm05/tm05.doc
@@ -0,0 +1,13 @@
+#
+# $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.
+#
+
+
diff --git a/testsuites/tmtests/tm06/system.h b/testsuites/tmtests/tm06/system.h
new file mode 100644
index 0000000000..9133506e7f
--- /dev/null
+++ b/testsuites/tmtests/tm06/system.h
@@ -0,0 +1,23 @@
+/* system.h
+ *
+ * This include file is used by all tests in the Time Suite.
+ *
+ * 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 "coverhd.h"
+#include "tmacros.h"
+
+#include "timesys.h"
+#include "timegvar.h"
diff --git a/testsuites/tmtests/tm06/task1.c b/testsuites/tmtests/tm06/task1.c
new file mode 100644
index 0000000000..c6a6af6c63
--- /dev/null
+++ b/testsuites/tmtests/tm06/task1.c
@@ -0,0 +1,162 @@
+/*
+ *
+ * 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_id Task_id[ OPERATION_COUNT + 1 ];
+
+rtems_unsigned32 Task_restarted;
+
+rtems_task null_task(
+ rtems_task_argument argument
+);
+
+rtems_task Task_1(
+ rtems_task_argument argument
+);
+
+void test_init( void );
+
+rtems_task Init(
+ rtems_task_argument argument
+)
+{
+ rtems_status_code status;
+
+ puts( "\n\n*** TIME TEST 6 ***" );
+
+ test_init();
+
+ status = rtems_task_delete( RTEMS_SELF );
+ directive_failed( status, "rtems_task_delete of RTEMS_SELF" );
+}
+
+void test_init( void )
+{
+ rtems_status_code status;
+ rtems_id id;
+
+ Task_restarted = OPERATION_COUNT;
+
+ status = rtems_task_create(
+ rtems_build_name( 'T', 'I', 'M', 'E' ),
+ 128,
+ 1024,
+ RTEMS_DEFAULT_MODES,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &id
+ );
+ directive_failed( status, "rtems_task_create" );
+
+ status = rtems_task_start( id, Task_1, 0 );
+ directive_failed( status, "rtems_task_start" );
+}
+
+rtems_task Task_1(
+ rtems_task_argument argument
+)
+{
+ rtems_status_code status;
+ rtems_unsigned32 index;
+
+ if ( Task_restarted == OPERATION_COUNT )
+ Timer_initialize();
+
+ Task_restarted--;
+
+ if ( Task_restarted != 0 )
+ (void) rtems_task_restart( RTEMS_SELF, 0 );
+
+ end_time = Read_timer();
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) Empty_function();
+ overhead = Read_timer();
+
+ put_time(
+ "rtems_task_restart self",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ CALLING_OVERHEAD_TASK_RESTART
+ );
+
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ ) {
+ status = rtems_task_create(
+ rtems_build_name( 'T', 'I', 'M', 'E' ),
+ 254,
+ 1024,
+ RTEMS_DEFAULT_MODES,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &Task_id[ index ]
+ );
+ directive_failed( status, "rtems_task_create loop" );
+
+ status = rtems_task_start( Task_id[ index ], null_task, 0 );
+ directive_failed( status, "rtems_task_start loop" );
+ }
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) rtems_task_suspend( Task_id[ index ] );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_task_suspend (no preempt)",
+ end_time,
+ OPERATION_COUNT,
+ 0,
+ CALLING_OVERHEAD_TASK_SUSPEND
+ );
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) rtems_task_resume( Task_id[ index ] );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_task_resume (no preempt)",
+ end_time,
+ OPERATION_COUNT,
+ 0,
+ CALLING_OVERHEAD_TASK_RESUME
+ );
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) rtems_task_delete( Task_id[ index ] );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_task_delete (others)",
+ end_time,
+ OPERATION_COUNT,
+ 0,
+ CALLING_OVERHEAD_TASK_RESUME
+ );
+
+ exit( 0 );
+}
+
+rtems_task null_task(
+ rtems_task_argument argument
+)
+{
+ while ( FOREVER )
+ ;
+}
diff --git a/testsuites/tmtests/tm06/tm06.doc b/testsuites/tmtests/tm06/tm06.doc
new file mode 100644
index 0000000000..0de40191c6
--- /dev/null
+++ b/testsuites/tmtests/tm06/tm06.doc
@@ -0,0 +1,13 @@
+#
+# $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.
+#
+
+
diff --git a/testsuites/tmtests/tm07/system.h b/testsuites/tmtests/tm07/system.h
new file mode 100644
index 0000000000..9133506e7f
--- /dev/null
+++ b/testsuites/tmtests/tm07/system.h
@@ -0,0 +1,23 @@
+/* system.h
+ *
+ * This include file is used by all tests in the Time Suite.
+ *
+ * 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 "coverhd.h"
+#include "tmacros.h"
+
+#include "timesys.h"
+#include "timegvar.h"
diff --git a/testsuites/tmtests/tm07/task1.c b/testsuites/tmtests/tm07/task1.c
new file mode 100644
index 0000000000..fcd545bbc4
--- /dev/null
+++ b/testsuites/tmtests/tm07/task1.c
@@ -0,0 +1,120 @@
+/*
+ *
+ * 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_id Task_id[OPERATION_COUNT+1], task_index;
+
+rtems_task High_task(
+ rtems_task_argument argument
+);
+
+rtems_task Middle_tasks(
+ rtems_task_argument argument
+);
+
+rtems_task Low_task(
+ rtems_task_argument argument
+);
+
+void test_init();
+
+rtems_task Init(
+ rtems_task_argument argument
+)
+{
+ rtems_status_code status;
+
+ puts( "\n\n*** TIME TEST 7 ***" );
+
+ test_init();
+
+ status = rtems_task_delete( RTEMS_SELF );
+ directive_failed( status, "rtems_task_delete of RTEMS_SELF" );
+}
+
+void test_init()
+{
+ rtems_status_code status;
+ rtems_task_priority priority;
+ rtems_task_entry task_entry;
+ rtems_unsigned32 index;
+
+ priority = 250;
+
+ for( index=0 ; index <= OPERATION_COUNT ; index++ ) {
+ status = rtems_task_create(
+ rtems_build_name( 'T', 'I', 'M', 'E' ),
+ priority,
+ 1024,
+ RTEMS_DEFAULT_MODES,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &Task_id[index]
+ );
+ directive_failed( status, "rtems_task_create" );
+ priority--;
+
+ if ( index == 0 ) task_entry = Low_task;
+ else if ( index == OPERATION_COUNT ) task_entry = High_task;
+ else task_entry = Middle_tasks;
+
+ status = rtems_task_start( Task_id[index], task_entry, 0 );
+ directive_failed( status, "rtems_task_start" );
+ }
+}
+
+rtems_task High_task(
+ rtems_task_argument argument
+)
+{
+ if ( argument != 0 ) {
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_task_restart suspended/preempt",
+ end_time,
+ OPERATION_COUNT,
+ 0,
+ CALLING_OVERHEAD_TASK_RESTART
+ );
+ } else
+ (void) rtems_task_suspend( RTEMS_SELF );
+
+ exit( 0 );
+}
+
+rtems_task Middle_tasks(
+ rtems_task_argument argument
+)
+{
+ task_index++;
+
+ if ( argument != 0 )
+ (void) rtems_task_restart( Task_id[ task_index ], 0xffffffff );
+ else
+ (void) rtems_task_suspend( RTEMS_SELF );
+}
+
+rtems_task Low_task(
+ rtems_task_argument argument
+)
+{
+ task_index = 1;
+
+ Timer_initialize();
+ (void) rtems_task_restart( Task_id[ task_index ], 0xffffffff );
+}
diff --git a/testsuites/tmtests/tm07/tm07.doc b/testsuites/tmtests/tm07/tm07.doc
new file mode 100644
index 0000000000..0de40191c6
--- /dev/null
+++ b/testsuites/tmtests/tm07/tm07.doc
@@ -0,0 +1,13 @@
+#
+# $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.
+#
+
+
diff --git a/testsuites/tmtests/tm08/system.h b/testsuites/tmtests/tm08/system.h
new file mode 100644
index 0000000000..9133506e7f
--- /dev/null
+++ b/testsuites/tmtests/tm08/system.h
@@ -0,0 +1,23 @@
+/* system.h
+ *
+ * This include file is used by all tests in the Time Suite.
+ *
+ * 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 "coverhd.h"
+#include "tmacros.h"
+
+#include "timesys.h"
+#include "timegvar.h"
diff --git a/testsuites/tmtests/tm08/task1.c b/testsuites/tmtests/tm08/task1.c
new file mode 100644
index 0000000000..36312ff4b7
--- /dev/null
+++ b/testsuites/tmtests/tm08/task1.c
@@ -0,0 +1,255 @@
+/*
+ *
+ * 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_id Test_task_id;
+
+rtems_task test_task(
+ rtems_task_argument argument
+);
+rtems_task test_task1(
+ rtems_task_argument argument
+);
+void test_init();
+
+rtems_task Init(
+ rtems_task_argument argument
+)
+{
+ rtems_status_code status;
+
+ puts( "\n\n*** TIME TEST 8 ***" );
+
+ test_init();
+
+ status = rtems_task_delete( RTEMS_SELF );
+ directive_failed( status, "rtems_task_delete of RTEMS_SELF" );
+}
+
+void test_init()
+{
+ rtems_status_code status;
+
+ status = rtems_task_create(
+ 1,
+ 128,
+ 1024,
+ RTEMS_DEFAULT_MODES,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &Test_task_id
+ );
+ directive_failed( status, "rtems_task_create" );
+
+ status = rtems_task_start( Test_task_id, test_task, 0 );
+ directive_failed( status, "rtems_task_start" );
+
+ status = rtems_task_create(
+ 1,
+ 254,
+ 1024,
+ RTEMS_DEFAULT_MODES,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &Test_task_id
+ );
+ directive_failed( status, "rtems_task_create" );
+
+ status = rtems_task_start( Test_task_id, test_task1, 0 );
+ directive_failed( status, "rtems_task_start" );
+}
+
+rtems_task test_task(
+ rtems_task_argument argument
+)
+{
+ rtems_status_code status;
+ rtems_unsigned32 index;
+ rtems_task_priority old_priority;
+ rtems_time_of_day time;
+ rtems_unsigned32 old_note;
+ rtems_unsigned32 old_mode;
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) Empty_function();
+ overhead = Read_timer();
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) rtems_task_set_priority(
+ Test_task_id,
+ RTEMS_CURRENT_PRIORITY,
+ &old_priority
+ );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_task_set_priority current priority",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ CALLING_OVERHEAD_TASK_SET_PRIORITY
+ );
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) rtems_task_set_priority( Test_task_id, 253, &old_priority );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_task_set_priority no preempt",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ CALLING_OVERHEAD_TASK_SET_PRIORITY
+ );
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) rtems_task_mode(
+ RTEMS_CURRENT_MODE,
+ RTEMS_CURRENT_MODE,
+ &old_mode
+ );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_task_mode (current)",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ CALLING_OVERHEAD_TASK_MODE
+ );
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ ) {
+ (void) rtems_task_mode(
+ RTEMS_INTERRUPT_LEVEL(1),
+ RTEMS_INTERRUPT_MASK,
+ &old_mode
+ );
+ (void) rtems_task_mode(
+ RTEMS_INTERRUPT_LEVEL(0),
+ RTEMS_INTERRUPT_MASK,
+ &old_mode
+ );
+ }
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_task_mode (no reschedule)",
+ end_time,
+ OPERATION_COUNT * 2,
+ overhead,
+ CALLING_OVERHEAD_TASK_MODE
+ );
+
+ Timer_initialize(); /* must be one host */
+ (void) rtems_task_mode( RTEMS_NO_ASR, RTEMS_ASR_MASK, &old_mode );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_task_mode (reschedule)",
+ end_time,
+ 1,
+ 0,
+ CALLING_OVERHEAD_TASK_MODE
+ );
+
+ status = rtems_task_mode( RTEMS_NO_PREEMPT, RTEMS_PREEMPT_MASK, &old_mode );
+ directive_failed( status, "rtems_task_mode" );
+
+ status = rtems_task_set_priority( Test_task_id, 1, &old_priority );
+ directive_failed( status, "rtems_task_set_priority" );
+
+ /* preempted by test_task1 */
+ Timer_initialize();
+ (void) rtems_task_mode( RTEMS_PREEMPT, RTEMS_PREEMPT_MASK, &old_mode );
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) rtems_task_set_note( Test_task_id, 8, 10 );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_task_set_note",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ CALLING_OVERHEAD_TASK_SET_NOTE
+ );
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) rtems_task_get_note( Test_task_id, 8, &old_note );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_task_set_note",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ CALLING_OVERHEAD_TASK_GET_NOTE
+ );
+
+ build_time( &time, 1, 1, 1988, 0, 0, 0, 0 );
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) rtems_clock_set( &time );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_clock_set",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ CALLING_OVERHEAD_CLOCK_SET
+ );
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) rtems_clock_get( RTEMS_CLOCK_GET_TOD, &time );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_clock_get",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ CALLING_OVERHEAD_CLOCK_GET
+ );
+
+ exit( 0 );
+}
+
+rtems_task test_task1(
+ rtems_task_argument argument
+)
+{
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_task_mode (preemptive)",
+ end_time,
+ 1,
+ 0,
+ CALLING_OVERHEAD_TASK_MODE
+ );
+
+ (void) rtems_task_suspend( RTEMS_SELF );
+}
diff --git a/testsuites/tmtests/tm08/tm08.doc b/testsuites/tmtests/tm08/tm08.doc
new file mode 100644
index 0000000000..0de40191c6
--- /dev/null
+++ b/testsuites/tmtests/tm08/tm08.doc
@@ -0,0 +1,13 @@
+#
+# $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.
+#
+
+
diff --git a/testsuites/tmtests/tm09/system.h b/testsuites/tmtests/tm09/system.h
new file mode 100644
index 0000000000..9133506e7f
--- /dev/null
+++ b/testsuites/tmtests/tm09/system.h
@@ -0,0 +1,23 @@
+/* system.h
+ *
+ * This include file is used by all tests in the Time Suite.
+ *
+ * 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 "coverhd.h"
+#include "tmacros.h"
+
+#include "timesys.h"
+#include "timegvar.h"
diff --git a/testsuites/tmtests/tm09/task1.c b/testsuites/tmtests/tm09/task1.c
new file mode 100644
index 0000000000..9126ee8a1d
--- /dev/null
+++ b/testsuites/tmtests/tm09/task1.c
@@ -0,0 +1,221 @@
+/*
+ *
+ * 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_id Queue_id;
+
+rtems_task Test_task(
+ rtems_task_argument argument
+);
+void queue_test();
+
+rtems_task Init(
+ rtems_task_argument argument
+)
+{
+ rtems_status_code status;
+
+ puts( "\n\n*** TIME TEST 9 ***" );
+
+ status = rtems_task_create(
+ 1,
+ 128,
+ 4096,
+ RTEMS_DEFAULT_MODES,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &Task_id[ 1 ]
+ );
+ directive_failed( status, "rtems_task_create" );
+
+ status = rtems_task_start( Task_id[ 1 ], Test_task, 0 );
+ directive_failed( status, "rtems_task_start" );
+
+ status = rtems_task_delete( RTEMS_SELF );
+ directive_failed( status, "rtems_task_delete of RTEMS_SELF" );
+}
+
+rtems_task Test_task (
+ rtems_task_argument argument
+)
+{
+ Timer_initialize();
+ rtems_message_queue_create(
+ 1,
+ OPERATION_COUNT,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &Queue_id
+ );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_message_queue_create",
+ end_time,
+ 1,
+ 0,
+ CALLING_OVERHEAD_MESSAGE_QUEUE_CREATE
+ );
+
+ queue_test();
+
+ Timer_initialize();
+ rtems_message_queue_delete( Queue_id );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_message_queue_delete",
+ end_time,
+ 1,
+ 0,
+ CALLING_OVERHEAD_MESSAGE_QUEUE_DELETE
+ );
+
+ exit( 0 );
+}
+
+void queue_test()
+{
+ rtems_unsigned32 send_loop_time;
+ rtems_unsigned32 urgent_loop_time;
+ rtems_unsigned32 receive_loop_time;
+ rtems_unsigned32 send_time;
+ rtems_unsigned32 urgent_time;
+ rtems_unsigned32 receive_time;
+ rtems_unsigned32 empty_flush_time;
+ rtems_unsigned32 flush_time;
+ rtems_unsigned32 empty_flush_count;
+ rtems_unsigned32 flush_count;
+ rtems_unsigned32 index;
+ rtems_unsigned32 iterations;
+ long buffer[4];
+ rtems_status_code status;
+
+ send_loop_time = 0;
+ urgent_loop_time = 0;
+ receive_loop_time = 0;
+ send_time = 0;
+ urgent_time = 0;
+ receive_time = 0;
+ empty_flush_time = 0;
+ flush_time = 0;
+ flush_count = 0;
+ empty_flush_count = 0;
+
+ for ( iterations = 1 ; iterations <= OPERATION_COUNT ; iterations++ ) {
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) Empty_function();
+ send_loop_time += Read_timer();
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) Empty_function();
+ urgent_loop_time += Read_timer();
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) Empty_function();
+ receive_loop_time += Read_timer();
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) rtems_message_queue_send( Queue_id, (long (*)[4])buffer );
+ send_time += Read_timer();
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) rtems_message_queue_receive(
+ Queue_id,
+ (long (*)[4])buffer,
+ RTEMS_DEFAULT_OPTIONS,
+ RTEMS_NO_TIMEOUT
+ );
+ receive_time += Read_timer();
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) rtems_message_queue_urgent( Queue_id, (long (*)[4])buffer );
+ urgent_time += Read_timer();
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) rtems_message_queue_receive(
+ Queue_id,
+ (long (*)[4])buffer,
+ RTEMS_DEFAULT_OPTIONS,
+ RTEMS_NO_TIMEOUT
+ );
+ receive_time += Read_timer();
+
+ Timer_initialize();
+ rtems_message_queue_flush( Queue_id, &empty_flush_count );
+ empty_flush_time += Read_timer();
+
+ /* send one message to flush */
+ status = rtems_message_queue_send(
+ Queue_id,
+ (long (*)[4])buffer
+ );
+ directive_failed( status, "rtems_message_queue_send" );
+
+ Timer_initialize();
+ rtems_message_queue_flush( Queue_id, &flush_count );
+ flush_time += Read_timer();
+ }
+
+ put_time(
+ "rtems_message_queue_send (no tasks waiting)",
+ send_time,
+ OPERATION_COUNT * OPERATION_COUNT,
+ send_loop_time,
+ CALLING_OVERHEAD_MESSAGE_QUEUE_SEND
+ );
+
+ put_time(
+ "rtems_message_queue_urgent (no tasks waiting)",
+ urgent_time,
+ OPERATION_COUNT * OPERATION_COUNT,
+ urgent_loop_time,
+ CALLING_OVERHEAD_MESSAGE_QUEUE_URGENT
+ );
+
+ put_time(
+ "rtems_message_queue_receive (messages available)",
+ receive_time,
+ OPERATION_COUNT * OPERATION_COUNT * 2,
+ receive_loop_time * 2,
+ CALLING_OVERHEAD_MESSAGE_QUEUE_RECEIVE
+ );
+
+ put_time(
+ "rtems_message_queue_flush (empty queue)",
+ empty_flush_time,
+ OPERATION_COUNT,
+ 0,
+ CALLING_OVERHEAD_MESSAGE_QUEUE_FLUSH
+ );
+
+ put_time(
+ "rtems_message_queue_flush (messages flushed)",
+ flush_time,
+ OPERATION_COUNT,
+ 0,
+ CALLING_OVERHEAD_MESSAGE_QUEUE_FLUSH
+ );
+
+}
diff --git a/testsuites/tmtests/tm09/tm09.doc b/testsuites/tmtests/tm09/tm09.doc
new file mode 100644
index 0000000000..0de40191c6
--- /dev/null
+++ b/testsuites/tmtests/tm09/tm09.doc
@@ -0,0 +1,13 @@
+#
+# $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.
+#
+
+
diff --git a/testsuites/tmtests/tm10/system.h b/testsuites/tmtests/tm10/system.h
new file mode 100644
index 0000000000..9133506e7f
--- /dev/null
+++ b/testsuites/tmtests/tm10/system.h
@@ -0,0 +1,23 @@
+/* system.h
+ *
+ * This include file is used by all tests in the Time Suite.
+ *
+ * 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 "coverhd.h"
+#include "tmacros.h"
+
+#include "timesys.h"
+#include "timegvar.h"
diff --git a/testsuites/tmtests/tm10/task1.c b/testsuites/tmtests/tm10/task1.c
new file mode 100644
index 0000000000..788c2cd1f7
--- /dev/null
+++ b/testsuites/tmtests/tm10/task1.c
@@ -0,0 +1,156 @@
+/*
+ *
+ * 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_id Queue_id;
+long Buffer[4];
+
+rtems_task High_task(
+ rtems_task_argument argument
+);
+
+rtems_task Middle_tasks(
+ rtems_task_argument argument
+);
+
+rtems_task Low_task(
+ rtems_task_argument argument
+);
+
+void test_init();
+
+rtems_task Init(
+ rtems_task_argument argument
+)
+{
+ rtems_status_code status;
+
+ puts( "\n\n*** TIME TEST 10 ***" );
+
+ test_init();
+
+ status = rtems_task_delete( RTEMS_SELF );
+ directive_failed( status, "rtems_task_delete of RTEMS_SELF" );
+}
+
+void test_init()
+{
+ rtems_unsigned32 index;
+ rtems_task_entry task_entry;
+ rtems_status_code status;
+ rtems_task_priority priority;
+ rtems_id task_id;
+
+ priority = 5;
+
+ for( index = 0; index <= OPERATION_COUNT ; index++ ) {
+ status = rtems_task_create(
+ rtems_build_name( 'T', 'I', 'M', 'E' ),
+ priority,
+ 1024,
+ RTEMS_DEFAULT_MODES,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &task_id
+ );
+ directive_failed( status, "rtems_task_create LOOP" );
+
+ priority++;
+
+ if ( index==0 ) task_entry = High_task;
+ else if ( index==OPERATION_COUNT ) task_entry = Low_task;
+ else task_entry = Middle_tasks;
+
+ status = rtems_task_start( task_id, task_entry, 0 );
+ directive_failed( status, "rtems_task_start LOOP" );
+ }
+
+ status = rtems_message_queue_create(
+ 1,
+ OPERATION_COUNT,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &Queue_id
+ );
+ directive_failed( status, "rtems_message_queue_create" );
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) Empty_function();
+ overhead = Read_timer();
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) rtems_message_queue_receive(
+ Queue_id,
+ (long (*)[4]) Buffer,
+ RTEMS_NO_WAIT,
+ RTEMS_NO_TIMEOUT
+ );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_message_queue_receive (RTEMS_NO_WAIT)",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ CALLING_OVERHEAD_MESSAGE_QUEUE_RECEIVE
+ );
+
+}
+
+rtems_task High_task(
+ rtems_task_argument argument
+)
+{
+ Timer_initialize();
+ (void) rtems_message_queue_receive(
+ Queue_id,
+ (long (*)[4]) Buffer,
+ RTEMS_DEFAULT_OPTIONS,
+ RTEMS_NO_TIMEOUT
+ );
+}
+
+rtems_task Middle_tasks(
+ rtems_task_argument argument
+)
+{
+ (void) rtems_message_queue_receive(
+ Queue_id,
+ (long (*)[4]) Buffer,
+ RTEMS_DEFAULT_OPTIONS,
+ RTEMS_NO_TIMEOUT
+ );
+}
+
+
+rtems_task Low_task(
+ rtems_task_argument argument
+)
+{
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_message_queue_receive (blocking)",
+ end_time,
+ OPERATION_COUNT,
+ 0,
+ CALLING_OVERHEAD_MESSAGE_QUEUE_RECEIVE
+ );
+
+ exit( 0 );
+}
diff --git a/testsuites/tmtests/tm10/tm10.doc b/testsuites/tmtests/tm10/tm10.doc
new file mode 100644
index 0000000000..0de40191c6
--- /dev/null
+++ b/testsuites/tmtests/tm10/tm10.doc
@@ -0,0 +1,13 @@
+#
+# $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.
+#
+
+
diff --git a/testsuites/tmtests/tm11/system.h b/testsuites/tmtests/tm11/system.h
new file mode 100644
index 0000000000..9133506e7f
--- /dev/null
+++ b/testsuites/tmtests/tm11/system.h
@@ -0,0 +1,23 @@
+/* system.h
+ *
+ * This include file is used by all tests in the Time Suite.
+ *
+ * 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 "coverhd.h"
+#include "tmacros.h"
+
+#include "timesys.h"
+#include "timegvar.h"
diff --git a/testsuites/tmtests/tm11/task1.c b/testsuites/tmtests/tm11/task1.c
new file mode 100644
index 0000000000..9bf45442dc
--- /dev/null
+++ b/testsuites/tmtests/tm11/task1.c
@@ -0,0 +1,148 @@
+/*
+ *
+ * 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_id Queue_id;
+
+long Buffer[4];
+
+rtems_task test_init(
+ rtems_task_argument argument
+);
+
+rtems_task Middle_tasks(
+ rtems_task_argument argument
+);
+
+rtems_task High_task(
+ rtems_task_argument argument
+);
+
+
+void Init(
+ rtems_task_argument argument
+)
+{
+ rtems_status_code status;
+ rtems_id id;
+
+ puts( "\n\n*** TIME TEST 11 ***" );
+
+ status = rtems_task_create(
+ 1,
+ 251,
+ 1024,
+ RTEMS_DEFAULT_MODES,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &id
+ );
+ directive_failed( status, "rtems_task_create" );
+
+ status = rtems_task_start( id, test_init, 0 );
+ directive_failed( status, "rtems_task_start" );
+
+ status = rtems_task_delete( RTEMS_SELF );
+ directive_failed( status, "rtems_task_delete of RTEMS_SELF" );
+}
+
+rtems_task test_init(
+ rtems_task_argument argument
+)
+{
+ rtems_unsigned32 index;
+ rtems_task_entry task_entry;
+ rtems_task_priority priority;
+ rtems_id task_id;
+ rtems_status_code status;
+
+/* As each task is started, it preempts this task and
+ * performs a blocking rtems_message_queue_receive. Upon completion of
+ * this loop all created tasks are blocked.
+ */
+
+ status = rtems_message_queue_create(
+ rtems_build_name( 'M', 'Q', '1', ' ' ),
+ OPERATION_COUNT,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &Queue_id
+ );
+ directive_failed( status, "rtems_message_queue_create" );
+
+ priority = 250;
+
+ for( index = 0; index < OPERATION_COUNT ; index++ ) {
+ status = rtems_task_create(
+ rtems_build_name( 'T', 'I', 'M', 'E' ),
+ priority,
+ 1024,
+ RTEMS_DEFAULT_MODES,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &task_id
+ );
+ directive_failed( status, "rtems_task_create LOOP" );
+
+ priority--;
+
+ if ( index==OPERATION_COUNT-1 ) task_entry = High_task;
+ else task_entry = Middle_tasks;
+
+ status = rtems_task_start( task_id, task_entry, 0 );
+ directive_failed( status, "rtems_task_start LOOP" );
+ }
+
+ Timer_initialize();
+ (void) rtems_message_queue_send( Queue_id, (long (*)[4]) Buffer );
+}
+
+rtems_task Middle_tasks(
+ rtems_task_argument argument
+)
+{
+ (void) rtems_message_queue_receive(
+ Queue_id,
+ (long (*)[4]) Buffer,
+ RTEMS_DEFAULT_OPTIONS,
+ RTEMS_NO_TIMEOUT
+ );
+
+ (void) rtems_message_queue_send( Queue_id, (long (*)[4]) Buffer );
+}
+
+rtems_task High_task(
+ rtems_task_argument argument
+)
+{
+ (void) rtems_message_queue_receive(
+ Queue_id,
+ (long (*)[4]) Buffer,
+ RTEMS_DEFAULT_OPTIONS,
+ RTEMS_NO_TIMEOUT
+ );
+
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_message_queue_send (preemptive)",
+ end_time,
+ OPERATION_COUNT,
+ 0,
+ CALLING_OVERHEAD_MESSAGE_QUEUE_SEND
+ );
+
+ exit( 0 );
+}
diff --git a/testsuites/tmtests/tm11/tm11.doc b/testsuites/tmtests/tm11/tm11.doc
new file mode 100644
index 0000000000..0de40191c6
--- /dev/null
+++ b/testsuites/tmtests/tm11/tm11.doc
@@ -0,0 +1,13 @@
+#
+# $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.
+#
+
+
diff --git a/testsuites/tmtests/tm12/system.h b/testsuites/tmtests/tm12/system.h
new file mode 100644
index 0000000000..9133506e7f
--- /dev/null
+++ b/testsuites/tmtests/tm12/system.h
@@ -0,0 +1,23 @@
+/* system.h
+ *
+ * This include file is used by all tests in the Time Suite.
+ *
+ * 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 "coverhd.h"
+#include "tmacros.h"
+
+#include "timesys.h"
+#include "timegvar.h"
diff --git a/testsuites/tmtests/tm12/task1.c b/testsuites/tmtests/tm12/task1.c
new file mode 100644
index 0000000000..8735cc601f
--- /dev/null
+++ b/testsuites/tmtests/tm12/task1.c
@@ -0,0 +1,142 @@
+/*
+ *
+ * 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_id Queue_id;
+
+long Buffer[4];
+
+rtems_task test_init(
+ rtems_task_argument argument
+);
+
+rtems_task High_task(
+ rtems_task_argument argument
+);
+
+rtems_task Low_tasks(
+ rtems_task_argument argument
+);
+
+
+rtems_task Init(
+ rtems_task_argument argument
+)
+{
+ rtems_id task_id;
+ rtems_status_code status;
+
+ puts( "\n\n*** TIME TEST 12 ***" );
+
+ status = rtems_task_create(
+ 1,
+ 251,
+ 1024,
+ RTEMS_DEFAULT_MODES,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &task_id
+ );
+ directive_failed( status, "rtems_task_create" );
+
+ status = rtems_task_start( task_id, test_init, 0 );
+ directive_failed( status, "rtems_task_start" );
+
+ status = rtems_task_delete( RTEMS_SELF );
+ directive_failed( status, "rtems_task_delete of RTEMS_SELF" );
+}
+
+rtems_task test_init(
+ rtems_task_argument argument
+)
+{
+ rtems_unsigned32 index;
+ rtems_task_entry task_entry;
+ rtems_task_priority priority;
+ rtems_id task_id;
+ rtems_status_code status;
+
+
+ status = rtems_message_queue_create(
+ rtems_build_name( 'M', 'Q', '1', ' ' ),
+ OPERATION_COUNT,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &Queue_id
+ );
+ directive_failed( status, "rtems_message_queue_create" );
+
+ priority = 250;
+
+ for( index = 0; index <= OPERATION_COUNT ; index++ ) {
+ status = rtems_task_create(
+ rtems_build_name( 'T', 'I', 'M', 'E' ),
+ priority,
+ 1024,
+ RTEMS_DEFAULT_MODES,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &task_id
+ );
+ directive_failed( status, "rtems_task_create LOOP" );
+
+ priority--;
+
+ if ( index==OPERATION_COUNT ) task_entry = High_task;
+ else task_entry = Low_tasks;
+
+ status = rtems_task_start( task_id, task_entry, 0 );
+ directive_failed( status, "rtems_task_start LOOP" );
+ }
+}
+
+rtems_task High_task(
+ rtems_task_argument argument
+)
+{
+ rtems_unsigned32 index;
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) Empty_function();
+ overhead = Read_timer();
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) rtems_message_queue_send( Queue_id, (long (*)[4]) Buffer );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_message_queue_send (readying)",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ CALLING_OVERHEAD_MESSAGE_QUEUE_SEND
+ );
+
+ exit( 0 );
+}
+
+rtems_task Low_tasks(
+ rtems_task_argument argument
+)
+{
+ (void) rtems_message_queue_receive(
+ Queue_id,
+ (long (*)[4]) Buffer,
+ RTEMS_DEFAULT_OPTIONS,
+ RTEMS_NO_TIMEOUT
+ );
+}
diff --git a/testsuites/tmtests/tm12/tm12.doc b/testsuites/tmtests/tm12/tm12.doc
new file mode 100644
index 0000000000..0de40191c6
--- /dev/null
+++ b/testsuites/tmtests/tm12/tm12.doc
@@ -0,0 +1,13 @@
+#
+# $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.
+#
+
+
diff --git a/testsuites/tmtests/tm13/system.h b/testsuites/tmtests/tm13/system.h
new file mode 100644
index 0000000000..9133506e7f
--- /dev/null
+++ b/testsuites/tmtests/tm13/system.h
@@ -0,0 +1,23 @@
+/* system.h
+ *
+ * This include file is used by all tests in the Time Suite.
+ *
+ * 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 "coverhd.h"
+#include "tmacros.h"
+
+#include "timesys.h"
+#include "timegvar.h"
diff --git a/testsuites/tmtests/tm13/task1.c b/testsuites/tmtests/tm13/task1.c
new file mode 100644
index 0000000000..28ff2bf149
--- /dev/null
+++ b/testsuites/tmtests/tm13/task1.c
@@ -0,0 +1,147 @@
+/*
+ *
+ * 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_id Queue_id;
+
+long Buffer[4];
+
+rtems_task test_init(
+ rtems_task_argument argument
+);
+
+rtems_task Middle_tasks(
+ rtems_task_argument argument
+);
+
+rtems_task High_task(
+ rtems_task_argument argument
+);
+
+void Init(
+ rtems_task_argument argument
+)
+{
+ rtems_status_code status;
+ rtems_id id;
+
+ puts( "\n\n*** TIME TEST 13 ***" );
+
+ status = rtems_task_create(
+ 1,
+ 251,
+ 1024,
+ RTEMS_DEFAULT_MODES,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &id
+ );
+ directive_failed( status, "rtems_task_create" );
+
+ status = rtems_task_start( id, test_init, 0 );
+ directive_failed( status, "rtems_task_start" );
+
+ status = rtems_task_delete( RTEMS_SELF );
+ directive_failed( status, "rtems_task_delete of RTEMS_SELF" );
+}
+
+rtems_task test_init(
+ rtems_task_argument argument
+)
+{
+ rtems_unsigned32 index;
+ rtems_task_entry task_entry;
+ rtems_task_priority priority;
+ rtems_id task_id;
+ rtems_status_code status;
+
+/* As each task is started, it preempts this task and
+ * performs a blocking rtems_message_queue_receive. Upon completion of
+ * this loop all created tasks are blocked.
+ */
+
+ status = rtems_message_queue_create(
+ rtems_build_name( 'M', 'Q', '1', ' ' ),
+ OPERATION_COUNT,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &Queue_id
+ );
+ directive_failed( status, "rtems_message_queue_create" );
+
+ priority = 250;
+
+ for( index = 0; index < OPERATION_COUNT ; index++ ) {
+ status = rtems_task_create(
+ rtems_build_name( 'T', 'I', 'M', 'E' ),
+ priority,
+ 1024,
+ RTEMS_DEFAULT_MODES,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &task_id
+ );
+ directive_failed( status, "rtems_task_create LOOP" );
+
+ priority--;
+
+ if ( index==OPERATION_COUNT-1 ) task_entry = High_task;
+ else task_entry = Middle_tasks;
+
+ status = rtems_task_start( task_id, task_entry, 0 );
+ directive_failed( status, "rtems_task_start LOOP" );
+ }
+
+ Timer_initialize();
+ (void) rtems_message_queue_urgent( Queue_id, (long (*)[4]) Buffer );
+}
+
+rtems_task Middle_tasks(
+ rtems_task_argument argument
+)
+{
+ (void) rtems_message_queue_receive(
+ Queue_id,
+ (long (*)[4]) Buffer,
+ RTEMS_DEFAULT_OPTIONS,
+ RTEMS_NO_TIMEOUT
+ );
+
+ (void) rtems_message_queue_urgent( Queue_id, (long (*)[4]) Buffer );
+}
+
+rtems_task High_task(
+ rtems_task_argument argument
+)
+{
+ (void) rtems_message_queue_receive(
+ Queue_id,
+ (long (*)[4]) Buffer,
+ RTEMS_DEFAULT_OPTIONS,
+ RTEMS_NO_TIMEOUT
+ );
+
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_message_queue_urgent (preemptive)",
+ end_time,
+ OPERATION_COUNT,
+ 0,
+ CALLING_OVERHEAD_MESSAGE_QUEUE_URGENT
+ );
+
+ exit( 0 );
+}
diff --git a/testsuites/tmtests/tm13/tm13.doc b/testsuites/tmtests/tm13/tm13.doc
new file mode 100644
index 0000000000..0de40191c6
--- /dev/null
+++ b/testsuites/tmtests/tm13/tm13.doc
@@ -0,0 +1,13 @@
+#
+# $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.
+#
+
+
diff --git a/testsuites/tmtests/tm14/system.h b/testsuites/tmtests/tm14/system.h
new file mode 100644
index 0000000000..9133506e7f
--- /dev/null
+++ b/testsuites/tmtests/tm14/system.h
@@ -0,0 +1,23 @@
+/* system.h
+ *
+ * This include file is used by all tests in the Time Suite.
+ *
+ * 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 "coverhd.h"
+#include "tmacros.h"
+
+#include "timesys.h"
+#include "timegvar.h"
diff --git a/testsuites/tmtests/tm14/task1.c b/testsuites/tmtests/tm14/task1.c
new file mode 100644
index 0000000000..3020fa66e9
--- /dev/null
+++ b/testsuites/tmtests/tm14/task1.c
@@ -0,0 +1,142 @@
+/*
+ *
+ * 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_id Queue_id;
+
+long Buffer[4];
+
+rtems_task test_init(
+ rtems_task_argument argument
+);
+
+rtems_task High_task(
+ rtems_task_argument argument
+);
+
+rtems_task Low_tasks(
+ rtems_task_argument argument
+);
+
+
+rtems_task Init(
+ rtems_task_argument argument
+)
+{
+ rtems_id task_id;
+ rtems_status_code status;
+
+ puts( "\n\n*** TIME TEST 14 ***" );
+
+ status = rtems_task_create(
+ 1,
+ 251,
+ 1024,
+ RTEMS_DEFAULT_MODES,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &task_id
+ );
+ directive_failed( status, "rtems_task_create" );
+
+ status = rtems_task_start( task_id, test_init, 0 );
+ directive_failed( status, "rtems_task_start" );
+
+ status = rtems_task_delete( RTEMS_SELF );
+ directive_failed( status, "rtems_task_delete of RTEMS_SELF" );
+}
+
+rtems_task test_init(
+ rtems_task_argument argument
+)
+{
+ rtems_unsigned32 index;
+ rtems_task_entry task_entry;
+ rtems_task_priority priority;
+ rtems_id task_id;
+ rtems_status_code status;
+
+
+ status = rtems_message_queue_create(
+ rtems_build_name( 'M', 'Q', '1', ' ' ),
+ OPERATION_COUNT,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &Queue_id
+ );
+ directive_failed( status, "rtems_message_queue_create" );
+
+ priority = 250;
+
+ for( index = 0; index <= OPERATION_COUNT ; index++ ) {
+ status = rtems_task_create(
+ rtems_build_name( 'T', 'I', 'M', 'E' ),
+ priority,
+ 1024,
+ RTEMS_DEFAULT_MODES,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &task_id
+ );
+ directive_failed( status, "rtems_task_create LOOP" );
+
+ priority--;
+
+ if ( index==OPERATION_COUNT ) task_entry = High_task;
+ else task_entry = Low_tasks;
+
+ status = rtems_task_start( task_id, task_entry, 0 );
+ directive_failed( status, "rtems_task_start LOOP" );
+ }
+}
+
+rtems_task High_task(
+ rtems_task_argument argument
+)
+{
+ rtems_unsigned32 index;
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) Empty_function();
+ overhead = Read_timer();
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) rtems_message_queue_urgent( Queue_id, (long (*)[4]) Buffer );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_message_queue_urgent (readying)",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ CALLING_OVERHEAD_MESSAGE_QUEUE_URGENT
+ );
+
+ exit( 0 );
+}
+
+rtems_task Low_tasks(
+ rtems_task_argument argument
+)
+{
+ (void) rtems_message_queue_receive(
+ Queue_id,
+ (long (*)[4]) Buffer,
+ RTEMS_DEFAULT_OPTIONS,
+ RTEMS_NO_TIMEOUT
+ );
+}
diff --git a/testsuites/tmtests/tm14/tm14.doc b/testsuites/tmtests/tm14/tm14.doc
new file mode 100644
index 0000000000..0de40191c6
--- /dev/null
+++ b/testsuites/tmtests/tm14/tm14.doc
@@ -0,0 +1,13 @@
+#
+# $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.
+#
+
+
diff --git a/testsuites/tmtests/tm15/system.h b/testsuites/tmtests/tm15/system.h
new file mode 100644
index 0000000000..9133506e7f
--- /dev/null
+++ b/testsuites/tmtests/tm15/system.h
@@ -0,0 +1,23 @@
+/* system.h
+ *
+ * This include file is used by all tests in the Time Suite.
+ *
+ * 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 "coverhd.h"
+#include "tmacros.h"
+
+#include "timesys.h"
+#include "timegvar.h"
diff --git a/testsuites/tmtests/tm15/task1.c b/testsuites/tmtests/tm15/task1.c
new file mode 100644
index 0000000000..05fb29461b
--- /dev/null
+++ b/testsuites/tmtests/tm15/task1.c
@@ -0,0 +1,222 @@
+/*
+ *
+ * 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_unsigned32 time_set, eventout;
+
+rtems_task High_tasks(
+ rtems_task_argument argument
+);
+
+rtems_task Low_task(
+ rtems_task_argument argument
+);
+
+void test_init();
+
+rtems_task Init(
+ rtems_task_argument argument
+)
+{
+ rtems_status_code status;
+
+ puts( "\n\n*** TIME TEST 15 ***" );
+
+ test_init();
+
+ status = rtems_task_delete( RTEMS_SELF );
+ directive_failed( status, "rtems_task_delete of RTEMS_SELF" );
+}
+
+void test_init()
+{
+ rtems_id id;
+ rtems_unsigned32 index;
+ rtems_event_set event_out;
+ rtems_status_code status;
+
+ time_set = FALSE;
+
+ status = rtems_task_create(
+ rtems_build_name( 'L', 'O', 'W', ' ' ),
+ 10,
+ 1024,
+ RTEMS_NO_PREEMPT,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &id
+ );
+ directive_failed( status, "rtems_task_create LOW" );
+
+ status = rtems_task_start( id, Low_task, 0 );
+ directive_failed( status, "rtems_task_start LOW" );
+
+ for ( index = 1 ; index <= OPERATION_COUNT ; index++ ) {
+ status = rtems_task_create(
+ rtems_build_name( 'H', 'I', 'G', 'H' ),
+ 5,
+ 1024,
+ RTEMS_DEFAULT_MODES,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &Task_id[ index ]
+ );
+ directive_failed( status, "rtems_task_create LOOP" );
+
+ status = rtems_task_start( Task_id[ index ], High_tasks, 0 );
+ directive_failed( status, "rtems_task_start LOOP" );
+ }
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) Empty_function();
+ overhead = Read_timer();
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ {
+ (void) rtems_event_receive(
+ RTEMS_PENDING_EVENTS,
+ RTEMS_DEFAULT_OPTIONS,
+ RTEMS_NO_TIMEOUT,
+ &event_out
+ );
+ }
+
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_event_receive (current)",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ CALLING_OVERHEAD_EVENT_RECEIVE
+ );
+
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ {
+ (void) rtems_event_receive(
+ RTEMS_ALL_EVENTS,
+ RTEMS_NO_WAIT,
+ RTEMS_NO_TIMEOUT,
+ &event_out
+ );
+ }
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_event_receive (RTEMS_NO_WAIT)",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ CALLING_OVERHEAD_EVENT_RECEIVE
+ );
+}
+
+rtems_task Low_task(
+ rtems_task_argument argument
+)
+{
+ rtems_unsigned32 index;
+ rtems_event_set event_out;
+
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_event_receive (blocking)",
+ end_time,
+ OPERATION_COUNT,
+ 0,
+ CALLING_OVERHEAD_EVENT_RECEIVE
+ );
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) Empty_function();
+ overhead = Read_timer();
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) rtems_event_send( RTEMS_SELF, RTEMS_EVENT_16 );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_event_send (non-blocking)",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ CALLING_OVERHEAD_EVENT_SEND
+ );
+
+ Timer_initialize();
+ (void) rtems_event_receive(
+ RTEMS_EVENT_16,
+ RTEMS_DEFAULT_OPTIONS,
+ RTEMS_NO_TIMEOUT,
+ &event_out
+ );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_event_receive (available)",
+ end_time,
+ 1,
+ 0,
+ CALLING_OVERHEAD_EVENT_RECEIVE
+ );
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) rtems_event_send( Task_id[ index ], RTEMS_EVENT_16 );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_event_send (readying)",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ CALLING_OVERHEAD_EVENT_SEND
+ );
+
+ exit( 0 );
+}
+
+rtems_task High_tasks(
+ rtems_task_argument argument
+)
+{
+ rtems_status_code status;
+
+ if ( time_set )
+ status = rtems_event_receive(
+ RTEMS_EVENT_16,
+ RTEMS_DEFAULT_OPTIONS,
+ RTEMS_NO_TIMEOUT,
+ &eventout
+ );
+ else {
+ time_set = 1;
+ Timer_initialize(); /* start blocking rtems_event_receive time */
+ status = rtems_event_receive(
+ RTEMS_EVENT_16,
+ RTEMS_DEFAULT_OPTIONS,
+ RTEMS_NO_TIMEOUT,
+ &eventout
+ );
+ }
+}
diff --git a/testsuites/tmtests/tm15/tm15.doc b/testsuites/tmtests/tm15/tm15.doc
new file mode 100644
index 0000000000..0de40191c6
--- /dev/null
+++ b/testsuites/tmtests/tm15/tm15.doc
@@ -0,0 +1,13 @@
+#
+# $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.
+#
+
+
diff --git a/testsuites/tmtests/tm16/system.h b/testsuites/tmtests/tm16/system.h
new file mode 100644
index 0000000000..9133506e7f
--- /dev/null
+++ b/testsuites/tmtests/tm16/system.h
@@ -0,0 +1,23 @@
+/* system.h
+ *
+ * This include file is used by all tests in the Time Suite.
+ *
+ * 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 "coverhd.h"
+#include "tmacros.h"
+
+#include "timesys.h"
+#include "timegvar.h"
diff --git a/testsuites/tmtests/tm16/task1.c b/testsuites/tmtests/tm16/task1.c
new file mode 100644
index 0000000000..a837c72014
--- /dev/null
+++ b/testsuites/tmtests/tm16/task1.c
@@ -0,0 +1,148 @@
+/*
+ *
+ * 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_unsigned32 Task_count;
+
+rtems_task test_init(
+ rtems_task_argument argument
+);
+
+rtems_task Middle_tasks(
+ rtems_task_argument argument
+);
+
+rtems_task High_task(
+ rtems_task_argument argument
+);
+
+rtems_task Init(
+ rtems_task_argument argument
+)
+{
+ rtems_id id;
+ rtems_status_code status;
+
+ puts( "\n\n*** TIME TEST 16 ***" );
+
+ status = rtems_task_create(
+ rtems_build_name( 'T', 'E', 'S', 'T' ),
+ 251,
+ 2048,
+ RTEMS_DEFAULT_MODES,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &id
+ );
+ directive_failed( status, "rtems_task_create of test_init" );
+
+ status = rtems_task_start( id, test_init, 0 );
+ directive_failed( status, "rtems_task_start of test_init" );
+
+ status = rtems_task_delete( RTEMS_SELF );
+ directive_failed( status, "rtems_task_delete of RTEMS_SELF" );
+}
+
+rtems_task test_init(
+ rtems_task_argument argument
+)
+{
+ rtems_task_priority priority;
+ rtems_status_code status;
+ rtems_unsigned32 index;
+ rtems_task_entry task_entry;
+
+/* As each task is started, it preempts this task and
+ * performs a blocking rtems_event_receive. Upon completion of
+ * this loop all created tasks are blocked.
+ */
+
+ priority = 250;
+
+ for( index = 0 ; index <= OPERATION_COUNT ; index++ ) {
+ status = rtems_task_create(
+ rtems_build_name( 'M', 'I', 'D', ' ' ),
+ priority,
+ 1024,
+ RTEMS_DEFAULT_MODES,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &Task_id[ index ]
+ );
+ directive_failed( status, "rtems_task_create LOOP" );
+
+ if ( index == OPERATION_COUNT ) task_entry = High_task;
+ else task_entry = Middle_tasks;
+
+ status = rtems_task_start( Task_id[ index ], task_entry, 0 );
+ directive_failed( status, "rtems_task_start LOOP" );
+
+ priority--;
+ }
+
+ Task_count = 0;
+
+ Timer_initialize();
+ (void) rtems_event_send( Task_id[ Task_count ], RTEMS_EVENT_16 );
+ /* preempts task */
+}
+
+rtems_task Middle_tasks(
+ rtems_task_argument argument
+)
+{
+ rtems_event_set event_out;
+
+ (void) rtems_event_receive( /* task blocks */
+ RTEMS_EVENT_16,
+ RTEMS_DEFAULT_OPTIONS,
+ RTEMS_NO_TIMEOUT,
+ &event_out
+ );
+
+ Task_count++;
+
+ (void) rtems_event_send( /* preempts task */
+ Task_id[ Task_count ],
+ RTEMS_EVENT_16
+ );
+}
+
+rtems_task High_task(
+ rtems_task_argument argument
+)
+{
+ rtems_event_set event_out;
+
+ (void) rtems_event_receive( /* task blocks */
+ RTEMS_EVENT_16,
+ RTEMS_DEFAULT_OPTIONS,
+ RTEMS_NO_TIMEOUT,
+ &event_out
+ );
+
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_event_send (preemptive)",
+ end_time,
+ OPERATION_COUNT,
+ 0,
+ CALLING_OVERHEAD_EVENT_SEND
+ );
+
+ exit( 0 );
+}
diff --git a/testsuites/tmtests/tm16/tm16.doc b/testsuites/tmtests/tm16/tm16.doc
new file mode 100644
index 0000000000..0de40191c6
--- /dev/null
+++ b/testsuites/tmtests/tm16/tm16.doc
@@ -0,0 +1,13 @@
+#
+# $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.
+#
+
+
diff --git a/testsuites/tmtests/tm17/system.h b/testsuites/tmtests/tm17/system.h
new file mode 100644
index 0000000000..9133506e7f
--- /dev/null
+++ b/testsuites/tmtests/tm17/system.h
@@ -0,0 +1,23 @@
+/* system.h
+ *
+ * This include file is used by all tests in the Time Suite.
+ *
+ * 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 "coverhd.h"
+#include "tmacros.h"
+
+#include "timesys.h"
+#include "timegvar.h"
diff --git a/testsuites/tmtests/tm17/task1.c b/testsuites/tmtests/tm17/task1.c
new file mode 100644
index 0000000000..fbf658799b
--- /dev/null
+++ b/testsuites/tmtests/tm17/task1.c
@@ -0,0 +1,127 @@
+/*
+ *
+ * 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_unsigned32 Task_count;
+rtems_task_priority Task_priority;
+
+rtems_task First_task(
+ rtems_task_argument argument
+);
+
+rtems_task Middle_tasks(
+ rtems_task_argument argument
+);
+
+rtems_task Last_task(
+ rtems_task_argument argument
+);
+
+rtems_task Init(
+ rtems_task_argument argument
+)
+{
+ rtems_task_entry task_entry;
+ rtems_unsigned32 index;
+ rtems_status_code status;
+
+ puts( "\n\n*** TIME TEST 17 ***" );
+
+ Task_priority = 254;
+
+ for( index = 0; index <= OPERATION_COUNT ; index++ ) {
+ status = rtems_task_create(
+ rtems_build_name( 'T', 'I', 'M', 'E' ),
+ Task_priority,
+ 1024,
+ RTEMS_DEFAULT_MODES,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &Task_id[ index ]
+ );
+ directive_failed( status, "rtems_task_create loop" );
+
+ if ( index == OPERATION_COUNT ) task_entry = Last_task;
+ else if ( index == 0 ) task_entry = First_task;
+ else task_entry = Middle_tasks;
+
+ status = rtems_task_start( Task_id[ index ], task_entry, 0 );
+ directive_failed( status, "rtems_task_start loop" );
+ }
+
+ Task_count = 1;
+ status = rtems_task_delete( RTEMS_SELF );
+ directive_failed( status, "rtems_task_delete of RTEMS_SELF" );
+}
+
+rtems_task First_task(
+ rtems_task_argument argument
+)
+{
+ rtems_task_priority previous_priority;
+
+ Timer_initialize();
+
+ Task_priority--;
+ Task_count++;
+
+ (void) rtems_task_set_priority(
+ Task_id[ Task_count ],
+ Task_priority,
+ &previous_priority
+ );
+}
+
+rtems_task Middle_tasks(
+ rtems_task_argument argument
+)
+{
+ rtems_task_priority previous_priority;
+
+ Task_priority--;
+ Task_count++;
+
+ (void) rtems_task_set_priority(
+ Task_id[ Task_count ],
+ Task_priority,
+ &previous_priority
+ );
+}
+
+rtems_task Last_task(
+ rtems_task_argument argument
+)
+{
+ rtems_unsigned32 index;
+
+ end_time = Read_timer();
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) Empty_function();
+ overhead = Read_timer();
+
+ put_time(
+ "rtems_task_set_priority (preemptive)",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ CALLING_OVERHEAD_TASK_SET_PRIORITY
+ );
+
+ exit( 0 );
+}
diff --git a/testsuites/tmtests/tm17/tm17.doc b/testsuites/tmtests/tm17/tm17.doc
new file mode 100644
index 0000000000..0de40191c6
--- /dev/null
+++ b/testsuites/tmtests/tm17/tm17.doc
@@ -0,0 +1,13 @@
+#
+# $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.
+#
+
+
diff --git a/testsuites/tmtests/tm18/system.h b/testsuites/tmtests/tm18/system.h
new file mode 100644
index 0000000000..9133506e7f
--- /dev/null
+++ b/testsuites/tmtests/tm18/system.h
@@ -0,0 +1,23 @@
+/* system.h
+ *
+ * This include file is used by all tests in the Time Suite.
+ *
+ * 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 "coverhd.h"
+#include "tmacros.h"
+
+#include "timesys.h"
+#include "timegvar.h"
diff --git a/testsuites/tmtests/tm18/task1.c b/testsuites/tmtests/tm18/task1.c
new file mode 100644
index 0000000000..c5b529f988
--- /dev/null
+++ b/testsuites/tmtests/tm18/task1.c
@@ -0,0 +1,112 @@
+/*
+ *
+ * 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_unsigned32 taskcount;
+rtems_task_priority taskpri;
+
+rtems_task First_task(
+ rtems_task_argument argument
+);
+
+rtems_task Middle_tasks(
+ rtems_task_argument argument
+);
+
+rtems_task Last_task(
+ rtems_task_argument argument
+);
+
+
+void test_init();
+
+rtems_task Init(
+ rtems_task_argument argument
+)
+{
+ rtems_status_code status;
+
+ puts( "\n\n*** TIME TEST 18 ***" );
+
+ test_init();
+
+ status = rtems_task_delete( RTEMS_SELF );
+ directive_failed( status, "rtems_task_delete of RTEMS_SELF" );
+}
+
+void test_init()
+{
+ rtems_id id;
+ rtems_task_entry task_entry;
+ rtems_unsigned32 index;
+ rtems_status_code status;
+
+ for ( index = 0 ; index <= OPERATION_COUNT ; index++ ) {
+ status = rtems_task_create(
+ rtems_build_name( 'T', 'I', 'M', 'E' ),
+ 128,
+ 1024,
+ RTEMS_DEFAULT_MODES,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &id
+ );
+ directive_failed( status, "rtems_task_create loop" );
+
+ if ( index == OPERATION_COUNT ) task_entry = Last_task;
+ else if ( index == 0 ) task_entry = First_task;
+ else task_entry = Middle_tasks;
+
+
+ status = rtems_task_start( id, task_entry, 0 );
+ directive_failed( status, "rtems_task_start loop" );
+ }
+
+}
+
+rtems_task First_task(
+ rtems_task_argument argument
+)
+{
+ Timer_initialize();
+
+ (void) rtems_task_delete( RTEMS_SELF );
+}
+
+rtems_task Middle_tasks(
+ rtems_task_argument argument
+)
+{
+ (void) rtems_task_delete( RTEMS_SELF );
+}
+
+rtems_task Last_task(
+ rtems_task_argument argument
+)
+{
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_task_delete self",
+ end_time,
+ OPERATION_COUNT,
+ 0,
+ CALLING_OVERHEAD_TASK_DELETE
+ );
+
+ exit( 0 );
+}
diff --git a/testsuites/tmtests/tm18/tm18.doc b/testsuites/tmtests/tm18/tm18.doc
new file mode 100644
index 0000000000..0de40191c6
--- /dev/null
+++ b/testsuites/tmtests/tm18/tm18.doc
@@ -0,0 +1,13 @@
+#
+# $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.
+#
+
+
diff --git a/testsuites/tmtests/tm19/system.h b/testsuites/tmtests/tm19/system.h
new file mode 100644
index 0000000000..9133506e7f
--- /dev/null
+++ b/testsuites/tmtests/tm19/system.h
@@ -0,0 +1,23 @@
+/* system.h
+ *
+ * This include file is used by all tests in the Time Suite.
+ *
+ * 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 "coverhd.h"
+#include "tmacros.h"
+
+#include "timesys.h"
+#include "timegvar.h"
diff --git a/testsuites/tmtests/tm19/task1.c b/testsuites/tmtests/tm19/task1.c
new file mode 100644
index 0000000000..7c491b7572
--- /dev/null
+++ b/testsuites/tmtests/tm19/task1.c
@@ -0,0 +1,212 @@
+/*
+ *
+ * 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_asr Process_asr_for_pass_1(
+ rtems_signal_set signals
+);
+
+rtems_asr Process_asr_for_pass_2(
+ rtems_signal_set signals
+);
+
+rtems_task Task_1(
+ rtems_task_argument argument
+);
+
+rtems_task Task_2(
+ rtems_task_argument argument
+);
+
+rtems_task Task_3(
+ rtems_task_argument argument
+);
+
+rtems_task Init(
+ rtems_task_argument argument
+)
+{
+ rtems_status_code status;
+
+ puts( "\n\n*** TIME TEST 19 ***" );
+
+ status = rtems_task_create(
+ rtems_build_name( 'T', 'I', 'M', 'E' ),
+ 128,
+ 1024,
+ RTEMS_DEFAULT_MODES,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &Task_id[ 1 ]
+ );
+ directive_failed( status, "rtems_task_create of TASK1" );
+
+ status = rtems_task_start( Task_id[ 1 ], Task_1, 0 );
+ directive_failed( status, "rtems_task_start of TASK1" );
+
+ status = rtems_task_create(
+ rtems_build_name( 'T', 'I', 'M', 'E' ),
+ 127,
+ 1024,
+ RTEMS_DEFAULT_MODES,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &Task_id[ 2 ]
+ );
+ directive_failed( status, "rtems_task_create of TASK2" );
+
+ status = rtems_task_start( Task_id[ 2 ], Task_2, 0 );
+ directive_failed( status, "rtems_task_start of TASK2" );
+
+ status = rtems_task_create(
+ rtems_build_name( 'T', 'I', 'M', 'E' ),
+ 126,
+ 1024,
+ RTEMS_DEFAULT_MODES,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &Task_id[ 3 ]
+ );
+ directive_failed( status, "rtems_task_create of TASK3" );
+
+ status = rtems_task_start( Task_id[ 3 ], Task_3, 0 );
+ directive_failed( status, "rtems_task_start of TASK3" );
+
+ status = rtems_task_delete( RTEMS_SELF );
+ directive_failed( status, "rtems_task_delete of RTEMS_SELF" );
+}
+
+rtems_asr Process_asr_for_pass_1(
+ rtems_signal_set signals
+)
+{
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_signal_send (self)",
+ end_time,
+ 1,
+ 0,
+ CALLING_OVERHEAD_SIGNAL_SEND
+ );
+
+ puts( "SIGNAL_ENTER (non-preemptive) na" );
+
+ Timer_initialize();
+}
+
+rtems_asr Process_asr_for_pass_2(
+ rtems_signal_set signals
+)
+{
+ rtems_status_code status;
+
+ puts( "SIGNAL_ENTER (preemptive) na" );
+
+ status = rtems_task_resume( Task_id[ 3 ] );
+ directive_failed( status, "rtems_task_resume" );
+
+ Timer_initialize();
+}
+
+rtems_task Task_1(
+ rtems_task_argument argument
+)
+{
+ rtems_status_code status;
+
+ Timer_initialize();
+ (void) rtems_signal_catch( Process_asr_for_pass_1, RTEMS_DEFAULT_MODES );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_signal_catch",
+ end_time,
+ 1,
+ 0,
+ CALLING_OVERHEAD_SIGNAL_CATCH
+ );
+
+ Timer_initialize();
+ rtems_signal_send( Task_id[ 2 ], 1 );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_signal_send (non-preemptive)",
+ end_time,
+ 1,
+ 0,
+ CALLING_OVERHEAD_SIGNAL_SEND
+ );
+
+ Timer_initialize();
+ (void) rtems_signal_send( RTEMS_SELF, RTEMS_SIGNAL_1 );
+
+ /* end time is done is RTEMS_ASR */
+
+ end_time = Read_timer();
+
+ put_time(
+ "SIGNAL_RETURN (non-preemptive)",
+ end_time,
+ 1,
+ 0,
+ 0
+ );
+
+ status = rtems_signal_catch( Process_asr_for_pass_2, RTEMS_NO_PREEMPT );
+ directive_failed( status, "rtems_signal_catch" );
+
+ Timer_initialize();
+ (void) rtems_signal_send( RTEMS_SELF, RTEMS_SIGNAL_1 );
+}
+
+rtems_asr Process_asr_for_task_2(
+ rtems_signal_set signals
+)
+{
+ ;
+}
+
+rtems_task Task_2(
+ rtems_task_argument argument
+)
+{
+ rtems_status_code status;
+
+ status = rtems_signal_catch( Process_asr_for_task_2, RTEMS_DEFAULT_MODES );
+ directive_failed( status, "rtems_signal_catch" );
+
+ (void) rtems_task_suspend( RTEMS_SELF );
+}
+
+rtems_task Task_3(
+ rtems_task_argument argument
+)
+{
+ (void) rtems_task_suspend( RTEMS_SELF );
+
+ end_time = Read_timer();
+
+ put_time(
+ "SIGNAL_RETURN (preemptive)",
+ end_time,
+ 1,
+ 0,
+ 0
+ );
+
+ exit( 0 );
+}
diff --git a/testsuites/tmtests/tm19/tm19.doc b/testsuites/tmtests/tm19/tm19.doc
new file mode 100644
index 0000000000..0de40191c6
--- /dev/null
+++ b/testsuites/tmtests/tm19/tm19.doc
@@ -0,0 +1,13 @@
+#
+# $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.
+#
+
+
diff --git a/testsuites/tmtests/tm20/system.h b/testsuites/tmtests/tm20/system.h
new file mode 100644
index 0000000000..9133506e7f
--- /dev/null
+++ b/testsuites/tmtests/tm20/system.h
@@ -0,0 +1,23 @@
+/* system.h
+ *
+ * This include file is used by all tests in the Time Suite.
+ *
+ * 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 "coverhd.h"
+#include "tmacros.h"
+
+#include "timesys.h"
+#include "timegvar.h"
diff --git a/testsuites/tmtests/tm20/task1.c b/testsuites/tmtests/tm20/task1.c
new file mode 100644
index 0000000000..6cfcb3d0c1
--- /dev/null
+++ b/testsuites/tmtests/tm20/task1.c
@@ -0,0 +1,467 @@
+/*
+ *
+ * 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_device_major_number _STUB_major = 0;
+
+rtems_id Region_id;
+rtems_name Region_name;
+rtems_unsigned8 Region_area[ 2048 ] CPU_STRUCTURE_ALIGNMENT;
+
+rtems_id Partition_id;
+rtems_name Partition_name;
+rtems_unsigned8 Partition_area[ 2048 ] CPU_STRUCTURE_ALIGNMENT;
+
+void *Buffer_address_1;
+void *Buffer_address_2;
+void *Buffer_address_3;
+void *Buffer_address_4;
+
+rtems_unsigned32 buffer_count;
+
+void *Buffer_addresses[ OPERATION_COUNT+1 ];
+
+rtems_task Task_1(
+ rtems_task_argument argument
+);
+
+rtems_task Task_2(
+ rtems_task_argument argument
+);
+
+rtems_task Init(
+ rtems_task_argument argument
+)
+{
+ rtems_status_code status;
+
+ puts( "\n\n*** TIME TEST 20 ***" );
+
+ status = rtems_task_create(
+ rtems_build_name( 'T', 'I', 'M', '1' ),
+ 128,
+ 2048,
+ RTEMS_DEFAULT_MODES,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &Task_id[ 1 ]
+ );
+ directive_failed( status, "rtems_task_create of TASK1" );
+
+ status = rtems_task_start( Task_id[ 1 ], Task_1, 0 );
+ directive_failed( status, "rtems_task_start of TASK1" );
+
+ status = rtems_task_create(
+ rtems_build_name( 'T', 'I', 'M', '2' ),
+ 129,
+ 2048,
+ RTEMS_DEFAULT_MODES,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &Task_id[ 2 ]
+ );
+ directive_failed( status, "rtems_task_create of TASK2" );
+
+ status = rtems_task_start( Task_id[ 2 ], Task_2, 0 );
+ directive_failed( status, "rtems_task_start of TASK2" );
+
+ status = rtems_task_delete( RTEMS_SELF );
+ directive_failed( status, "rtems_task_delete of RTEMS_SELF" );
+}
+
+rtems_task Task_1(
+ rtems_task_argument argument
+)
+{
+ rtems_unsigned32 index;
+ rtems_mode previous_mode;
+ rtems_task_priority previous_priority;
+ rtems_unsigned32 return_value;
+ rtems_status_code status;
+
+ Partition_name = rtems_build_name( 'P', 'A', 'R', 'T' );
+
+ Timer_initialize();
+ rtems_partition_create(
+ Partition_name,
+ Partition_area,
+ 2048,
+ 128,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &Partition_id
+ );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_partition_create",
+ end_time,
+ 1,
+ 0,
+ CALLING_OVERHEAD_PARTITION_CREATE
+ );
+
+ Region_name = rtems_build_name( 'R', 'E', 'G', 'N' );
+
+ Timer_initialize();
+ rtems_region_create(
+ Region_name,
+ Region_area,
+ 2048,
+ 16,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &Region_id
+ );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_region_create",
+ end_time,
+ 1,
+ 0,
+ CALLING_OVERHEAD_REGION_CREATE
+ );
+
+ Timer_initialize();
+ (void) rtems_partition_get_buffer( Partition_id, &Buffer_address_1 );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_partition_get_buffer (available)",
+ end_time,
+ 1,
+ 0,
+ CALLING_OVERHEAD_PARTITION_GET_BUFFER
+ );
+
+ buffer_count = 0;
+ while ( FOREVER ) {
+
+ status = rtems_partition_get_buffer(
+ Partition_id,
+ &Buffer_addresses[ buffer_count ]
+ );
+
+ if ( status == RTEMS_UNSATISFIED ) break;
+
+ buffer_count++;
+ }
+
+ Timer_initialize();
+ (void) rtems_partition_get_buffer( Partition_id, &Buffer_address_2 );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_partition_get_buffer (not available)",
+ end_time,
+ 1,
+ 0,
+ CALLING_OVERHEAD_PARTITION_GET_BUFFER
+ );
+
+ Timer_initialize();
+ (void) rtems_partition_return_buffer( Partition_id, Buffer_address_1 );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_partition_return_buffer",
+ end_time,
+ 1,
+ 0,
+ CALLING_OVERHEAD_PARTITION_RETURN_BUFFER
+ );
+
+ for ( index = 0 ; index < buffer_count ; index++ ) {
+
+ status = rtems_partition_return_buffer(
+ Partition_id,
+ Buffer_addresses[ index ]
+ );
+ directive_failed( status, "rtems_partition_return_buffer" );
+
+ }
+
+ Timer_initialize();
+ (void) rtems_partition_delete( Partition_id );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_partition_delete",
+ end_time,
+ 1,
+ 0,
+ CALLING_OVERHEAD_PARTITION_DELETE
+ );
+
+ status = rtems_region_get_segment(
+ Region_id,
+ 400,
+ RTEMS_DEFAULT_OPTIONS,
+ RTEMS_NO_TIMEOUT,
+ &Buffer_address_2
+ );
+ directive_failed( status, "region_get_semgent" );
+
+ Timer_initialize();
+ (void) rtems_region_get_segment(
+ Region_id,
+ 400,
+ RTEMS_DEFAULT_OPTIONS,
+ RTEMS_NO_TIMEOUT,
+ &Buffer_address_3
+ );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_region_get_segment (available)",
+ end_time,
+ 1,
+ 0,
+ CALLING_OVERHEAD_REGION_GET_SEGMENT
+ );
+
+ Timer_initialize();
+ (void) rtems_region_get_segment(
+ Region_id,
+ 1998,
+ RTEMS_NO_WAIT,
+ RTEMS_NO_TIMEOUT,
+ &Buffer_address_4
+ );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_region_get_segment (RTEMS_NO_WAIT)",
+ end_time,
+ 1,
+ 0,
+ CALLING_OVERHEAD_REGION_GET_SEGMENT
+ );
+
+ status = rtems_region_return_segment( Region_id, Buffer_address_3 );
+ directive_failed( status, "rtems_region_return_segment" );
+
+ Timer_initialize();
+ (void) rtems_region_return_segment( Region_id, Buffer_address_2 );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_region_return_segment (no tasks waiting)",
+ end_time,
+ 1,
+ 0,
+ CALLING_OVERHEAD_REGION_RETURN_SEGMENT
+ );
+
+ status = rtems_region_get_segment(
+ Region_id,
+ 400,
+ RTEMS_DEFAULT_OPTIONS,
+ RTEMS_NO_TIMEOUT,
+ &Buffer_address_1
+ );
+ directive_failed( status, "rtems_region_get_segment" );
+
+ Timer_initialize();
+ (void) rtems_region_get_segment(
+ Region_id,
+ 1998,
+ RTEMS_DEFAULT_OPTIONS,
+ RTEMS_NO_TIMEOUT,
+ &Buffer_address_2
+ );
+
+ /* execute Task_2 */
+
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_region_return_segment (preempt)",
+ end_time,
+ 1,
+ 0,
+ CALLING_OVERHEAD_REGION_RETURN_SEGMENT
+ );
+
+ status = rtems_region_return_segment( Region_id, Buffer_address_2 );
+ directive_failed( status, "rtems_region_return_segment" );
+
+ status = rtems_task_mode(
+ RTEMS_NO_PREEMPT,
+ RTEMS_PREEMPT_MASK,
+ &previous_mode
+ );
+ directive_failed( status, "rtems_task_mode" );
+
+ status = rtems_task_set_priority( RTEMS_SELF, 254, &previous_priority );
+ directive_failed( status, "rtems_task_set_priority" );
+
+ status = rtems_region_get_segment(
+ Region_id,
+ 400,
+ RTEMS_DEFAULT_OPTIONS,
+ RTEMS_NO_TIMEOUT,
+ &Buffer_address_1
+ );
+ directive_failed( status, "rtems_region_return_segment" );
+
+ status = rtems_region_get_segment(
+ Region_id,
+ 1998,
+ RTEMS_DEFAULT_OPTIONS,
+ RTEMS_NO_TIMEOUT,
+ &Buffer_address_2
+ );
+ directive_failed( status, "rtems_region_get_segment" );
+
+ /* execute Task_2 */
+
+ status = rtems_region_return_segment( Region_id, Buffer_address_2 );
+ directive_failed( status, "rtems_region_return_segment" );
+
+ Timer_initialize();
+ (void) rtems_region_delete( Region_id );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_region_delete",
+ end_time,
+ 1,
+ 0,
+ CALLING_OVERHEAD_REGION_DELETE
+ );
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) Empty_function();
+ overhead = Read_timer();
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) rtems_io_initialize( 0, 0, NULL, &return_value );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_io_initialize",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ CALLING_OVERHEAD_IO_INITIALIZE
+ );
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) rtems_io_open( 0, 0, NULL, &return_value );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_io_open",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ CALLING_OVERHEAD_IO_OPEN
+ );
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) rtems_io_close( 0, 0, NULL, &return_value );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_io_close",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ CALLING_OVERHEAD_IO_CLOSE
+ );
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) rtems_io_read( 0, 0, NULL, &return_value );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_io_read",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ CALLING_OVERHEAD_IO_READ
+ );
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) rtems_io_write( 0, 0, NULL, &return_value );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_io_write",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ CALLING_OVERHEAD_IO_WRITE
+ );
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) rtems_io_control( 0, 0, NULL, &return_value );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_io_control",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ CALLING_OVERHEAD_IO_CONTROL
+ );
+
+ exit( 0 );
+}
+
+rtems_task Task_2(
+ rtems_task_argument argument
+)
+{
+ rtems_status_code status;
+
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_region_get_segment (blocking)",
+ end_time,
+ 1,
+ 0,
+ CALLING_OVERHEAD_REGION_GET_SEGMENT
+ );
+
+ Timer_initialize();
+ (void) rtems_region_return_segment( Region_id, Buffer_address_1 );
+
+ /* preempt back to Task_1 */
+
+ Timer_initialize();
+ (void) rtems_region_return_segment( Region_id, Buffer_address_1 );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_region_return_segment (ready -- return)",
+ end_time,
+ 1,
+ 0,
+ CALLING_OVERHEAD_REGION_RETURN_SEGMENT
+ );
+
+ status = rtems_task_delete( RTEMS_SELF );
+ directive_failed( status, "rtems_task_delete of RTEMS_SELF" );
+}
diff --git a/testsuites/tmtests/tm20/tm20.doc b/testsuites/tmtests/tm20/tm20.doc
new file mode 100644
index 0000000000..0de40191c6
--- /dev/null
+++ b/testsuites/tmtests/tm20/tm20.doc
@@ -0,0 +1,13 @@
+#
+# $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.
+#
+
+
diff --git a/testsuites/tmtests/tm21/system.h b/testsuites/tmtests/tm21/system.h
new file mode 100644
index 0000000000..9133506e7f
--- /dev/null
+++ b/testsuites/tmtests/tm21/system.h
@@ -0,0 +1,23 @@
+/* system.h
+ *
+ * This include file is used by all tests in the Time Suite.
+ *
+ * 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 "coverhd.h"
+#include "tmacros.h"
+
+#include "timesys.h"
+#include "timegvar.h"
diff --git a/testsuites/tmtests/tm21/task1.c b/testsuites/tmtests/tm21/task1.c
new file mode 100644
index 0000000000..0f31e08485
--- /dev/null
+++ b/testsuites/tmtests/tm21/task1.c
@@ -0,0 +1,234 @@
+/*
+ *
+ * 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_unsigned8 Region_area[ 2048 ] CPU_STRUCTURE_ALIGNMENT;
+rtems_unsigned8 Partition_area[ 2048 ] CPU_STRUCTURE_ALIGNMENT;
+
+rtems_task Task_1(
+ rtems_task_argument argument
+);
+
+rtems_task Init(
+ rtems_task_argument argument
+)
+{
+ rtems_id id;
+ rtems_status_code status;
+
+ puts( "\n\n*** TIME TEST 21 ***" );
+
+ status = rtems_task_create(
+ rtems_build_name( 'T', 'I', 'M', 'E' ),
+ 250,
+ 1024,
+ RTEMS_DEFAULT_MODES,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &id
+ );
+ directive_failed( status, "rtems_task_create of TASK1" );
+
+ status = rtems_task_start( id, Task_1, 0 );
+ directive_failed( status, "rtems_task_start of TASK1" );
+
+ status = rtems_task_delete( RTEMS_SELF );
+ directive_failed( status, "rtems_task_delete of RTEMS_SELF" );
+}
+
+rtems_task Task_1(
+ rtems_task_argument argument
+)
+{
+ rtems_unsigned32 index;
+ rtems_id id;
+ rtems_status_code status;
+
+ for( index = 1 ; index <= OPERATION_COUNT ; index++ ) {
+ status = rtems_task_create (
+ index,
+ 254,
+ 1024,
+ RTEMS_DEFAULT_MODES,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &id
+ );
+ directive_failed( status, "rtems_task_create" );
+
+ status = rtems_message_queue_create(
+ index,
+ OPERATION_COUNT,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &id
+ );
+ directive_failed( status, "rtems_message_queue_create" );
+
+ status = rtems_semaphore_create(
+ index,
+ OPERATION_COUNT,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &id
+ );
+ directive_failed( status, "rtems_semaphore_create" );
+
+ status = rtems_region_create(
+ index,
+ Region_area,
+ 2048,
+ 16,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &id
+ );
+ directive_failed( status, "rtems_region_create" );
+
+ status = rtems_partition_create(
+ index,
+ Partition_area,
+ 2048,
+ 128,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &id
+ );
+ directive_failed( status, "rtems_partition_create" );
+
+ status = rtems_port_create(
+ index,
+ Partition_area,
+ Region_area,
+ 0xff,
+ &id
+ );
+ directive_failed( status, "rtems_port_create" );
+
+ status = rtems_timer_create( index, &id );
+ directive_failed( status, "rtems_timer_create" );
+
+ status = rtems_rate_monotonic_create( index, &id );
+ directive_failed( status, "rtems_rate_monotonic_create" );
+ }
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) Empty_function();
+ overhead = Read_timer();
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) rtems_task_ident( index, RTEMS_SEARCH_ALL_NODES, &id );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_task_ident",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ CALLING_OVERHEAD_TASK_IDENT
+ );
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) rtems_message_queue_ident( index, RTEMS_SEARCH_ALL_NODES, &id );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_message_queue_ident",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ CALLING_OVERHEAD_MESSAGE_QUEUE_IDENT
+ );
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) rtems_semaphore_ident( index, RTEMS_SEARCH_ALL_NODES, &id );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_semaphore_ident",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ CALLING_OVERHEAD_SEMAPHORE_IDENT
+ );
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) rtems_partition_ident( index, RTEMS_SEARCH_ALL_NODES, &id );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_partition_ident",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ CALLING_OVERHEAD_PARTITION_IDENT
+ );
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) rtems_region_ident( index, &id );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_region_ident",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ CALLING_OVERHEAD_REGION_IDENT
+ );
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) rtems_port_ident( index, &id );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_port_ident",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ CALLING_OVERHEAD_PORT_IDENT
+ );
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) rtems_timer_ident( index, &id );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_timer_ident",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ CALLING_OVERHEAD_TIMER_IDENT
+ );
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) rtems_rate_monotonic_ident( index, &id );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_rate_monotonic_ident",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ CALLING_OVERHEAD_RATE_MONOTONIC_IDENT
+ );
+
+ exit( 0 );
+}
diff --git a/testsuites/tmtests/tm21/tm21.doc b/testsuites/tmtests/tm21/tm21.doc
new file mode 100644
index 0000000000..0de40191c6
--- /dev/null
+++ b/testsuites/tmtests/tm21/tm21.doc
@@ -0,0 +1,13 @@
+#
+# $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.
+#
+
+
diff --git a/testsuites/tmtests/tm22/system.h b/testsuites/tmtests/tm22/system.h
new file mode 100644
index 0000000000..9133506e7f
--- /dev/null
+++ b/testsuites/tmtests/tm22/system.h
@@ -0,0 +1,23 @@
+/* system.h
+ *
+ * This include file is used by all tests in the Time Suite.
+ *
+ * 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 "coverhd.h"
+#include "tmacros.h"
+
+#include "timesys.h"
+#include "timegvar.h"
diff --git a/testsuites/tmtests/tm22/task1.c b/testsuites/tmtests/tm22/task1.c
new file mode 100644
index 0000000000..450466ea54
--- /dev/null
+++ b/testsuites/tmtests/tm22/task1.c
@@ -0,0 +1,193 @@
+/*
+ *
+ * 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_id Queue_id;
+
+long Buffer[4];
+
+rtems_task Low_task(
+ rtems_task_argument argument
+);
+
+rtems_task High_task(
+ rtems_task_argument argument
+);
+
+rtems_task Preempt_task(
+ rtems_task_argument argument
+);
+
+rtems_task Init(
+ rtems_task_argument argument
+)
+{
+ rtems_id id;
+ rtems_status_code status;
+
+ puts( "\n\n*** TIME TEST 22 ***" );
+
+ status = rtems_message_queue_create(
+ rtems_build_name( 'M', 'Q', '1', ' '),
+ 0,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &Queue_id
+ );
+ directive_failed( status, "rtems_message_queue_create" );
+
+ status = rtems_task_create(
+ rtems_build_name( 'L', 'O', 'W', ' ' ),
+ 10,
+ 2048,
+ RTEMS_NO_PREEMPT,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &id
+ );
+ directive_failed( status, "rtems_task_create" );
+
+ status = rtems_task_start( id, Low_task, 0 );
+ directive_failed( status, "rtems_task_start LOW" );
+
+ status = rtems_task_create(
+ 1,
+ 11,
+ 1024,
+ RTEMS_DEFAULT_MODES,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &id
+ );
+ directive_failed( status, "rtems_task_create RTEMS_PREEMPT" );
+
+ status = rtems_task_start( id, Preempt_task, 0 );
+ directive_failed( status, "rtems_task_start RTEMS_PREEMPT" );
+
+ status = rtems_task_delete( RTEMS_SELF );
+ directive_failed( status, "rtems_task_delete of RTEMS_SELF" );
+}
+
+rtems_task High_task(
+ rtems_task_argument argument
+)
+{
+ rtems_unsigned32 count;
+ rtems_status_code status;
+
+ Timer_initialize();
+ (void) rtems_message_queue_broadcast(
+ Queue_id,
+ (long (*)[4]) Buffer,
+ &count
+ );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_message_queue_broadcast (readying)",
+ end_time,
+ 1,
+ 0,
+ CALLING_OVERHEAD_MESSAGE_QUEUE_BROADCAST
+ );
+
+ status = rtems_task_suspend(RTEMS_SELF);
+ directive_failed( status, "rtems_task_suspend" );
+}
+
+rtems_task Low_task(
+ rtems_task_argument argument
+)
+{
+ rtems_id id;
+ rtems_unsigned32 index;
+ rtems_unsigned32 count;
+ rtems_status_code status;
+
+ status = rtems_task_create(
+ rtems_build_name( 'H', 'I', 'G', 'H' ),
+ 5,
+ 2048,
+ RTEMS_NO_PREEMPT,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &id
+ );
+ directive_failed( status, "rtems_task_create" );
+
+ status = rtems_task_start( id, High_task, 0 );
+ directive_failed( status, "rtems_task_start HIGH" );
+
+ status = rtems_message_queue_receive(
+ Queue_id,
+ (long (*)[4]) Buffer,
+ RTEMS_DEFAULT_OPTIONS,
+ RTEMS_NO_TIMEOUT
+ );
+ directive_failed( status, "message_queu_receive" );
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) rtems_message_queue_broadcast(
+ Queue_id,
+ (long (*)[4]) Buffer,
+ &count
+ );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_message_queue_broadcast (no waiting tasks)",
+ end_time,
+ OPERATION_COUNT,
+ 1,
+ CALLING_OVERHEAD_MESSAGE_QUEUE_BROADCAST
+ );
+
+ (void) rtems_message_queue_receive(
+ Queue_id,
+ (long (*)[4]) Buffer,
+ RTEMS_DEFAULT_OPTIONS,
+ RTEMS_NO_TIMEOUT
+ );
+
+ /* should go to Preempt_task here */
+
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_message_queue_broadcast (preempt)",
+ end_time,
+ 1,
+ 0,
+ CALLING_OVERHEAD_MESSAGE_QUEUE_BROADCAST
+ );
+
+ exit( 0 );
+}
+
+rtems_task Preempt_task(
+ rtems_task_argument argument
+)
+{
+ rtems_unsigned32 count;
+
+ Timer_initialize();
+ (void) rtems_message_queue_broadcast(
+ Queue_id,
+ (long (*)[4]) Buffer,
+ &count
+ );
+
+ /* should be preempted by low task */
+}
diff --git a/testsuites/tmtests/tm22/tm22.doc b/testsuites/tmtests/tm22/tm22.doc
new file mode 100644
index 0000000000..0de40191c6
--- /dev/null
+++ b/testsuites/tmtests/tm22/tm22.doc
@@ -0,0 +1,13 @@
+#
+# $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.
+#
+
+
diff --git a/testsuites/tmtests/tm23/system.h b/testsuites/tmtests/tm23/system.h
new file mode 100644
index 0000000000..9133506e7f
--- /dev/null
+++ b/testsuites/tmtests/tm23/system.h
@@ -0,0 +1,23 @@
+/* system.h
+ *
+ * This include file is used by all tests in the Time Suite.
+ *
+ * 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 "coverhd.h"
+#include "tmacros.h"
+
+#include "timesys.h"
+#include "timegvar.h"
diff --git a/testsuites/tmtests/tm23/task1.c b/testsuites/tmtests/tm23/task1.c
new file mode 100644
index 0000000000..8b3e6dbccc
--- /dev/null
+++ b/testsuites/tmtests/tm23/task1.c
@@ -0,0 +1,302 @@
+/*
+ *
+ * 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_id Timer_id[ OPERATION_COUNT+1 ];
+
+rtems_time_of_day time_of_day;
+
+void null_delay(
+ rtems_id ignored_id,
+ void *ignored_address
+);
+
+rtems_task Low_task(
+ rtems_task_argument argument
+);
+
+rtems_task Middle_tasks(
+ rtems_task_argument argument
+);
+
+rtems_task High_task(
+ rtems_task_argument argument
+);
+
+
+rtems_task Init(
+ rtems_task_argument argument
+)
+{
+
+ rtems_task_priority priority;
+ rtems_unsigned32 index;
+ rtems_id id;
+ rtems_task_entry task_entry;
+ rtems_status_code status;
+
+ puts( "\n\n*** TIME TEST 23 ***" );
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) Empty_function();
+ overhead = Read_timer();
+
+ priority = 5;
+
+ for( index=1 ; index <= OPERATION_COUNT ; index++ ) {
+ status = rtems_task_create(
+ rtems_build_name( 'T', 'I', 'M', 'E' ),
+ priority,
+ 1024,
+ RTEMS_DEFAULT_MODES,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &id
+ );
+ directive_failed( status, "rtems_task_create LOOP" );
+
+ if ( index == 1 ) task_entry = High_task;
+ else if ( index == OPERATION_COUNT ) task_entry = Low_task;
+ else task_entry = Middle_tasks;
+
+ status = rtems_task_start( id, task_entry, 0 );
+ directive_failed( status, "rtems_task_start LOOP" );
+
+ priority++;
+ }
+
+ status = rtems_task_delete( RTEMS_SELF );
+ directive_failed( status, "rtems_task_delete of RTEMS_SELF" );
+}
+
+void null_delay(
+ rtems_id ignored_id,
+ void *ignored_address
+)
+{
+}
+
+rtems_task High_task(
+ rtems_task_argument argument
+)
+{
+ rtems_unsigned32 index;
+ rtems_status_code status;
+ int i;
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) Empty_function();
+ overhead = Read_timer();
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) rtems_timer_create( index, &Timer_id[ index ] );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_timer_create",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ CALLING_OVERHEAD_TIMER_CREATE
+ );
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) rtems_timer_fire_after( Timer_id[ index ], 500, null_delay, NULL );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_timer_fire_after (inactive)",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ CALLING_OVERHEAD_TIMER_FIRE_AFTER
+ );
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) rtems_timer_fire_after( Timer_id[ index ], 500, null_delay, NULL );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_timer_fire_after (active)",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ CALLING_OVERHEAD_TIMER_FIRE_AFTER
+ );
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) rtems_timer_cancel( Timer_id[ index ] );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_timer_cancel (active)",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ CALLING_OVERHEAD_TIMER_CANCEL
+ );
+
+ for ( Timer_initialize(), i=0 ; i<OPERATION_COUNT ; i++ )
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) rtems_timer_cancel( Timer_id[ index ] );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_timer_cancel (inactive)",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ CALLING_OVERHEAD_TIMER_CANCEL
+ );
+
+ for ( Timer_initialize(), i=0 ; i<OPERATION_COUNT ; i++ )
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) rtems_timer_reset( Timer_id[ index ] );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_timer_reset (inactive)",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ CALLING_OVERHEAD_TIMER_RESET
+ );
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) rtems_timer_reset( Timer_id[ index ] );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_timer_reset (active)",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ CALLING_OVERHEAD_TIMER_RESET
+ );
+
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) rtems_timer_reset( Timer_id[ index ] );
+
+ build_time( &time_of_day, 12, 31, 1988, 9, 0, 0, 0 );
+
+ status = rtems_clock_set( &time_of_day );
+ directive_failed( status, "rtems_clock_set" );
+
+ time_of_day.year = 1989;
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) rtems_timer_fire_when(
+ Timer_id[ index ], &time_of_day, null_delay, NULL );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_timer_fire_when (inactive)",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ CALLING_OVERHEAD_TIMER_FIRE_WHEN
+ );
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) rtems_timer_fire_when(
+ Timer_id[ index ], &time_of_day, null_delay, NULL );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_timer_fire_when (active)",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ CALLING_OVERHEAD_TIMER_FIRE_WHEN
+ );
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) rtems_timer_delete( Timer_id[ index ] );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_timer_delete (active)",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ CALLING_OVERHEAD_TIMER_DELETE
+ );
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ ) {
+ status = rtems_timer_create( index, &Timer_id[ index ] );
+ directive_failed( status, "rtems_timer_create" );
+
+ status = rtems_timer_fire_after( Timer_id[ index ], 500, null_delay, NULL );
+ directive_failed( status, "rtems_timer_fire_after" );
+
+ status = rtems_timer_cancel( Timer_id[ index ] );
+ directive_failed( status, "rtems_timer_cancel" );
+ }
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) rtems_timer_delete( Timer_id[ index ] );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_timer_delete (inactive)",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ CALLING_OVERHEAD_TIMER_DELETE
+ );
+
+ Timer_initialize();
+ (void) rtems_task_wake_when( &time_of_day );
+}
+
+rtems_task Middle_tasks(
+ rtems_task_argument argument
+)
+{
+ (void) rtems_task_wake_when( &time_of_day );
+}
+
+rtems_task Low_task(
+ rtems_task_argument argument
+)
+{
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_task_wake_when",
+ end_time,
+ OPERATION_COUNT,
+ 0,
+ CALLING_OVERHEAD_TASK_WAKE_WHEN
+ );
+
+ exit( 0 );
+}
diff --git a/testsuites/tmtests/tm23/tm23.doc b/testsuites/tmtests/tm23/tm23.doc
new file mode 100644
index 0000000000..0de40191c6
--- /dev/null
+++ b/testsuites/tmtests/tm23/tm23.doc
@@ -0,0 +1,13 @@
+#
+# $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.
+#
+
+
diff --git a/testsuites/tmtests/tm24/system.h b/testsuites/tmtests/tm24/system.h
new file mode 100644
index 0000000000..9133506e7f
--- /dev/null
+++ b/testsuites/tmtests/tm24/system.h
@@ -0,0 +1,23 @@
+/* system.h
+ *
+ * This include file is used by all tests in the Time Suite.
+ *
+ * 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 "coverhd.h"
+#include "tmacros.h"
+
+#include "timesys.h"
+#include "timegvar.h"
diff --git a/testsuites/tmtests/tm24/task1.c b/testsuites/tmtests/tm24/task1.c
new file mode 100644
index 0000000000..160116ca16
--- /dev/null
+++ b/testsuites/tmtests/tm24/task1.c
@@ -0,0 +1,124 @@
+/*
+ *
+ * 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_unsigned32 Task_count;
+
+rtems_task Tasks(
+ rtems_task_argument argument
+);
+
+rtems_task High_task(
+ rtems_task_argument argument
+);
+
+rtems_task Init(
+ rtems_task_argument argument
+)
+{
+ rtems_id id;
+ rtems_unsigned32 index;
+ rtems_status_code status;
+
+ puts( "\n\n*** TIME TEST 24 ***" );
+
+ status = rtems_task_create(
+ rtems_build_name( 'H', 'I', 'G', 'H' ),
+ 10,
+ 1024,
+ RTEMS_DEFAULT_MODES,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &id
+ );
+ directive_failed( status, "rtems_task_create HIGH" );
+
+ status = rtems_task_start( id, High_task, 0 );
+ directive_failed( status, "rtems_task_create HIGH" );
+
+ for ( index = 1 ; index <= OPERATION_COUNT ; index++ ) {
+ status = rtems_task_create(
+ rtems_build_name( 'R', 'E', 'S', 'T' ),
+ 128,
+ 1024,
+ RTEMS_DEFAULT_MODES,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &id
+ );
+ directive_failed( status, "rtems_task_create LOOP" );
+
+ status = rtems_task_start( id, Tasks, 0 );
+ directive_failed( status, "rtems_task_start LOOP" );
+ }
+ status = rtems_task_delete( RTEMS_SELF );
+ directive_failed( status, "rtems_task_delete of RTEMS_SELF" );
+}
+
+rtems_task High_task(
+ rtems_task_argument argument
+)
+{
+ rtems_status_code status;
+ rtems_unsigned32 index;
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) Empty_function();
+ overhead = Read_timer();
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) rtems_task_wake_after( RTEMS_YIELD_PROCESSOR );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_task_wake_after (no context switch)",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ CALLING_OVERHEAD_TASK_WAKE_AFTER
+ );
+
+ Task_count = 0;
+
+ status = rtems_task_delete( RTEMS_SELF );
+ directive_failed( status, "rtems_task_delete of RTEMS_SELF" );
+}
+
+rtems_task Tasks(
+ rtems_task_argument argument
+)
+{
+ Task_count++;
+
+ if ( Task_count == 1 )
+ Timer_initialize();
+ else if ( Task_count == OPERATION_COUNT ) {
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_task_wake_after (context switch)",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ CALLING_OVERHEAD_TASK_WAKE_AFTER
+ );
+
+ exit( 0 );
+ }
+ (void) rtems_task_wake_after( RTEMS_YIELD_PROCESSOR );
+}
diff --git a/testsuites/tmtests/tm24/tm24.doc b/testsuites/tmtests/tm24/tm24.doc
new file mode 100644
index 0000000000..0de40191c6
--- /dev/null
+++ b/testsuites/tmtests/tm24/tm24.doc
@@ -0,0 +1,13 @@
+#
+# $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.
+#
+
+
diff --git a/testsuites/tmtests/tm25/system.h b/testsuites/tmtests/tm25/system.h
new file mode 100644
index 0000000000..9133506e7f
--- /dev/null
+++ b/testsuites/tmtests/tm25/system.h
@@ -0,0 +1,23 @@
+/* system.h
+ *
+ * This include file is used by all tests in the Time Suite.
+ *
+ * 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 "coverhd.h"
+#include "tmacros.h"
+
+#include "timesys.h"
+#include "timegvar.h"
diff --git a/testsuites/tmtests/tm25/task1.c b/testsuites/tmtests/tm25/task1.c
new file mode 100644
index 0000000000..1959b668e3
--- /dev/null
+++ b/testsuites/tmtests/tm25/task1.c
@@ -0,0 +1,108 @@
+/*
+ *
+ * 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_id Semaphore_id;
+
+rtems_task High_tasks(
+ rtems_task_argument argument
+);
+
+rtems_task Low_task(
+ rtems_task_argument argument
+);
+
+rtems_task Init(
+ rtems_task_argument argument
+)
+{
+ rtems_id task_id;
+ rtems_unsigned32 index;
+ rtems_status_code status;
+
+ puts( "\n\n*** TIME TEST 25 ***" );
+
+ status = rtems_semaphore_create(
+ rtems_build_name( 'S', 'M', '1', ' ') ,
+ 0,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &Semaphore_id
+ );
+ directive_failed( status, "rtems_semaphore_create of SM1" );
+
+ status = rtems_task_create(
+ rtems_build_name( 'L', 'O', 'W', ' ' ),
+ 254,
+ 1024,
+ RTEMS_DEFAULT_MODES,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &task_id
+ );
+ directive_failed( status, "rtems_task_create LOW" );
+
+ status = rtems_task_start( task_id, Low_task, 0 );
+ directive_failed( status, "rtems_task_start LOW" );
+
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ ) {
+ status = rtems_task_create(
+ rtems_build_name( 'T', 'I', 'M', 'E' ),
+ 128,
+ 1024,
+ RTEMS_DEFAULT_MODES,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &task_id
+ );
+ directive_failed( status, "rtems_task_create LOOP" );
+
+ status = rtems_task_start( task_id, High_tasks, 0 );
+ directive_failed( status, "rtems_task_start LOOP" );
+ }
+
+ status = rtems_task_delete( RTEMS_SELF );
+ directive_failed( status, "rtems_task_delete of RTEMS_SELF" );
+}
+
+rtems_task High_tasks(
+ rtems_task_argument argument
+)
+{
+ (void) rtems_semaphore_obtain(
+ Semaphore_id,
+ RTEMS_DEFAULT_OPTIONS,
+ 0xffffffff
+ );
+}
+
+rtems_task Low_task(
+ rtems_task_argument argument
+)
+{
+ Timer_initialize();
+ (void) rtems_clock_tick();
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_clock_tick",
+ end_time,
+ 1,
+ 0,
+ CALLING_OVERHEAD_CLOCK_TICK
+ );
+
+ exit( 0 );
+}
diff --git a/testsuites/tmtests/tm25/tm25.doc b/testsuites/tmtests/tm25/tm25.doc
new file mode 100644
index 0000000000..0de40191c6
--- /dev/null
+++ b/testsuites/tmtests/tm25/tm25.doc
@@ -0,0 +1,13 @@
+#
+# $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.
+#
+
+
diff --git a/testsuites/tmtests/tm26/fptest.h b/testsuites/tmtests/tm26/fptest.h
new file mode 100644
index 0000000000..39b8438ef9
--- /dev/null
+++ b/testsuites/tmtests/tm26/fptest.h
@@ -0,0 +1,165 @@
+/* fptest.h
+ *
+ * This include file contains the CPU dependent implementation
+ * of the following routines needed to test RTEMS floating
+ * point support:
+ * FP_load( &context )
+ * FP_check( &context )
+ *
+ * FP_load - loads the specified floating point context
+ * FP_check - checks the specified floating point context
+ *
+ * NOTE: These routines are VERY CPU dependent and are thus
+ * located in in the CPU dependent include file
+ * fptest.h. These routines form the core of the
+ * floating point context switch test.
+ *
+ * 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$
+ */
+
+
+#ifndef __FPTEST_h
+#define __FPTEST_h
+
+#include <stdio.h>
+
+#ifndef CPU_HARDWARE_FP
+#error "This CPU does not have CPU_HARDWARE_FP defined"
+#endif
+
+#if ( CPU_HARDWARE_FP == FALSE )
+
+#define FP_DECLARE
+#define FP_LOAD( _factor )
+#define FP_CHECK( _factor ) 0
+
+#else
+
+#define FP_DECLARE \
+ double fp01 = 1.0; \
+ double fp02 = 2.0; \
+ double fp03 = 3.0; \
+ double fp04 = 4.0; \
+ double fp05 = 5.0; \
+ double fp06 = 6.0; \
+ double fp07 = 7.0; \
+ double fp08 = 8.0; \
+ double fp09 = 9.0; \
+ double fp10 = 10.0; \
+ double fp11 = 11.0; \
+ double fp12 = 12.0; \
+ double fp13 = 13.0; \
+ double fp14 = 14.0; \
+ double fp15 = 15.0; \
+ double fp16 = 16.0; \
+ double fp17 = 17.0; \
+ double fp18 = 18.0; \
+ double fp19 = 19.0; \
+ double fp20 = 20.0; \
+ double fp21 = 21.0; \
+ double fp22 = 22.0; \
+ double fp23 = 23.0; \
+ double fp24 = 24.0; \
+ double fp25 = 25.0; \
+ double fp26 = 26.0; \
+ double fp27 = 27.0; \
+ double fp28 = 28.0; \
+ double fp29 = 29.0; \
+ double fp30 = 30.0; \
+ double fp31 = 31.0; \
+ double fp32 = 32.0
+
+#define FP_LOAD( _factor ) \
+ do { \
+ fp01 += _factor; \
+ fp02 += _factor; \
+ fp03 += _factor; \
+ fp04 += _factor; \
+ fp05 += _factor; \
+ fp06 += _factor; \
+ fp07 += _factor; \
+ fp08 += _factor; \
+ fp09 += _factor; \
+ fp10 += _factor; \
+ fp11 += _factor; \
+ fp12 += _factor; \
+ fp13 += _factor; \
+ fp14 += _factor; \
+ fp15 += _factor; \
+ fp16 += _factor; \
+ fp17 += _factor; \
+ fp18 += _factor; \
+ fp19 += _factor; \
+ fp20 += _factor; \
+ fp21 += _factor; \
+ fp22 += _factor; \
+ fp23 += _factor; \
+ fp24 += _factor; \
+ fp25 += _factor; \
+ fp26 += _factor; \
+ fp27 += _factor; \
+ fp28 += _factor; \
+ fp29 += _factor; \
+ fp30 += _factor; \
+ fp31 += _factor; \
+ fp32 += _factor; \
+ } while (0)
+
+#define EPSILON (0.0005)
+#define FPABS(d) (((d) < 0.0) ? -(d) : (d))
+#define FPNEQ(a,b) (FPABS((a)-(b)) > EPSILON)
+
+#define FP_CHECK_ONE( _v, _base, _factor ) \
+ if ( FPNEQ( (_v), ((_base) + (_factor)) ) ) { \
+ printf("%d: " #_v " wrong -- (%g not %g)\n", \
+ task_index, (_v), (_base + _factor)); \
+ }
+
+
+#define FP_CHECK( _factor ) \
+ do { \
+ FP_CHECK_ONE( fp01, 1.0, (_factor) ); \
+ FP_CHECK_ONE( fp02, 2.0, (_factor) ); \
+ FP_CHECK_ONE( fp03, 3.0, (_factor) ); \
+ FP_CHECK_ONE( fp04, 4.0, (_factor) ); \
+ FP_CHECK_ONE( fp05, 5.0, (_factor) ); \
+ FP_CHECK_ONE( fp06, 6.0, (_factor) ); \
+ FP_CHECK_ONE( fp07, 7.0, (_factor) ); \
+ FP_CHECK_ONE( fp08, 8.0, (_factor) ); \
+ FP_CHECK_ONE( fp09, 9.0, (_factor) ); \
+ FP_CHECK_ONE( fp10, 10.0, (_factor) ); \
+ FP_CHECK_ONE( fp11, 11.0, (_factor) ); \
+ FP_CHECK_ONE( fp12, 12.0, (_factor) ); \
+ FP_CHECK_ONE( fp13, 13.0, (_factor) ); \
+ FP_CHECK_ONE( fp14, 14.0, (_factor) ); \
+ FP_CHECK_ONE( fp15, 15.0, (_factor) ); \
+ FP_CHECK_ONE( fp16, 16.0, (_factor) ); \
+ FP_CHECK_ONE( fp17, 17.0, (_factor) ); \
+ FP_CHECK_ONE( fp18, 18.0, (_factor) ); \
+ FP_CHECK_ONE( fp19, 19.0, (_factor) ); \
+ FP_CHECK_ONE( fp20, 20.0, (_factor) ); \
+ FP_CHECK_ONE( fp21, 21.0, (_factor) ); \
+ FP_CHECK_ONE( fp22, 22.0, (_factor) ); \
+ FP_CHECK_ONE( fp23, 23.0, (_factor) ); \
+ FP_CHECK_ONE( fp24, 24.0, (_factor) ); \
+ FP_CHECK_ONE( fp25, 25.0, (_factor) ); \
+ FP_CHECK_ONE( fp26, 26.0, (_factor) ); \
+ FP_CHECK_ONE( fp27, 27.0, (_factor) ); \
+ FP_CHECK_ONE( fp28, 28.0, (_factor) ); \
+ FP_CHECK_ONE( fp29, 29.0, (_factor) ); \
+ FP_CHECK_ONE( fp30, 30.0, (_factor) ); \
+ FP_CHECK_ONE( fp31, 31.0, (_factor) ); \
+ FP_CHECK_ONE( fp32, 32.0, (_factor) ); \
+ } while (0)
+
+#endif
+
+#endif
diff --git a/testsuites/tmtests/tm26/system.h b/testsuites/tmtests/tm26/system.h
new file mode 100644
index 0000000000..9133506e7f
--- /dev/null
+++ b/testsuites/tmtests/tm26/system.h
@@ -0,0 +1,23 @@
+/* system.h
+ *
+ * This include file is used by all tests in the Time Suite.
+ *
+ * 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 "coverhd.h"
+#include "tmacros.h"
+
+#include "timesys.h"
+#include "timegvar.h"
diff --git a/testsuites/tmtests/tm26/task1.c b/testsuites/tmtests/tm26/task1.c
new file mode 100644
index 0000000000..b3544741bc
--- /dev/null
+++ b/testsuites/tmtests/tm26/task1.c
@@ -0,0 +1,470 @@
+/*
+ *
+ * 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 "system.h"
+#include "fptest.h"
+#include "coverhd.h"
+#include "tmacros.h"
+#include "timesys.h"
+
+#undef EXTERN
+#define EXTERN
+#include "gvar.h"
+#include "conftbl.h"
+#undef EXTERN
+#define EXTERN extern
+
+/* TEST DATA */
+rtems_id Semaphore_id;
+
+Objects_Locations location; /* uses internal RTEMS type */
+
+Thread_Control *Middle_tcb; /* uses internal RTEMS type */
+
+rtems_task High_task(
+ rtems_task_argument argument
+);
+
+rtems_task Middle_task(
+ rtems_task_argument argument
+);
+
+rtems_task Low_task(
+ rtems_task_argument argument
+);
+
+rtems_task Floating_point_task_1(
+ rtems_task_argument argument
+);
+
+rtems_task Floating_point_task_2(
+ rtems_task_argument argument
+);
+
+void complete_test( void );
+
+rtems_task null_task(
+ rtems_task_argument argument
+)
+{
+}
+
+rtems_task Init(
+ rtems_task_argument argument
+)
+{
+ rtems_unsigned32 index;
+ rtems_id task_id;
+ rtems_status_code status;
+
+ puts( "\n\n*** TIME TEST 26 ***" );
+
+ status = rtems_task_create(
+ rtems_build_name( 'F', 'P', '1', ' ' ),
+ 201,
+ 2048,
+ RTEMS_DEFAULT_MODES,
+ RTEMS_FLOATING_POINT,
+ &task_id
+ );
+ directive_failed( status, "rtems_task_create of FP1" );
+
+ status = rtems_task_start( task_id, Floating_point_task_1, 0 );
+ directive_failed( status, "rtems_task_start of FP1" );
+
+ status = rtems_task_create(
+ rtems_build_name( 'F', 'P', '2', ' ' ),
+ 202,
+ 2048,
+ RTEMS_DEFAULT_MODES,
+ RTEMS_FLOATING_POINT,
+ &task_id
+ );
+ directive_failed( status, "rtems_task_create of FP2" );
+
+ status = rtems_task_start( task_id, Floating_point_task_2, 0 );
+ directive_failed( status, "rtems_task_start of FP2" );
+
+ status = rtems_task_create(
+ rtems_build_name( 'L', 'O', 'W', ' ' ),
+ 200,
+ 2048,
+ RTEMS_DEFAULT_MODES,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &task_id
+ );
+ directive_failed( status, "rtems_task_create of LOW" );
+
+ status = rtems_task_start( task_id, Low_task, 0 );
+ directive_failed( status, "rtems_task_start of LOW" );
+
+ status = rtems_task_create(
+ rtems_build_name( 'M', 'I', 'D', ' ' ),
+ 128,
+ 2048,
+ RTEMS_DEFAULT_MODES,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &task_id
+ );
+ directive_failed( status, "rtems_task_create of MIDDLE" );
+
+ status = rtems_task_start( task_id, Middle_task, 0 );
+ directive_failed( status, "rtems_task_start of MIDDLE" );
+
+ status = rtems_task_create(
+ rtems_build_name( 'H', 'I', 'G', 'H' ),
+ 5,
+ 2048,
+ RTEMS_DEFAULT_MODES,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &task_id
+ );
+ directive_failed( status, "rtems_task_create of HIGH" );
+
+ status = rtems_task_start( task_id, High_task, 0 );
+ directive_failed( status, "rtems_task_start of HIGH" );
+
+ status = rtems_semaphore_create(
+ rtems_build_name( 'S', 'E', 'M', '1' ),
+ OPERATION_COUNT,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &Semaphore_id
+ );
+ directive_failed( status, "rtems_semaphore_create" );
+
+ for ( index = 1 ; index <= OPERATION_COUNT ; index++ ) {
+ status = rtems_task_create(
+ rtems_build_name( 'N', 'U', 'L', 'L' ),
+ 254,
+ 1024,
+ RTEMS_DEFAULT_MODES,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &task_id
+ );
+ directive_failed( status, "rtems_task_create LOOP" );
+
+ status = rtems_task_start( task_id, null_task, 0 );
+ directive_failed( status, "rtems_task_start LOOP" );
+ }
+
+ status = rtems_task_delete( RTEMS_SELF );
+ directive_failed( status, "rtems_task_delete of RTEMS_SELF" );
+}
+
+rtems_task High_task(
+ rtems_task_argument argument
+)
+{
+ Timer_initialize();
+ _Thread_Disable_dispatch();
+ end_time = Read_timer();
+
+ put_time(
+ "THREAD_DISABLE_DISPATCH",
+ end_time,
+ 1,
+ 0,
+ 0
+ );
+
+
+ Timer_initialize();
+ _Thread_Enable_dispatch();
+ end_time = Read_timer();
+
+ put_time(
+ "THREAD_ENABLE_DISPATCH",
+ end_time,
+ 1,
+ 0,
+ 0
+ );
+
+ Timer_initialize();
+ _Thread_Set_state( _Thread_Executing, STATES_SUSPENDED );
+ end_time = Read_timer();
+
+ put_time(
+ "THREAD_SET_STATE",
+ end_time,
+ 1,
+ 0,
+ 0
+ );
+
+ _Context_Switch_necessary = TRUE;
+
+ Timer_initialize();
+ _Thread_Dispatch(); /* dispatches Middle_task */
+}
+
+rtems_task Middle_task(
+ rtems_task_argument argument
+)
+{
+ end_time = Read_timer();
+
+ put_time(
+ "THREAD_DISPATCH (NO FP)",
+ end_time,
+ 1,
+ 0,
+ 0
+ );
+
+ _Thread_Set_state( _Thread_Executing, STATES_SUSPENDED );
+
+ Middle_tcb = _Thread_Executing;
+
+ _Thread_Executing =
+ (Thread_Control *) _Thread_Ready_chain[200].first;
+
+ /* do not force context switch */
+
+ _Context_Switch_necessary = FALSE;
+
+ Timer_initialize();
+ _Context_Switch( &Middle_tcb->Registers, &_Thread_Executing->Registers );
+}
+
+rtems_task Low_task(
+ rtems_task_argument argument
+)
+{
+ Thread_Control *executing;
+
+ end_time = Read_timer();
+
+ put_time(
+ "CONTEXT_SWITCH (NO FP)",
+ end_time,
+ 1,
+ 0,
+ 0
+ );
+
+ executing = _Thread_Executing;
+
+ _Thread_Executing =
+ (Thread_Control *) _Thread_Ready_chain[201].first;
+
+ /* do not force context switch */
+
+ _Context_Switch_necessary = FALSE;
+
+ Timer_initialize();
+ _Context_Restore_fp( &_Thread_Executing->fp_context );
+ _Context_Switch( &executing->Registers, &_Thread_Executing->Registers );
+}
+
+rtems_task Floating_point_task_1(
+ rtems_task_argument argument
+)
+{
+ Thread_Control *executing;
+ FP_DECLARE;
+
+ end_time = Read_timer();
+
+ put_time(
+ "CONTEXT_SWITCH (restore 1st FP)",
+ end_time,
+ 1,
+ 0,
+ 0
+ );
+
+ executing = _Thread_Executing;
+
+ _Thread_Executing =
+ (Thread_Control *) _Thread_Ready_chain[202].first;
+
+ /* do not force context switch */
+
+ _Context_Switch_necessary = FALSE;
+
+ Timer_initialize();
+ _Context_Save_fp( &executing->fp_context );
+ _Context_Restore_fp( &_Thread_Executing->fp_context );
+ _Context_Switch( &executing->Registers, &_Thread_Executing->Registers );
+ /* switch to Floating_point_task_2 */
+
+ end_time = Read_timer();
+
+ put_time(
+ "CONTEXT_SWITCH (used->init FP)",
+ end_time,
+ 1,
+ 0,
+ 0
+ );
+
+ FP_LOAD( 1.0 );
+
+ executing = _Thread_Executing;
+
+ _Thread_Executing =
+ (Thread_Control *) _Thread_Ready_chain[202].first;
+
+ /* do not force context switch */
+
+ _Context_Switch_necessary = FALSE;
+
+ Timer_initialize();
+ _Context_Save_fp( &executing->fp_context );
+ _Context_Restore_fp( &_Thread_Executing->fp_context );
+ _Context_Switch( &executing->Registers, &_Thread_Executing->Registers );
+ /* switch to Floating_point_task_2 */
+}
+
+rtems_task Floating_point_task_2(
+ rtems_task_argument argument
+)
+{
+ Thread_Control *executing;
+ FP_DECLARE;
+
+ end_time = Read_timer();
+
+ put_time(
+ "CONTEXT_SWITCH (init->init FP)",
+ end_time,
+ 1,
+ 0,
+ 0
+ );
+
+ executing = _Thread_Executing;
+
+ _Thread_Executing =
+ (Thread_Control *) _Thread_Ready_chain[201].first;
+
+ FP_LOAD( 1.0 );
+
+ /* do not force context switch */
+
+ _Context_Switch_necessary = FALSE;
+
+ Timer_initialize();
+ _Context_Save_fp( &executing->fp_context );
+ _Context_Restore_fp( &_Thread_Executing->fp_context );
+ _Context_Switch( &executing->Registers, &_Thread_Executing->Registers );
+ /* switch to Floating_point_task_1 */
+
+ end_time = Read_timer();
+
+ put_time(
+ "CONTEXT_SWITCH (used->used FP)",
+ end_time,
+ 1,
+ 0,
+ 0
+ );
+
+ complete_test();
+}
+
+void complete_test( void )
+{
+ rtems_unsigned32 index;
+ rtems_id task_id;
+
+ Timer_initialize();
+ _Thread_Resume( Middle_tcb );
+ end_time = Read_timer();
+
+ put_time(
+ "THREAD_RESUME",
+ end_time,
+ 1,
+ 0,
+ 0
+ );
+
+ _Thread_Set_state( Middle_tcb, STATES_WAITING_FOR_MESSAGE );
+
+ Timer_initialize();
+ _Thread_Unblock( Middle_tcb );
+ end_time = Read_timer();
+
+ put_time(
+ "THREAD_UNBLOCK",
+ end_time,
+ 1,
+ 0,
+ 0
+ );
+
+ _Thread_Set_state( Middle_tcb, STATES_WAITING_FOR_MESSAGE );
+
+ Timer_initialize();
+ _Thread_Ready( Middle_tcb );
+ end_time = Read_timer();
+
+ put_time(
+ "THREAD_READY",
+ end_time,
+ 1,
+ 0,
+ 0
+ );
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) Empty_function();
+ overhead = Read_timer();
+
+ task_id = Middle_tcb->Object.id;
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) _Thread_Get( task_id, &location );
+ end_time = Read_timer();
+
+ put_time(
+ "THREAD_GET",
+ end_time,
+ OPERATION_COUNT,
+ 0,
+ 0
+ );
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) _Semaphore_Get( Semaphore_id, &location );
+ end_time = Read_timer();
+
+ put_time(
+ "SEMAPHORE_GET",
+ end_time,
+ OPERATION_COUNT,
+ 0,
+ 0
+ );
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) _Thread_Get( 0x3, &location );
+ end_time = Read_timer();
+
+ put_time(
+ "THREAD_GET invalid id",
+ end_time,
+ OPERATION_COUNT,
+ 0,
+ 0
+ );
+ exit( 0 );
+}
+
diff --git a/testsuites/tmtests/tm26/tm26.doc b/testsuites/tmtests/tm26/tm26.doc
new file mode 100644
index 0000000000..0de40191c6
--- /dev/null
+++ b/testsuites/tmtests/tm26/tm26.doc
@@ -0,0 +1,13 @@
+#
+# $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.
+#
+
+
diff --git a/testsuites/tmtests/tm27/system.h b/testsuites/tmtests/tm27/system.h
new file mode 100644
index 0000000000..9133506e7f
--- /dev/null
+++ b/testsuites/tmtests/tm27/system.h
@@ -0,0 +1,23 @@
+/* system.h
+ *
+ * This include file is used by all tests in the Time Suite.
+ *
+ * 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 "coverhd.h"
+#include "tmacros.h"
+
+#include "timesys.h"
+#include "timegvar.h"
diff --git a/testsuites/tmtests/tm27/task1.c b/testsuites/tmtests/tm27/task1.c
new file mode 100644
index 0000000000..edd657b40c
--- /dev/null
+++ b/testsuites/tmtests/tm27/task1.c
@@ -0,0 +1,237 @@
+/*
+ *
+ * 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"
+
+#include <bsp.h>
+
+rtems_task Task_1(
+ rtems_task_argument argument
+);
+
+rtems_task Task_2(
+ rtems_task_argument argument
+);
+
+volatile rtems_unsigned32 Interrupt_occurred;
+volatile rtems_unsigned32 Interrupt_enter_time, Interrupt_enter_nested_time;
+volatile rtems_unsigned32 Interrupt_return_time, Interrupt_return_nested_time;
+rtems_unsigned32 Interrupt_nest;
+
+rtems_isr Isr_handler(
+ rtems_vector_number vector
+);
+
+/*
+ * INTERNAL RTEMS VARIABLES!!!
+ */
+
+extern rtems_unsigned32 _Thread_Dispatch_disable_level;
+extern rtems_unsigned32 _Context_Switch_necessary;
+extern Chain_Control *_Thread_Ready_chain;
+extern rtems_tcb *_Thread_Heir;
+
+rtems_task Init(
+ rtems_task_argument argument
+)
+{
+ rtems_status_code status;
+
+ puts( "\n\n*** TIME TEST 27 ***" );
+
+ status = rtems_task_create(
+ rtems_build_name( 'T', 'A', '1', ' ' ),
+ 254,
+ 1024,
+ RTEMS_DEFAULT_MODES,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &Task_id[ 1 ]
+ );
+ directive_failed( status, "rtems_task_create Task_1" );
+
+ status = rtems_task_start( Task_id[ 1 ], Task_1, 0 );
+ directive_failed( status, "rtems_task_start Task_1" );
+
+ status = rtems_task_create(
+ rtems_build_name( 'T', 'A', '2', ' ' ),
+ 254,
+ 1024,
+ RTEMS_DEFAULT_MODES,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &Task_id[ 2 ]
+ );
+ directive_failed( status, "rtems_task_create of Task_2" );
+
+ status = rtems_task_start( Task_id[ 2 ], Task_2, 0 );
+ directive_failed( status, "rtems_task_start of Task_2" );
+
+ status = rtems_task_delete( RTEMS_SELF );
+ directive_failed( status, "rtems_task_delete of RTEMS_SELF" );
+}
+
+rtems_task Task_1(
+ rtems_task_argument argument
+)
+{
+ _Thread_Dispatch_disable_level = 1;
+
+ Interrupt_nest = 1;
+
+ Install_tm27_vector( Isr_handler );
+
+ Interrupt_occurred = 0;
+ Timer_initialize();
+ Cause_tm27_intr();
+ /* goes to Isr_handler */
+
+#if (MUST_WAIT_FOR_INTERRUPT == 1)
+ while ( Interrupt_occurred == 0 );
+#endif
+ Interrupt_return_time = Read_timer();
+
+ put_time(
+ "INTERRUPT_ENTER (nested interrupt)",
+ Interrupt_enter_nested_time,
+ 1,
+ 0,
+ 0
+ );
+
+ put_time(
+ "INTERRUPT_RETURN (nested interrupt)",
+ Interrupt_return_nested_time,
+ 1,
+ 0,
+ 0
+ );
+
+ Interrupt_nest = 0;
+
+ _Thread_Dispatch_disable_level = 0;
+
+ Interrupt_occurred = 0;
+ Timer_initialize();
+ Cause_tm27_intr();
+ /* goes to Isr_handler */
+
+#if (MUST_WAIT_FOR_INTERRUPT == 1)
+ while ( Interrupt_occurred == 0 );
+#endif
+ Interrupt_return_time = Read_timer();
+
+ put_time(
+ "INTERRUPT_ENTER (no preempt)",
+ Interrupt_enter_time,
+ 1,
+ 0,
+ 0
+ );
+
+ put_time(
+ "INTERRUPT_RETURN (no preempt)",
+ Interrupt_return_time,
+ 1,
+ 0,
+ 0
+ );
+
+ _Thread_Dispatch_disable_level = 0;
+
+ _Thread_Heir = (rtems_tcb *) _Thread_Ready_chain[254].last;
+
+ _Context_Switch_necessary = 1;
+
+ Interrupt_occurred = 0;
+ Timer_initialize();
+ Cause_tm27_intr();
+ /* goes to Isr_handler */
+}
+
+rtems_task Task_2(
+ rtems_task_argument argument
+)
+{
+#if (MUST_WAIT_FOR_INTERRUPT == 1)
+ while ( Interrupt_occurred == 0 );
+#endif
+ end_time = Read_timer();
+
+ put_time(
+ "INTERRUPT_ENTER (preempt)",
+ Interrupt_enter_time,
+ 1,
+ 0,
+ 0
+ );
+
+ put_time(
+ "INTERRUPT_RETURN (preempt)",
+ end_time,
+ 1,
+ 0,
+ 0
+ );
+
+ exit( 0 );
+}
+
+/* The Isr_handler() and Isr_handler_inner() routines are structured
+ * so that there will be as little entry overhead as possible included
+ * in the interrupt entry time.
+ */
+
+void Isr_handler_inner( void );
+
+rtems_isr Isr_handler(
+ rtems_vector_number vector
+)
+{
+ end_time = Read_timer();
+
+ Interrupt_occurred = 1;
+ Isr_handler_inner();
+}
+
+void Isr_handler_inner( void )
+{
+
+ /*enable_tracing();*/
+ Clear_tm27_intr();
+ switch ( Interrupt_nest ) {
+ case 0:
+ Interrupt_enter_time = end_time;
+ break;
+ case 1:
+ Interrupt_enter_time = end_time;
+ Interrupt_nest = 2;
+ Interrupt_occurred = 0;
+ Lower_tm27_intr();
+ Timer_initialize();
+ Cause_tm27_intr();
+ /* goes to a nested copy of Isr_handler */
+#if (MUST_WAIT_FOR_INTERRUPT == 1)
+ while ( Interrupt_occurred == 0 );
+#endif
+ Interrupt_return_nested_time = Read_timer();
+ break;
+ case 2:
+ Interrupt_enter_nested_time = end_time;
+ break;
+ }
+
+ Timer_initialize();
+}
diff --git a/testsuites/tmtests/tm27/tm27.doc b/testsuites/tmtests/tm27/tm27.doc
new file mode 100644
index 0000000000..0de40191c6
--- /dev/null
+++ b/testsuites/tmtests/tm27/tm27.doc
@@ -0,0 +1,13 @@
+#
+# $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.
+#
+
+
diff --git a/testsuites/tmtests/tm28/system.h b/testsuites/tmtests/tm28/system.h
new file mode 100644
index 0000000000..9133506e7f
--- /dev/null
+++ b/testsuites/tmtests/tm28/system.h
@@ -0,0 +1,23 @@
+/* system.h
+ *
+ * This include file is used by all tests in the Time Suite.
+ *
+ * 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 "coverhd.h"
+#include "tmacros.h"
+
+#include "timesys.h"
+#include "timegvar.h"
diff --git a/testsuites/tmtests/tm28/task1.c b/testsuites/tmtests/tm28/task1.c
new file mode 100644
index 0000000000..c6af6fb03f
--- /dev/null
+++ b/testsuites/tmtests/tm28/task1.c
@@ -0,0 +1,134 @@
+/*
+ *
+ * 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_id Port_id;
+
+rtems_unsigned8 Internal_area[ 256 ];
+rtems_unsigned8 External_area[ 256 ];
+
+rtems_task Test_task(
+ rtems_task_argument argument
+);
+
+rtems_task Init(
+ rtems_task_argument argument
+)
+{
+ rtems_status_code status;
+
+ puts( "\n\n*** TIME TEST 28 ***" );
+
+ status = rtems_task_create(
+ rtems_build_name( 'T', 'I', 'M', 'E' ),
+ 128,
+ 4096,
+ RTEMS_DEFAULT_MODES,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &Task_id[ 1 ]
+ );
+ directive_failed( status, "rtems_task_create" );
+
+ status = rtems_task_start( Task_id[ 1 ], Test_task, 0 );
+ directive_failed( status, "rtems_task_start" );
+
+ status = rtems_task_delete( RTEMS_SELF );
+ directive_failed( status, "rtems_task_delete of RTEMS_SELF" );
+}
+
+rtems_task Test_task (
+ rtems_task_argument argument
+)
+{
+ rtems_name name;
+ rtems_unsigned32 index;
+ void *converted;
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) Empty_function();
+ overhead = Read_timer();
+
+ name = rtems_build_name( 'P', 'O', 'R', 'T' ),
+
+ Timer_initialize();
+ rtems_port_create(
+ name,
+ Internal_area,
+ External_area,
+ 0xff,
+ &Port_id
+ );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_port_create",
+ end_time,
+ 1,
+ 0,
+ CALLING_OVERHEAD_PORT_CREATE
+ );
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) rtems_port_external_to_internal(
+ Port_id,
+ &External_area[ 0xf ],
+ &converted
+ );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_port_external_to_internal",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ CALLING_OVERHEAD_PORT_EXTERNAL_TO_INTERNAL
+ );
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) rtems_port_internal_to_external(
+ Port_id,
+ &Internal_area[ 0xf ],
+ &converted
+ );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_port_internal_to_external",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ CALLING_OVERHEAD_PORT_INTERNAL_TO_EXTERNAL
+ );
+
+ Timer_initialize();
+ rtems_port_delete( Port_id );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_port_delete",
+ end_time,
+ 1,
+ 0,
+ CALLING_OVERHEAD_PORT_DELETE
+ );
+
+ exit( 0 );
+}
diff --git a/testsuites/tmtests/tm28/tm28.doc b/testsuites/tmtests/tm28/tm28.doc
new file mode 100644
index 0000000000..0de40191c6
--- /dev/null
+++ b/testsuites/tmtests/tm28/tm28.doc
@@ -0,0 +1,13 @@
+#
+# $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.
+#
+
+
diff --git a/testsuites/tmtests/tm29/system.h b/testsuites/tmtests/tm29/system.h
new file mode 100644
index 0000000000..9133506e7f
--- /dev/null
+++ b/testsuites/tmtests/tm29/system.h
@@ -0,0 +1,23 @@
+/* system.h
+ *
+ * This include file is used by all tests in the Time Suite.
+ *
+ * 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 "coverhd.h"
+#include "tmacros.h"
+
+#include "timesys.h"
+#include "timegvar.h"
diff --git a/testsuites/tmtests/tm29/task1.c b/testsuites/tmtests/tm29/task1.c
new file mode 100644
index 0000000000..a38e9567c8
--- /dev/null
+++ b/testsuites/tmtests/tm29/task1.c
@@ -0,0 +1,207 @@
+/*
+ *
+ * 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_name Period_name;
+
+rtems_task Tasks(
+ rtems_task_argument argument
+);
+
+rtems_task Low_task(
+ rtems_task_argument argument
+);
+
+rtems_unsigned32 Task_count;
+
+rtems_task Init(
+ rtems_task_argument argument
+)
+{
+ rtems_id id;
+ rtems_unsigned32 index;
+ rtems_status_code status;
+
+ puts( "\n\n*** TIME TEST 29 ***" );
+
+ Period_name = rtems_build_name( 'P', 'R', 'D', ' ' );
+
+ Timer_initialize();
+ (void) rtems_rate_monotonic_create( Period_name, &id );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_rate_monotonic_create",
+ end_time,
+ 1,
+ 0,
+ CALLING_OVERHEAD_RATE_MONOTONIC_CREATE
+ );
+
+ Timer_initialize();
+ (void) rtems_rate_monotonic_period( id, 10 );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_rate_monotonic_period (initial)",
+ end_time,
+ 1,
+ 0,
+ CALLING_OVERHEAD_RATE_MONOTONIC_PERIOD
+ );
+
+ Timer_initialize();
+ (void) rtems_rate_monotonic_period( id, RTEMS_PERIOD_STATUS );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_rate_monotonic_period (STATUS)",
+ end_time,
+ 1,
+ 0,
+ CALLING_OVERHEAD_RATE_MONOTONIC_PERIOD
+ );
+
+ Timer_initialize();
+ (void) rtems_rate_monotonic_cancel( id );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_rate_monotonic_cancel",
+ end_time,
+ 1,
+ 0,
+ CALLING_OVERHEAD_RATE_MONOTONIC_CANCEL
+ );
+
+ Timer_initialize();
+ (void) rtems_rate_monotonic_delete( id );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_rate_monotonic_delete (cancelled)",
+ end_time,
+ 1,
+ 0,
+ CALLING_OVERHEAD_RATE_MONOTONIC_DELETE
+ );
+
+ status = rtems_rate_monotonic_create( Period_name, &id );
+ directive_failed( status, "rtems_rate_monotonic_create" );
+
+ status = rtems_rate_monotonic_period( id, 10 );
+ directive_failed( status, "rtems_rate_monotonic_period" );
+
+ Timer_initialize();
+ rtems_rate_monotonic_delete( id );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_rate_monotonic_delete (active)",
+ end_time,
+ 1,
+ 0,
+ CALLING_OVERHEAD_RATE_MONOTONIC_DELETE
+ );
+
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ ) {
+ status = rtems_task_create(
+ rtems_build_name( 'T', 'E', 'S', 'T' ),
+ 128,
+ 1024,
+ RTEMS_DEFAULT_MODES,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &id
+ );
+ directive_failed( status, "rtems_task_create LOOP" );
+
+ status = rtems_task_start( id, Tasks, 0 );
+ directive_failed( status, "rtems_task_start LOOP" );
+ }
+
+ status = rtems_task_create(
+ rtems_build_name( 'L', 'O', 'W', ' ' ),
+ 200,
+ 2048,
+ RTEMS_DEFAULT_MODES,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &id
+ );
+ directive_failed( status, "rtems_task_create LOW" );
+
+ status = rtems_task_start( id, Low_task, 0 );
+ directive_failed( status, "rtems_task_start LOW" );
+
+ Task_count = 0;
+
+ status = rtems_task_delete( RTEMS_SELF );
+ directive_failed( status, "rtems_task_delete of RTEMS_SELF" );
+}
+
+rtems_task Tasks(
+ rtems_task_argument argument
+)
+{
+ rtems_id id;
+ rtems_status_code status;
+
+ status = rtems_rate_monotonic_create( 1, &id );
+ directive_failed( status, "rtems_rate_monotonic_create" );
+
+ status = rtems_rate_monotonic_period( id, 100 );
+ directive_failed( status, "rtems_rate_monotonic_period" );
+
+ /*
+ * Give up the processor to allow all tasks to actually
+ * create and start their period timer before the benchmark
+ * timer is initialized.
+ */
+
+ (void) rtems_task_wake_after( RTEMS_YIELD_PROCESSOR );
+
+ Task_count++;
+
+ if ( Task_count == 1 )
+ Timer_initialize();
+
+ (void) rtems_rate_monotonic_period( id, 100 );
+}
+
+rtems_task Low_task(
+ rtems_task_argument argument
+)
+{
+ rtems_unsigned32 index;
+
+ end_time = Read_timer();
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) Empty_function();
+ overhead = Read_timer();
+
+ put_time(
+ "rtems_rate_monotonic_period (blocking)",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ CALLING_OVERHEAD_RATE_MONOTONIC_PERIOD
+ );
+
+ exit( 0 );
+}
diff --git a/testsuites/tmtests/tm29/tm29.doc b/testsuites/tmtests/tm29/tm29.doc
new file mode 100644
index 0000000000..0de40191c6
--- /dev/null
+++ b/testsuites/tmtests/tm29/tm29.doc
@@ -0,0 +1,13 @@
+#
+# $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.
+#
+
+
diff --git a/testsuites/tmtests/tmck/system.h b/testsuites/tmtests/tmck/system.h
new file mode 100644
index 0000000000..9133506e7f
--- /dev/null
+++ b/testsuites/tmtests/tmck/system.h
@@ -0,0 +1,23 @@
+/* system.h
+ *
+ * This include file is used by all tests in the Time Suite.
+ *
+ * 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 "coverhd.h"
+#include "tmacros.h"
+
+#include "timesys.h"
+#include "timegvar.h"
diff --git a/testsuites/tmtests/tmck/task1.c b/testsuites/tmtests/tmck/task1.c
new file mode 100644
index 0000000000..c151475505
--- /dev/null
+++ b/testsuites/tmtests/tmck/task1.c
@@ -0,0 +1,180 @@
+/*
+ *
+ * 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"
+
+#define MAXIMUM_DISTRIBUTION 10000
+
+#undef OPERATION_COUNT
+#define OPERATION_COUNT 100000
+
+int Distribution[ MAXIMUM_DISTRIBUTION + 1 ];
+
+rtems_task Task_1(
+ rtems_task_argument argument
+);
+
+void check_read_timer( void );
+
+rtems_task Init(
+ rtems_task_argument argument
+)
+{
+ rtems_id id;
+ rtems_status_code status;
+
+ /*
+ * Tell the Timer Driver what we are doing
+ */
+
+ Set_find_average_overhead( 1 );
+
+ puts( "\n\n*** TIME CHECKER ***" );
+
+ Task_name[ 1 ] = rtems_build_name( 'T', 'A', '1', ' ' ),
+
+ status = rtems_task_create(
+ 1,
+ 5,
+ 1024,
+ RTEMS_DEFAULT_MODES,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &id
+ );
+ directive_failed( status, "rtems_task_create of TA1" );
+
+ status = rtems_task_start( id, Task_1, 0 );
+ directive_failed( status, "rtems_task_start of TA1" );
+
+ status = rtems_task_delete( RTEMS_SELF );
+ directive_failed( status, "rtems_task_delete of RTEMS_SELF" );
+}
+
+rtems_task Task_1(
+ rtems_task_argument argument
+)
+{
+ rtems_unsigned32 index;
+
+ check_read_timer();
+pause();
+
+ Timer_initialize();
+ end_time = Read_timer();
+
+ put_time(
+ "NULL timer stopped at",
+ end_time,
+ 1,
+ 0,
+ 0
+ );
+
+ Timer_initialize();
+ for ( index = 1 ; index <= 1000 ; index++ )
+ (void) Empty_function();
+ end_time = Read_timer();
+
+ put_time(
+ "LOOP (1000) timer stopped at",
+ end_time,
+ 1,
+ 0,
+ 0
+ );
+
+ Timer_initialize();
+ for ( index = 1 ; index <= 10000 ; index++ )
+ (void) Empty_function();
+ end_time = Read_timer();
+
+ put_time(
+ "LOOP (10000) timer stopped at",
+ end_time,
+ 1,
+ 0,
+ 0
+ );
+
+ Timer_initialize();
+ for ( index = 1 ; index <= 50000 ; index++ )
+ (void) Empty_function();
+ end_time = Read_timer();
+
+ put_time(
+ "LOOP (50000) timer stopped at",
+ end_time,
+ 1,
+ 0,
+ 0
+ );
+
+ Timer_initialize();
+ for ( index = 1 ; index <= 100000 ; index++ )
+ (void) Empty_function();
+ end_time = Read_timer();
+
+ put_time(
+ "LOOP (100000) timer stopped at",
+ end_time,
+ 1,
+ 0,
+ 0
+ );
+
+ exit( 0 );
+}
+
+void check_read_timer()
+{
+ rtems_unsigned32 index;
+ rtems_unsigned32 time;
+
+ for ( index = 1 ; index <= MAXIMUM_DISTRIBUTION ; index++ )
+ Distribution[ index ] = 0;
+
+ for ( index = 1 ; index <= OPERATION_COUNT ; index++ ) {
+ Timer_initialize();
+ end_time = Read_timer();
+ if ( end_time > MAXIMUM_DISTRIBUTION ) {
+ /*
+ * Under UNIX a simple process swap takes longer than we
+ * consider valid for our testing purposes.
+ */
+ printf( "TOO LONG (%d) at %d!!!\n", end_time, index );
+#if defined(unix)
+ index--;
+ continue;
+#else
+ exit( 1 );
+#endif
+ }
+ else
+ Distribution[ end_time ]++;
+ }
+
+ printf( "Units may not be in microseconds for this test!!!\n" );
+ time = 0;
+ for ( index = 0 ; index <= MAXIMUM_DISTRIBUTION ; index++ ) {
+ time += (Distribution[ index ] * index);
+ if ( Distribution[ index ] != 0 )
+ printf( "%d %d\n", index, Distribution[ index ] );
+ }
+ printf( "Total time = %d\n", time );
+ printf( "Average time = %d\n", time / OPERATION_COUNT );
+}
diff --git a/testsuites/tmtests/tmck/tmck.doc b/testsuites/tmtests/tmck/tmck.doc
new file mode 100644
index 0000000000..9ef6a57d99
--- /dev/null
+++ b/testsuites/tmtests/tmck/tmck.doc
@@ -0,0 +1,20 @@
+#
+# $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 timed by this test.
+
+benchmark name: timecheck
+
+This becnchmark is used to calibrate the timer. It is only used to
+when initial timing begins on a particular processor board.
+
diff --git a/testsuites/tmtests/tmoverhd/dumrtems.h b/testsuites/tmtests/tmoverhd/dumrtems.h
new file mode 100644
index 0000000000..d0492c1014
--- /dev/null
+++ b/testsuites/tmtests/tmoverhd/dumrtems.h
@@ -0,0 +1,255 @@
+/* dumrtems.h
+ *
+ * This include file contains phony macros to map
+ * executive calls to Empty_directive().
+ *
+ * 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$
+ */
+
+#ifndef __DUMRTEMS_h
+#define __DUMRTEMS_h
+
+/* RTEMS call redefinition macros */
+
+#undef rtems_signal_catch
+#undef rtems_signal_send
+#undef rtems_io_close
+#undef rtems_io_control
+#undef rtems_io_initialize
+#undef rtems_io_open
+#undef rtems_io_read
+#undef rtems_io_write
+#undef rtems_port_internal_to_external
+#undef rtems_port_external_to_internal
+#undef rtems_port_create
+#undef rtems_port_delete
+#undef rtems_port_ident
+#undef rtems_event_receive
+#undef rtems_event_send
+#undef rtems_initialize_executive
+#undef rtems_shutdown_executive
+#undef rtems_interrupt_catch
+#undef rtems_partition_create
+#undef rtems_partition_delete
+#undef rtems_partition_get_buffer
+#undef rtems_partition_ident
+#undef rtems_partition_return_buffer
+#undef rtems_message_queue_broadcast
+#undef rtems_message_queue_create
+#undef rtems_message_queue_delete
+#undef rtems_message_queue_flush
+#undef rtems_message_queue_ident
+#undef rtems_message_queue_receive
+#undef rtems_message_queue_send
+#undef rtems_message_queue_urgent
+#undef rtems_region_create
+#undef rtems_region_delete
+#undef rtems_region_get_segment
+#undef rtems_region_ident
+#undef rtems_region_return_segment
+#undef rtems_semaphore_create
+#undef rtems_semaphore_delete
+#undef rtems_semaphore_ident
+#undef rtems_semaphore_obtain
+#undef rtems_semaphore_release
+#undef rtems_task_create
+#undef rtems_task_delete
+#undef rtems_task_get_note
+#undef rtems_task_ident
+#undef rtems_task_mode
+#undef rtems_task_restart
+#undef rtems_task_resume
+#undef rtems_task_set_note
+#undef rtems_task_set_priority
+#undef rtems_task_start
+#undef rtems_task_suspend
+#undef rtems_clock_get
+#undef rtems_clock_set
+#undef rtems_clock_tick
+#undef rtems_task_wake_after
+#undef rtems_task_wake_when
+#undef rtems_fatal_error_occurred
+#undef rtems_rate_monotonic_create
+#undef rtems_rate_monotonic_ident
+#undef rtems_rate_monotonic_delete
+#undef rtems_rate_monotonic_cancel
+#undef rtems_rate_monotonic_period
+#undef rtems_multiprocessing_announce
+#undef rtems_timer_create
+#undef rtems_timer_ident
+#undef rtems_timer_delete
+#undef rtems_timer_cancel
+#undef rtems_timer_fire_after
+#undef rtems_timer_fire_when
+#undef rtems_timer_reset
+
+#define rtems_signal_catch( asraddr, mode ) \
+ Empty_directive( asraddr, mode )
+#define rtems_signal_send( tid, signal ) \
+ Empty_directive( tid, signal )
+
+#define rtems_io_close( major, minor, argp, rval ) \
+ Empty_directive( major, minor, argp, rval )
+#define rtems_io_control( major, minor, argp, rval ) \
+ Empty_directive( major, minor, argp, rval )
+#define rtems_io_initialize( major, minor, argp, rval ) \
+ Empty_directive( major, minor, argp, rval )
+#define rtems_io_open( major, minor, argp, rval ) \
+ Empty_directive( major, minor, argp, rval )
+#define rtems_io_read( major, minor, argp, rval ) \
+ Empty_directive( major, minor, argp, rval )
+#define rtems_io_write( major, minor, argp, rval ) \
+ Empty_directive( major, minor, argp, rval )
+
+#define rtems_port_internal_to_external( dpid, internal, external ) \
+ Empty_directive( dpid, internal, external )
+#define rtems_port_external_to_internal( dpid, external, internal ) \
+ Empty_directive( dpid, external, internal )
+#define rtems_port_create( name, intaddr, extaddr, length, dpid ) \
+ Empty_directive( name, intaddr, extaddr, length, dpid )
+#define rtems_port_delete( dpid ) \
+ Empty_directive( dpid )
+#define rtems_port_ident( name, dpid ) \
+ Empty_directive( name, dpid )
+
+#define rtems_event_receive( eventin, options, timeout, eventout ) \
+ Empty_directive( eventin, options, timeout, eventout )
+#define rtems_event_send( tid, event ) \
+ Empty_directive( tid, event )
+
+#define rtems_initialize_executive( conftbl, cputbl ) \
+ Empty_directive( conftbl, cputbl )
+#define rtems_shutdown_executive( the_error ) \
+ Empty_directive( the_error )
+
+#define rtems_interrupt_catch( israddr, vector, oldisr ) \
+ Empty_directive( israddr, vector, oldisr )
+
+#define rtems_partition_create( name, paddr, length, bsize, attr, ptid ) \
+ Empty_directive( name, paddr, length, bsize, attr, ptid )
+#define rtems_partition_delete( ptid ) \
+ Empty_directive( ptid )
+#define rtems_partition_get_buffer( ptid, bufaddr ) \
+ Empty_directive( ptid, bufaddr )
+#define rtems_partition_ident( name, node, ptid ) \
+ Empty_directive( name, node, ptid )
+#define rtems_partition_return_buffer( ptid, bufaddr ) \
+ Empty_directive( ptid, bufaddr )
+
+#define rtems_message_queue_broadcast( qid, buffer, count ) \
+ Empty_directive( qid, buffer, count )
+#define rtems_message_queue_create( name, count, attr, qid ) \
+ Empty_directive( name, count, attr, qid )
+#define rtems_message_queue_delete( qid ) \
+ Empty_directive( qid )
+#define rtems_message_queue_flush( qid, count ) \
+ Empty_directive( qid, count )
+#define rtems_message_queue_ident( name, node, qid ) \
+ Empty_directive( name, node, qid )
+#define rtems_message_queue_receive( qid, buffer, options, timeout ) \
+ Empty_directive( qid, buffer, options, timeout )
+#define rtems_message_queue_send( qid, buffer ) \
+ Empty_directive( qid, buffer )
+#define rtems_message_queue_urgent( qid, buffer ) \
+ Empty_directive( qid, buffer )
+
+#define rtems_region_create( name, paddr, length, pagesize, attr, rnid ) \
+ Empty_directive( name, paddr, length, pagesize, attr, rnid )
+#define rtems_region_delete( rnid ) \
+ Empty_directive( rnid )
+#define rtems_region_get_segment( rnid, size, options, timeout, segaddr ) \
+ Empty_directive( rnid, size, options, timeout, segaddr )
+#define rtems_region_ident( name, rnid ) \
+ Empty_directive( name, rnid )
+#define rtems_region_return_segment( rnid, segaddr ) \
+ Empty_directive( rnid, segaddr )
+
+#define rtems_semaphore_create( name, count, attr, smid ) \
+ Empty_directive( name, count, attr, smid )
+#define rtems_semaphore_delete( smid ) \
+ Empty_directive( smid )
+#define rtems_semaphore_ident( name, node, smid ) \
+ Empty_directive( name, node, smid )
+#define rtems_semaphore_obtain( smid, options, timeout ) \
+ Empty_directive( smid, options, timeout )
+#define rtems_semaphore_release( smid ) \
+ Empty_directive( smid )
+
+#define rtems_task_create( name, priority, stack_size, mode, attr, tid ) \
+ Empty_directive( name, priority, stack_size, mode, attr, tid )
+#define rtems_task_delete( tid ) \
+ Empty_directive( tid )
+#define rtems_task_get_note( tid, notepad, note ) \
+ Empty_directive( tid, notepad, note )
+#define rtems_task_ident( name, node, tid ) \
+ Empty_directive( name, node, tid )
+#define rtems_task_mode( mode, mask, pmode ) \
+ Empty_directive( mode, mask, pmode )
+#define rtems_task_restart( tid, arg ) \
+ Empty_directive( tid, arg )
+#define rtems_task_resume( tid ) \
+ Empty_directive( tid )
+#define rtems_task_set_note( tid, notepad, note ) \
+ Empty_directive( tid, notepad, note )
+#define rtems_task_set_priority( tid, priority, ppriority ) \
+ Empty_directive( tid, priority, ppriority )
+#define rtems_task_start( tid, saddr, arg ) \
+ Empty_directive( tid, saddr, arg )
+#define rtems_task_suspend( tid ) \
+ Empty_directive( tid )
+
+#define rtems_clock_get( options, time ) \
+ Empty_directive( options, time )
+#define rtems_clock_set( time ) \
+ Empty_directive( time )
+#define rtems_clock_tick() \
+ Empty_directive()
+#define rtems_task_wake_after( ticks ) \
+ Empty_directive( ticks )
+#define rtems_task_wake_when( time ) \
+ Empty_directive( time )
+
+#define rtems_fatal_error_occurred( errcode ) \
+ Empty_directive( errcode )
+
+#define rtems_rate_monotonic_create( name, id ) \
+ Empty_directive( name, id )
+#define rtems_rate_monotonic_ident( name, id ) \
+ Empty_directive( name, id )
+#define rtems_rate_monotonic_delete( id ) \
+ Empty_directive( id )
+#define rtems_rate_monotonic_cancel( id ) \
+ Empty_directive( id )
+#define rtems_rate_monotonic_period( id, period ) \
+ Empty_directive( id, period )
+
+#define rtems_multiprocessing_announce() \
+ Empty_directive()
+
+#define rtems_timer_create( name, tmid ) \
+ Empty_directive( name, tmid )
+#define rtems_timer_delete( tmid ) \
+ Empty_directive( tmid )
+#define rtems_timer_cancel( tmid ) \
+ Empty_directive( tmid )
+#define rtems_timer_ident( name, tmid ) \
+ Empty_directive( name, tmid )
+#define rtems_timer_fire_after( tmid, ticks, routine, user_data ) \
+ Empty_directive( tmid, ticks, routine, user_data )
+#define rtems_timer_fire_when( tmid, time, routine, user_data ) \
+ Empty_directive( tmid, time, routine, user_data )
+#define rtems_timer_reset( tmid ) \
+ Empty_directive( tmid )
+
+rtems_status_code Empty_directive();
+
+#endif
+/* end of include file */
diff --git a/testsuites/tmtests/tmoverhd/empty.c b/testsuites/tmtests/tmoverhd/empty.c
new file mode 100644
index 0000000000..dcfa33d1ed
--- /dev/null
+++ b/testsuites/tmtests/tmoverhd/empty.c
@@ -0,0 +1,41 @@
+/*
+ *
+ * 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_timer_service_routine Timer_handler(
+ rtems_id argument
+)
+{
+}
+
+rtems_asr Isr_handler(
+ rtems_signal_set signals
+)
+{
+}
+
+rtems_asr Asr_handler(
+ rtems_signal_set signals
+)
+{
+}
+
+rtems_task task_func() {}
+
+void null_func() {}
+
+rtems_status_code Empty_directive()
+{
+ return( RTEMS_SUCCESSFUL );
+}
diff --git a/testsuites/tmtests/tmoverhd/system.h b/testsuites/tmtests/tmoverhd/system.h
new file mode 100644
index 0000000000..9133506e7f
--- /dev/null
+++ b/testsuites/tmtests/tmoverhd/system.h
@@ -0,0 +1,23 @@
+/* system.h
+ *
+ * This include file is used by all tests in the Time Suite.
+ *
+ * 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 "coverhd.h"
+#include "tmacros.h"
+
+#include "timesys.h"
+#include "timegvar.h"
diff --git a/testsuites/tmtests/tmoverhd/testtask.c b/testsuites/tmtests/tmoverhd/testtask.c
new file mode 100644
index 0000000000..0586f39a35
--- /dev/null
+++ b/testsuites/tmtests/tmoverhd/testtask.c
@@ -0,0 +1,1279 @@
+/*
+ *
+ * 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_unsigned8 Memory_area[ 2048 ];
+rtems_unsigned8 Internal_port_area[ 256 ];
+rtems_unsigned8 External_port_area[ 256 ];
+
+rtems_task Task_1(
+ rtems_task_argument argument
+);
+
+rtems_task Init(
+ rtems_task_argument argument
+)
+{ rtems_id id;
+ rtems_status_code status;
+
+ Set_find_average_overhead( TRUE );
+
+ puts( "\n\n*** TIME TEST overhead ***" );
+
+ status = rtems_task_create(
+ rtems_build_name( 'T', 'A', '1', ' ' ),
+ 254,
+ 2048,
+ RTEMS_DEFAULT_MODES,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &id
+ );
+ directive_failed( status, "rtems_task_create of TA1" );
+
+ status = rtems_task_start( id, Task_1, 0 );
+ directive_failed( status, "rtems_task_start of TA1" );
+
+ status = rtems_task_delete( RTEMS_SELF );
+ directive_failed( status, "rtems_task_delete of RTEMS_SELF" );
+}
+
+/* comment out the following include to verify type are correct */
+#include "dumrtems.h"
+
+rtems_task Task_1(
+ rtems_task_argument argument
+)
+{
+ rtems_name name;
+ rtems_unsigned32 index;
+ rtems_cpu_table cpu_table;
+ rtems_id id;
+ rtems_task_priority in_priority;
+ rtems_task_priority out_priority;
+ rtems_mode in_mode;
+ rtems_mode mask;
+ rtems_mode out_mode;
+ rtems_unsigned32 note;
+ rtems_time_of_day time;
+ rtems_interval timeout;
+ rtems_signal_set signals;
+ void *address_1;
+ rtems_event_set events;
+ long buffer[ 4 ];
+ rtems_unsigned32 count;
+ rtems_device_major_number major;
+ rtems_device_minor_number minor;
+ rtems_unsigned32 io_result;
+ rtems_unsigned32 error;
+ rtems_clock_get_options options;
+
+ name = rtems_build_name( 'N', 'A', 'M', 'E' );
+ in_priority = 250;
+ in_mode = RTEMS_NO_PREEMPT;
+ mask = RTEMS_PREEMPT_MASK;
+ note = 8;
+ timeout = 100;
+ signals = RTEMS_SIGNAL_1 | RTEMS_SIGNAL_3;
+ major = 10;
+ minor = 0;
+ error = 100;
+ options = 0;
+
+/* rtems_initialize_executive */
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) rtems_initialize_executive( &BSP_Configuration, &cpu_table );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_initialize_executive",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ 0
+ );
+
+/* rtems_shutdown_executive */
+
+ Timer_initialize();
+ for ( index=1 ; index <= OPERATION_COUNT ; index++ )
+ (void) rtems_shutdown_executive( error );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_shutdown_executive",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ 0
+ );
+
+/* rtems_task_create */
+
+ Timer_initialize();
+ for ( index = 1 ; index <= OPERATION_COUNT ; index ++ )
+ (void) rtems_task_create(
+ name,
+ in_priority,
+ 2048,
+ RTEMS_DEFAULT_MODES,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &id
+ );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_task_create",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ 0
+ );
+
+/* rtems_task_ident */
+
+ Timer_initialize();
+ for ( index = 1 ; index <= OPERATION_COUNT ; index ++ )
+ (void) rtems_task_ident( name, RTEMS_SEARCH_ALL_NODES, id );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_task_ident",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ 0
+ );
+
+/* rtems_task_start */
+
+ Timer_initialize();
+ for ( index = 1 ; index <= OPERATION_COUNT ; index ++ )
+ (void) rtems_task_start( id, Task_1, 0 );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_task_start",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ 0
+ );
+
+/* rtems_task_restart */
+
+ Timer_initialize();
+ for ( index = 1 ; index <= OPERATION_COUNT ; index ++ )
+ (void) rtems_task_restart( id, 0 );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_task_restart",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ 0
+ );
+
+/* rtems_task_delete */
+
+ Timer_initialize();
+ for ( index = 1 ; index <= OPERATION_COUNT ; index ++ )
+ (void) rtems_task_delete( id );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_task_delete",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ 0
+ );
+
+/* rtems_task_suspend */
+
+ Timer_initialize();
+ for ( index = 1 ; index <= OPERATION_COUNT ; index ++ )
+ (void) rtems_task_suspend( id );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_task_suspend",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ 0
+ );
+
+/* rtems_task_resume */
+
+ Timer_initialize();
+ for ( index = 1 ; index <= OPERATION_COUNT ; index ++ )
+ (void) rtems_task_resume( id );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_task_resume",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ 0
+ );
+
+/* rtems_task_set_priority */
+
+ Timer_initialize();
+ for ( index = 1 ; index <= OPERATION_COUNT ; index ++ )
+ (void) rtems_task_set_priority( id, in_priority, &out_priority );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_task_set_priority",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ 0
+ );
+
+/* rtems_task_mode */
+
+ Timer_initialize();
+ for ( index = 1 ; index <= OPERATION_COUNT ; index ++ )
+ (void) rtems_task_mode( in_mode, mask, &out_mode );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_task_mode",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ 0
+ );
+
+/* rtems_task_get_note */
+
+ Timer_initialize();
+ for ( index = 1 ; index <= OPERATION_COUNT ; index ++ )
+ (void) rtems_task_get_note( id, 1, note );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_task_get_note",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ 0
+ );
+
+/* rtems_task_set_note */
+
+ Timer_initialize();
+ for ( index = 1 ; index <= OPERATION_COUNT ; index ++ )
+ (void) rtems_task_set_note( id, 1, note );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_task_set_note",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ 0
+ );
+
+/* rtems_task_wake_when */
+
+ Timer_initialize();
+ for ( index = 1 ; index <= OPERATION_COUNT ; index ++ )
+ (void) rtems_task_wake_when( time );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_task_wake_when",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ 0
+ );
+
+/* rtems_task_wake_after */
+
+ Timer_initialize();
+ for ( index = 1 ; index <= OPERATION_COUNT ; index ++ )
+ (void) rtems_task_wake_after( timeout );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_task_wake_after",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ 0
+ );
+
+/* rtems_interrupt_catch */
+
+ Timer_initialize();
+ for ( index = 1 ; index <= OPERATION_COUNT ; index ++ )
+ (void) rtems_interrupt_catch( Isr_handler, 5, address_1 );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_interrupt_catch",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ 0
+ );
+
+/* rtems_clock_get */
+
+ Timer_initialize();
+ for ( index = 1 ; index <= OPERATION_COUNT ; index ++ )
+ (void) rtems_clock_get( options, time );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_clock_get",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ 0
+ );
+
+/* rtems_clock_set */
+
+ Timer_initialize();
+ for ( index = 1 ; index <= OPERATION_COUNT ; index ++ )
+ (void) rtems_clock_set( time );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_clock_set",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ 0
+ );
+
+/* rtems_clock_tick */
+
+ Timer_initialize();
+ for ( index = 1 ; index <= OPERATION_COUNT ; index ++ )
+ (void) rtems_clock_tick();
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_clock_tick",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ 0
+ );
+
+pause();
+
+/* rtems_timer_create */
+
+ Timer_initialize();
+ for ( index = 1 ; index <= OPERATION_COUNT ; index ++ )
+ (void) rtems_timer_create( name, &id );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_timer_create",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ 0
+ );
+
+/* rtems_timer_delete */
+
+ Timer_initialize();
+ for ( index = 1 ; index <= OPERATION_COUNT ; index ++ )
+ (void) rtems_timer_delete( id );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_timer_delete",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ 0
+ );
+
+/* rtems_timer_ident */
+
+ Timer_initialize();
+ for ( index = 1 ; index <= OPERATION_COUNT ; index ++ )
+ (void) rtems_timer_ident( name, id );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_timer_ident",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ 0
+ );
+
+/* rtems_timer_fire_after */
+
+ Timer_initialize();
+ for ( index = 1 ; index <= OPERATION_COUNT ; index ++ )
+ (void) rtems_timer_fire_after(
+ id,
+ timeout,
+ Timer_handler,
+ NULL
+ );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_timer_fire_after",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ 0
+ );
+
+/* rtems_timer_fire_when */
+
+ Timer_initialize();
+ for ( index = 1 ; index <= OPERATION_COUNT ; index ++ )
+ (void) rtems_timer_fire_when(
+ id,
+ time,
+ Timer_handler,
+ NULL
+ );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_timer_fire_when",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ 0
+ );
+
+/* rtems_timer_reset */
+
+ Timer_initialize();
+ for ( index = 1 ; index <= OPERATION_COUNT ; index ++ )
+ (void) rtems_timer_reset( id );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_timer_reset",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ 0
+ );
+
+/* rtems_timer_cancel */
+
+ Timer_initialize();
+ for ( index = 1 ; index <= OPERATION_COUNT ; index ++ )
+ (void) rtems_timer_cancel( id );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_timer_cancel",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ 0
+ );
+
+/* rtems_semaphore_create */
+
+ Timer_initialize();
+ for ( index = 1 ; index <= OPERATION_COUNT ; index ++ )
+ (void) rtems_semaphore_create(
+ name,
+ 128,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &id
+ );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_semaphore_create",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ 0
+ );
+
+/* rtems_semaphore_delete */
+
+ Timer_initialize();
+ for ( index = 1 ; index <= OPERATION_COUNT ; index ++ )
+ (void) rtems_semaphore_delete( id );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_semaphore_delete",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ 0
+ );
+
+/* rtems_semaphore_ident */
+
+ Timer_initialize();
+ for ( index = 1 ; index <= OPERATION_COUNT ; index ++ )
+ (void) rtems_semaphore_ident( name, RTEMS_SEARCH_ALL_NODES, id );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_semaphore_ident",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ 0
+ );
+
+/* rtems_semaphore_obtain */
+
+ Timer_initialize();
+ for ( index = 1 ; index <= OPERATION_COUNT ; index ++ )
+ (void) rtems_semaphore_obtain( id, RTEMS_DEFAULT_OPTIONS, timeout );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_semaphore_obtain",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ 0
+ );
+
+/* rtems_semaphore_release */
+
+ Timer_initialize();
+ for ( index = 1 ; index <= OPERATION_COUNT ; index ++ )
+ (void) rtems_semaphore_release( id );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_semaphore_release",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ 0
+ );
+
+/* rtems_message_queue_create */
+
+ Timer_initialize();
+ for ( index = 1 ; index <= OPERATION_COUNT ; index ++ )
+ (void) rtems_message_queue_create(
+ name,
+ 128,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &id
+ );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_message_queue_create",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ 0
+ );
+
+/* rtems_message_queue_ident */
+
+ Timer_initialize();
+ for ( index = 1 ; index <= OPERATION_COUNT ; index ++ )
+ (void) rtems_message_queue_ident(
+ name,
+ RTEMS_SEARCH_ALL_NODES,
+ id
+ );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_message_queue_ident",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ 0
+ );
+
+/* rtems_message_queue_delete */
+
+ Timer_initialize();
+ for ( index = 1 ; index <= OPERATION_COUNT ; index ++ )
+ (void) rtems_message_queue_delete( id );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_message_queue_delete",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ 0
+ );
+
+/* rtems_message_queue_send */
+
+ Timer_initialize();
+ for ( index = 1 ; index <= OPERATION_COUNT ; index ++ )
+ (void) rtems_message_queue_send( id, (long (*)[4])buffer );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_message_queue_send",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ 0
+ );
+
+/* rtems_message_queue_urgent */
+
+ Timer_initialize();
+ for ( index = 1 ; index <= OPERATION_COUNT ; index ++ )
+ (void) rtems_message_queue_urgent( id, (long (*)[4])buffer );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_message_queue_urgent",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ 0
+ );
+
+/* rtems_message_queue_broadcast */
+
+ Timer_initialize();
+ for ( index = 1 ; index <= OPERATION_COUNT ; index ++ )
+ (void) rtems_message_queue_broadcast(
+ id,
+ (long (*)[4])buffer,
+ &count
+ );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_message_queue_broadcast",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ 0
+ );
+
+/* rtems_message_queue_receive */
+
+ Timer_initialize();
+ for ( index = 1 ; index <= OPERATION_COUNT ; index ++ )
+ (void) rtems_message_queue_receive(
+ id,
+ (long (*)[4])buffer,
+ RTEMS_DEFAULT_OPTIONS,
+ timeout
+ );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_message_queue_receive",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ 0
+ );
+
+/* rtems_message_queue_flush */
+
+ Timer_initialize();
+ for ( index = 1 ; index <= OPERATION_COUNT ; index ++ )
+ (void) rtems_message_queue_flush( id, &count );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_message_queue_flush",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ 0
+ );
+
+pause();
+
+/* rtems_event_send */
+
+ Timer_initialize();
+ for ( index = 1 ; index <= OPERATION_COUNT ; index ++ )
+ (void) rtems_event_send( id, events );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_event_send",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ 0
+ );
+
+/* rtems_event_receive */
+
+ Timer_initialize();
+ for ( index = 1 ; index <= OPERATION_COUNT ; index ++ )
+ (void) rtems_event_receive(
+ RTEMS_EVENT_16,
+ RTEMS_DEFAULT_OPTIONS,
+ timeout,
+ &events
+ );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_event_receive",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ 0
+ );
+
+/* rtems_signal_catch */
+
+ Timer_initialize();
+ for ( index = 1 ; index <= OPERATION_COUNT ; index ++ )
+ (void) rtems_signal_catch( Asr_handler, RTEMS_DEFAULT_MODES );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_signal_catch",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ 0
+ );
+
+/* rtems_signal_send */
+
+ Timer_initialize();
+ for ( index = 1 ; index <= OPERATION_COUNT ; index ++ )
+ (void) rtems_signal_send( id, signals );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_signal_send",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ 0
+ );
+
+/* rtems_partition_create */
+
+ Timer_initialize();
+ for ( index = 1 ; index <= OPERATION_COUNT ; index ++ )
+ (void) rtems_partition_create(
+ name,
+ Memory_area,
+ 2048,
+ 128,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &id
+ );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_partition_create",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ 0
+ );
+
+/* rtems_partition_ident */
+
+ Timer_initialize();
+ for ( index = 1 ; index <= OPERATION_COUNT ; index ++ )
+ (void) rtems_partition_ident( name, RTEMS_SEARCH_ALL_NODES, id );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_partition_ident",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ 0
+ );
+
+/* rtems_partition_delete */
+
+ Timer_initialize();
+ for ( index = 1 ; index <= OPERATION_COUNT ; index ++ )
+ (void) rtems_partition_delete( id );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_partition_delete",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ 0
+ );
+
+/* rtems_partition_get_buffer */
+
+ Timer_initialize();
+ for ( index = 1 ; index <= OPERATION_COUNT ; index ++ )
+ (void) rtems_partition_get_buffer( id, address_1 );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_partition_get_buffer",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ 0
+ );
+
+/* rtems_partition_return_buffer */
+
+ Timer_initialize();
+ for ( index = 1 ; index <= OPERATION_COUNT ; index ++ )
+ (void) rtems_partition_return_buffer( id, address_1 );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_partition_return_buffer",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ 0
+ );
+
+/* rtems_region_create */
+
+ Timer_initialize();
+ for ( index = 1 ; index <= OPERATION_COUNT ; index ++ )
+ (void) rtems_region_create(
+ name,
+ Memory_area,
+ 2048,
+ 128,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &id
+ );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_region_create",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ 0
+ );
+
+/* rtems_region_ident */
+
+ Timer_initialize();
+ for ( index = 1 ; index <= OPERATION_COUNT ; index ++ )
+ (void) rtems_region_ident( name, id );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_region_ident",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ 0
+ );
+
+/* rtems_region_delete */
+
+ Timer_initialize();
+ for ( index = 1 ; index <= OPERATION_COUNT ; index ++ )
+ (void) rtems_region_delete( id );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_region_delete",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ 0
+ );
+
+/* rtems_region_get_segment */
+
+ Timer_initialize();
+ for ( index = 1 ; index <= OPERATION_COUNT ; index ++ )
+ (void) rtems_region_get_segment(
+ id,
+ 243,
+ RTEMS_DEFAULT_OPTIONS,
+ timeout,
+ &address_1
+ );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_region_get_segment",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ 0
+ );
+
+/* rtems_region_return_segment */
+
+ Timer_initialize();
+ for ( index = 1 ; index <= OPERATION_COUNT ; index ++ )
+ (void) rtems_region_return_segment( id, address_1 );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_region_return_segment",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ 0
+ );
+
+/* rtems_port_create */
+
+ Timer_initialize();
+ for ( index = 1 ; index <= OPERATION_COUNT ; index ++ )
+ (void) rtems_port_create(
+ name,
+ Internal_port_area,
+ External_port_area,
+ 0xff,
+ &id
+ );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_port_create",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ 0
+ );
+
+/* rtems_port_ident */
+
+ Timer_initialize();
+ for ( index = 1 ; index <= OPERATION_COUNT ; index ++ )
+ (void) rtems_port_ident( name, id );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_port_ident",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ 0
+ );
+
+/* rtems_port_delete */
+
+ Timer_initialize();
+ for ( index = 1 ; index <= OPERATION_COUNT ; index ++ )
+ (void) rtems_port_delete( id );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_port_delete",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ 0
+ );
+
+/* rtems_port_external_to_internal */
+
+ Timer_initialize();
+ for ( index = 1 ; index <= OPERATION_COUNT ; index ++ )
+ (void) rtems_port_external_to_internal(
+ id,
+ &External_port_area[ 7 ],
+ address_1
+ );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_port_external_to_internal",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ 0
+ );
+
+/* rtems_port_internal_to_external */
+
+ Timer_initialize();
+ for ( index = 1 ; index <= OPERATION_COUNT ; index ++ )
+ (void) rtems_port_internal_to_external(
+ id,
+ &Internal_port_area[ 7 ],
+ address_1
+ );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_port_internal_to_external",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ 0
+ );
+
+pause();
+
+/* rtems_io_initialize */
+
+ Timer_initialize();
+ for ( index = 1 ; index <= OPERATION_COUNT ; index ++ )
+ (void) rtems_io_initialize(
+ major,
+ minor,
+ address_1,
+ &io_result
+ );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_io_initialize",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ 0
+ );
+
+/* rtems_io_open */
+
+ Timer_initialize();
+ for ( index = 1 ; index <= OPERATION_COUNT ; index ++ )
+ (void) rtems_io_open(
+ major,
+ minor,
+ address_1,
+ &io_result
+ );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_io_open",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ 0
+ );
+
+/* rtems_io_close */
+
+ Timer_initialize();
+ for ( index = 1 ; index <= OPERATION_COUNT ; index ++ )
+ (void) rtems_io_close(
+ major,
+ minor,
+ address_1,
+ &io_result
+ );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_io_close",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ 0
+ );
+
+/* rtems_io_read */
+
+ Timer_initialize();
+ for ( index = 1 ; index <= OPERATION_COUNT ; index ++ )
+ (void) rtems_io_read(
+ major,
+ minor,
+ address_1,
+ &io_result
+ );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_io_read",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ 0
+ );
+
+/* rtems_io_write */
+
+ Timer_initialize();
+ for ( index = 1 ; index <= OPERATION_COUNT ; index ++ )
+ (void) rtems_io_write(
+ major,
+ minor,
+ address_1,
+ &io_result
+ );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_io_write",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ 0
+ );
+
+/* rtems_io_control */
+
+ Timer_initialize();
+ for ( index = 1 ; index <= OPERATION_COUNT ; index ++ )
+ (void) rtems_io_control(
+ major,
+ minor,
+ address_1,
+ &io_result
+ );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_io_control",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ 0
+ );
+
+/* rtems_fatal_error_occurred */
+
+ Timer_initialize();
+ for ( index = 1 ; index <= OPERATION_COUNT ; index ++ )
+ (void) rtems_fatal_error_occurred( error );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_fatal_error_occurred",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ 0
+ );
+
+/* rtems_rate_monotonic_create */
+
+ Timer_initialize();
+ for ( index = 1 ; index <= OPERATION_COUNT ; index ++ )
+ (void) rtems_rate_monotonic_create( name, &id );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_rate_monotonic_create",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ 0
+ );
+
+/* rtems_rate_monotonic_ident */
+
+ Timer_initialize();
+ for ( index = 1 ; index <= OPERATION_COUNT ; index ++ )
+ (void) rtems_rate_monotonic_ident( name, id );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_rate_monotonic_ident",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ 0
+ );
+
+/* rtems_rate_monotonic_delete */
+
+ Timer_initialize();
+ for ( index = 1 ; index <= OPERATION_COUNT ; index ++ )
+ (void) rtems_rate_monotonic_delete( id );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_rate_monotonic_delete",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ 0
+ );
+
+/* rtems_rate_monotonic_cancel */
+
+ Timer_initialize();
+ for ( index = 1 ; index <= OPERATION_COUNT ; index ++ )
+ (void) rtems_rate_monotonic_cancel( id );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_rate_monotonic_cancel",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ 0
+ );
+
+/* rtems_rate_monotonic_period */
+
+ Timer_initialize();
+ for ( index = 1 ; index <= OPERATION_COUNT ; index ++ )
+ (void) rtems_rate_monotonic_period( id, timeout );
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_rate_monotonic_period",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ 0
+ );
+
+/* rtems_multiprocessing_announce */
+
+ Timer_initialize();
+ for ( index = 1 ; index <= OPERATION_COUNT ; index ++ )
+ (void) rtems_multiprocessing_announce();
+ end_time = Read_timer();
+
+ put_time(
+ "rtems_multiprocessing_announce",
+ end_time,
+ OPERATION_COUNT,
+ overhead,
+ 0
+ );
+
+ puts( "*** END OF TIME OVERHEAD ***\n" );
+
+ exit( 0 );
+}
diff --git a/testsuites/tmtests/tmoverhd/tmoverhd.doc b/testsuites/tmtests/tmoverhd/tmoverhd.doc
new file mode 100644
index 0000000000..0de40191c6
--- /dev/null
+++ b/testsuites/tmtests/tmoverhd/tmoverhd.doc
@@ -0,0 +1,13 @@
+#
+# $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.
+#
+
+