From ac7d5ef06a6d6e8d84abbd1f0b82162725f98326 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Thu, 11 May 1995 17:39:37 +0000 Subject: Initial revision --- testsuites/tmtests/README | 21 + testsuites/tmtests/include/timesys.h | 30 + testsuites/tmtests/tm01/system.h | 23 + testsuites/tmtests/tm01/task1.c | 187 +++++ testsuites/tmtests/tm01/tm01.doc | 13 + testsuites/tmtests/tm02/system.h | 23 + testsuites/tmtests/tm02/task1.c | 156 ++++ testsuites/tmtests/tm02/tm02.doc | 13 + testsuites/tmtests/tm03/system.h | 23 + testsuites/tmtests/tm03/task1.c | 149 ++++ testsuites/tmtests/tm03/tm03.doc | 13 + testsuites/tmtests/tm04/system.h | 23 + testsuites/tmtests/tm04/task1.c | 387 +++++++++ testsuites/tmtests/tm04/tm04.doc | 13 + testsuites/tmtests/tm05/system.h | 23 + testsuites/tmtests/tm05/task1.c | 132 +++ testsuites/tmtests/tm05/tm05.doc | 13 + testsuites/tmtests/tm06/system.h | 23 + testsuites/tmtests/tm06/task1.c | 162 ++++ testsuites/tmtests/tm06/tm06.doc | 13 + testsuites/tmtests/tm07/system.h | 23 + testsuites/tmtests/tm07/task1.c | 120 +++ testsuites/tmtests/tm07/tm07.doc | 13 + testsuites/tmtests/tm08/system.h | 23 + testsuites/tmtests/tm08/task1.c | 255 ++++++ testsuites/tmtests/tm08/tm08.doc | 13 + testsuites/tmtests/tm09/system.h | 23 + testsuites/tmtests/tm09/task1.c | 221 ++++++ testsuites/tmtests/tm09/tm09.doc | 13 + testsuites/tmtests/tm10/system.h | 23 + testsuites/tmtests/tm10/task1.c | 156 ++++ testsuites/tmtests/tm10/tm10.doc | 13 + testsuites/tmtests/tm11/system.h | 23 + testsuites/tmtests/tm11/task1.c | 148 ++++ testsuites/tmtests/tm11/tm11.doc | 13 + testsuites/tmtests/tm12/system.h | 23 + testsuites/tmtests/tm12/task1.c | 142 ++++ testsuites/tmtests/tm12/tm12.doc | 13 + testsuites/tmtests/tm13/system.h | 23 + testsuites/tmtests/tm13/task1.c | 147 ++++ testsuites/tmtests/tm13/tm13.doc | 13 + testsuites/tmtests/tm14/system.h | 23 + testsuites/tmtests/tm14/task1.c | 142 ++++ testsuites/tmtests/tm14/tm14.doc | 13 + testsuites/tmtests/tm15/system.h | 23 + testsuites/tmtests/tm15/task1.c | 222 ++++++ testsuites/tmtests/tm15/tm15.doc | 13 + testsuites/tmtests/tm16/system.h | 23 + testsuites/tmtests/tm16/task1.c | 148 ++++ testsuites/tmtests/tm16/tm16.doc | 13 + testsuites/tmtests/tm17/system.h | 23 + testsuites/tmtests/tm17/task1.c | 127 +++ testsuites/tmtests/tm17/tm17.doc | 13 + testsuites/tmtests/tm18/system.h | 23 + testsuites/tmtests/tm18/task1.c | 112 +++ testsuites/tmtests/tm18/tm18.doc | 13 + testsuites/tmtests/tm19/system.h | 23 + testsuites/tmtests/tm19/task1.c | 212 +++++ testsuites/tmtests/tm19/tm19.doc | 13 + testsuites/tmtests/tm20/system.h | 23 + testsuites/tmtests/tm20/task1.c | 467 +++++++++++ testsuites/tmtests/tm20/tm20.doc | 13 + testsuites/tmtests/tm21/system.h | 23 + testsuites/tmtests/tm21/task1.c | 234 ++++++ testsuites/tmtests/tm21/tm21.doc | 13 + testsuites/tmtests/tm22/system.h | 23 + testsuites/tmtests/tm22/task1.c | 193 +++++ testsuites/tmtests/tm22/tm22.doc | 13 + testsuites/tmtests/tm23/system.h | 23 + testsuites/tmtests/tm23/task1.c | 302 +++++++ testsuites/tmtests/tm23/tm23.doc | 13 + testsuites/tmtests/tm24/system.h | 23 + testsuites/tmtests/tm24/task1.c | 124 +++ testsuites/tmtests/tm24/tm24.doc | 13 + testsuites/tmtests/tm25/system.h | 23 + testsuites/tmtests/tm25/task1.c | 108 +++ testsuites/tmtests/tm25/tm25.doc | 13 + testsuites/tmtests/tm26/fptest.h | 165 ++++ testsuites/tmtests/tm26/system.h | 23 + testsuites/tmtests/tm26/task1.c | 470 +++++++++++ testsuites/tmtests/tm26/tm26.doc | 13 + testsuites/tmtests/tm27/system.h | 23 + testsuites/tmtests/tm27/task1.c | 237 ++++++ testsuites/tmtests/tm27/tm27.doc | 13 + testsuites/tmtests/tm28/system.h | 23 + testsuites/tmtests/tm28/task1.c | 134 ++++ testsuites/tmtests/tm28/tm28.doc | 13 + testsuites/tmtests/tm29/system.h | 23 + testsuites/tmtests/tm29/task1.c | 207 +++++ testsuites/tmtests/tm29/tm29.doc | 13 + testsuites/tmtests/tmck/system.h | 23 + testsuites/tmtests/tmck/task1.c | 180 +++++ testsuites/tmtests/tmck/tmck.doc | 20 + testsuites/tmtests/tmoverhd/dumrtems.h | 255 ++++++ testsuites/tmtests/tmoverhd/empty.c | 41 + testsuites/tmtests/tmoverhd/system.h | 23 + testsuites/tmtests/tmoverhd/testtask.c | 1279 ++++++++++++++++++++++++++++++ testsuites/tmtests/tmoverhd/tmoverhd.doc | 13 + 98 files changed, 8895 insertions(+) create mode 100644 testsuites/tmtests/README create mode 100644 testsuites/tmtests/include/timesys.h create mode 100644 testsuites/tmtests/tm01/system.h create mode 100644 testsuites/tmtests/tm01/task1.c create mode 100644 testsuites/tmtests/tm01/tm01.doc create mode 100644 testsuites/tmtests/tm02/system.h create mode 100644 testsuites/tmtests/tm02/task1.c create mode 100644 testsuites/tmtests/tm02/tm02.doc create mode 100644 testsuites/tmtests/tm03/system.h create mode 100644 testsuites/tmtests/tm03/task1.c create mode 100644 testsuites/tmtests/tm03/tm03.doc create mode 100644 testsuites/tmtests/tm04/system.h create mode 100644 testsuites/tmtests/tm04/task1.c create mode 100644 testsuites/tmtests/tm04/tm04.doc create mode 100644 testsuites/tmtests/tm05/system.h create mode 100644 testsuites/tmtests/tm05/task1.c create mode 100644 testsuites/tmtests/tm05/tm05.doc create mode 100644 testsuites/tmtests/tm06/system.h create mode 100644 testsuites/tmtests/tm06/task1.c create mode 100644 testsuites/tmtests/tm06/tm06.doc create mode 100644 testsuites/tmtests/tm07/system.h create mode 100644 testsuites/tmtests/tm07/task1.c create mode 100644 testsuites/tmtests/tm07/tm07.doc create mode 100644 testsuites/tmtests/tm08/system.h create mode 100644 testsuites/tmtests/tm08/task1.c create mode 100644 testsuites/tmtests/tm08/tm08.doc create mode 100644 testsuites/tmtests/tm09/system.h create mode 100644 testsuites/tmtests/tm09/task1.c create mode 100644 testsuites/tmtests/tm09/tm09.doc create mode 100644 testsuites/tmtests/tm10/system.h create mode 100644 testsuites/tmtests/tm10/task1.c create mode 100644 testsuites/tmtests/tm10/tm10.doc create mode 100644 testsuites/tmtests/tm11/system.h create mode 100644 testsuites/tmtests/tm11/task1.c create mode 100644 testsuites/tmtests/tm11/tm11.doc create mode 100644 testsuites/tmtests/tm12/system.h create mode 100644 testsuites/tmtests/tm12/task1.c create mode 100644 testsuites/tmtests/tm12/tm12.doc create mode 100644 testsuites/tmtests/tm13/system.h create mode 100644 testsuites/tmtests/tm13/task1.c create mode 100644 testsuites/tmtests/tm13/tm13.doc create mode 100644 testsuites/tmtests/tm14/system.h create mode 100644 testsuites/tmtests/tm14/task1.c create mode 100644 testsuites/tmtests/tm14/tm14.doc create mode 100644 testsuites/tmtests/tm15/system.h create mode 100644 testsuites/tmtests/tm15/task1.c create mode 100644 testsuites/tmtests/tm15/tm15.doc create mode 100644 testsuites/tmtests/tm16/system.h create mode 100644 testsuites/tmtests/tm16/task1.c create mode 100644 testsuites/tmtests/tm16/tm16.doc create mode 100644 testsuites/tmtests/tm17/system.h create mode 100644 testsuites/tmtests/tm17/task1.c create mode 100644 testsuites/tmtests/tm17/tm17.doc create mode 100644 testsuites/tmtests/tm18/system.h create mode 100644 testsuites/tmtests/tm18/task1.c create mode 100644 testsuites/tmtests/tm18/tm18.doc create mode 100644 testsuites/tmtests/tm19/system.h create mode 100644 testsuites/tmtests/tm19/task1.c create mode 100644 testsuites/tmtests/tm19/tm19.doc create mode 100644 testsuites/tmtests/tm20/system.h create mode 100644 testsuites/tmtests/tm20/task1.c create mode 100644 testsuites/tmtests/tm20/tm20.doc create mode 100644 testsuites/tmtests/tm21/system.h create mode 100644 testsuites/tmtests/tm21/task1.c create mode 100644 testsuites/tmtests/tm21/tm21.doc create mode 100644 testsuites/tmtests/tm22/system.h create mode 100644 testsuites/tmtests/tm22/task1.c create mode 100644 testsuites/tmtests/tm22/tm22.doc create mode 100644 testsuites/tmtests/tm23/system.h create mode 100644 testsuites/tmtests/tm23/task1.c create mode 100644 testsuites/tmtests/tm23/tm23.doc create mode 100644 testsuites/tmtests/tm24/system.h create mode 100644 testsuites/tmtests/tm24/task1.c create mode 100644 testsuites/tmtests/tm24/tm24.doc create mode 100644 testsuites/tmtests/tm25/system.h create mode 100644 testsuites/tmtests/tm25/task1.c create mode 100644 testsuites/tmtests/tm25/tm25.doc create mode 100644 testsuites/tmtests/tm26/fptest.h create mode 100644 testsuites/tmtests/tm26/system.h create mode 100644 testsuites/tmtests/tm26/task1.c create mode 100644 testsuites/tmtests/tm26/tm26.doc create mode 100644 testsuites/tmtests/tm27/system.h create mode 100644 testsuites/tmtests/tm27/task1.c create mode 100644 testsuites/tmtests/tm27/tm27.doc create mode 100644 testsuites/tmtests/tm28/system.h create mode 100644 testsuites/tmtests/tm28/task1.c create mode 100644 testsuites/tmtests/tm28/tm28.doc create mode 100644 testsuites/tmtests/tm29/system.h create mode 100644 testsuites/tmtests/tm29/task1.c create mode 100644 testsuites/tmtests/tm29/tm29.doc create mode 100644 testsuites/tmtests/tmck/system.h create mode 100644 testsuites/tmtests/tmck/task1.c create mode 100644 testsuites/tmtests/tmck/tmck.doc create mode 100644 testsuites/tmtests/tmoverhd/dumrtems.h create mode 100644 testsuites/tmtests/tmoverhd/empty.c create mode 100644 testsuites/tmtests/tmoverhd/system.h create mode 100644 testsuites/tmtests/tmoverhd/testtask.c create mode 100644 testsuites/tmtests/tmoverhd/tmoverhd.doc (limited to 'testsuites/tmtests') 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 + +#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 + +#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 + +#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 + +#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 + +#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 + +#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 + +#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 + +#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 + +#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 + +#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 + +#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 + +#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 + +#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 + +#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 + +#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 + +#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 + +#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 + +#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 + +#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 + +#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 + +#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 + +#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 + +#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 + +#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 + +#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 + +#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 + +#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 +#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 + +#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 + +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 + +#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 + +#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 + +#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 + +#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. +# + + -- cgit v1.2.3