From e0991809991a2c5547d45881978212d5efc0e1de Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Tue, 9 Nov 1999 23:27:05 +0000 Subject: Merged tests from Task group. --- testsuites/itrontests/itrontask04/init.c | 85 +++++++++++++++++++++++ testsuites/itrontests/itrontask04/itrontask04.doc | 23 ++++++ testsuites/itrontests/itrontask04/itrontask04.scn | 35 ++++++++++ testsuites/itrontests/itrontask04/system.h | 44 ++++++++++++ testsuites/itrontests/itrontask04/task1.c | 45 ++++++++++++ testsuites/itrontests/itrontask04/task2.c | 41 +++++++++++ testsuites/itrontests/itrontask04/task3.c | 53 ++++++++++++++ 7 files changed, 326 insertions(+) create mode 100644 testsuites/itrontests/itrontask04/init.c create mode 100644 testsuites/itrontests/itrontask04/itrontask04.doc create mode 100644 testsuites/itrontests/itrontask04/itrontask04.scn create mode 100644 testsuites/itrontests/itrontask04/system.h create mode 100644 testsuites/itrontests/itrontask04/task1.c create mode 100644 testsuites/itrontests/itrontask04/task2.c create mode 100644 testsuites/itrontests/itrontask04/task3.c (limited to 'testsuites/itrontests/itrontask04') diff --git a/testsuites/itrontests/itrontask04/init.c b/testsuites/itrontests/itrontask04/init.c new file mode 100644 index 0000000000..582bb77df8 --- /dev/null +++ b/testsuites/itrontests/itrontask04/init.c @@ -0,0 +1,85 @@ + /* Init + * + * This routine is the initialization task for this test program. + * It is called from init_exec and has the responsibility for creating + * and starting the tasks that make up the test. If the time of day + * clock is required for the test, it should also be set to a known + * value by this function. + * + * Input parameters: NONE + * + * Output parameters: NONE + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.OARcorp.com/rtems/license.html. + * + * $Id$ + */ + +#define TEST_INIT +#include "system.h" +#include + +void ITRON_Init( void ) +{ + ER status; + T_CTSK pk_ctsk; + + puts( "\n\n*** ITRON TEST 6 ***" ); + + status = chg_pri( 0, 20 ); + directive_failed( status, "chg_pri to 20" ); + + pk_ctsk.exinf = NULL; + pk_ctsk.tskatr = TA_HLNG; + pk_ctsk.stksz = RTEMS_MINIMUM_STACK_SIZE; + pk_ctsk.itskpri = 2; + + pk_ctsk.task = Task_1; + status = cre_tsk( TA1_ID, &pk_ctsk ); + directive_failed( status, "cre_tsk of TA1" ); + + pk_ctsk.task = Task_2; + status = cre_tsk( TA2_ID, &pk_ctsk ); + directive_failed( status, "cre_tsk of TA2" ); + + pk_ctsk.itskpri = 1; + pk_ctsk.task = Task_3; + status = cre_tsk( TA3_ID, &pk_ctsk ); + directive_failed( status, "cre_tsk of TA3" ); + + puts("INIT - dis_dsp while starting tasks"); + status = dis_dsp( ); + directive_failed( status, "dis_dsp from ITRON_Init" ); + status = sta_tsk( TA1_ID, 0 ); + directive_failed( status, "sta_tsk of TA1" ); + status = sta_tsk( TA2_ID, 0 ); + directive_failed( status, "sta_tsk of TA2" ); + status = sta_tsk( TA3_ID, 0 ); + directive_failed( status, "sta_tsk of TA3" ); + + puts( "INIT - suspending TA2 3 times" ); + status = sus_tsk( TA2_ID ); + directive_failed( status, "sus_tsk of TA2" ); + status = sus_tsk( TA2_ID ); + directive_failed( status, "sus_tsk of TA2" ); + status = sus_tsk( TA2_ID ); + directive_failed( status, "sus_tsk of TA2" ); + + puts("INIT - ena_dsp while starting tasks"); + status = ena_dsp( ); + + puts( "INIT - suspending TA1 3 times" ); + status = sus_tsk( TA1_ID ); + directive_failed( status, "sus_tsk of TA2" ); + status = sus_tsk( TA1_ID ); + directive_failed( status, "sus_tsk of TA2" ); + status = sus_tsk( TA1_ID ); + directive_failed( status, "sus_tsk of TA2" ); + + puts("INIT - exd_tsk"); + exd_tsk(); + directive_failed( 0, "exd_tsk" ); +} + diff --git a/testsuites/itrontests/itrontask04/itrontask04.doc b/testsuites/itrontests/itrontask04/itrontask04.doc new file mode 100644 index 0000000000..a4c7d592a9 --- /dev/null +++ b/testsuites/itrontests/itrontask04/itrontask04.doc @@ -0,0 +1,23 @@ +# +# $Id$ +# +# COPYRIGHT (c) 1989-1998. +# On-Line Applications Research Corporation (OAR). +# Copyright assigned to U.S. Government, 1994. +# +# The license and distribution terms for this file may be +# found in the file LICENSE in this distribution or at +# http://www.OARcorp.com/rtems/license.html. +# + +This file describes the directives and concepts tested by this test set. + +test set name: 2 + This test check task suspend and resume functionality. + +directives: + +concepts: + + a. + diff --git a/testsuites/itrontests/itrontask04/itrontask04.scn b/testsuites/itrontests/itrontask04/itrontask04.scn new file mode 100644 index 0000000000..51c370cfb5 --- /dev/null +++ b/testsuites/itrontests/itrontask04/itrontask04.scn @@ -0,0 +1,35 @@ +*** ITRON TEST 6 *** +INIT - dis_dsp while starting tasks +INIT - suspending TA2 3 times +INIT - ena_dsp while starting tasks +TA3 - frsm_tsk TA1 +TA3 - rsm_tsk TA2 +TA3 - rot_rdq priority 2 queue +TA3 - rtems_task_wake_after - sleep 1 second +TA2 - rtems_task_suspend RTEMS_SELF +INIT - suspending TA1 3 times +INIT - exd_tsk +TA3 - frsm_tsk TA1 +TA3 - rsm_tsk TA2 +TA3 - rot_rdq priority 2 queue +TA3 - rtems_task_wake_after - sleep 1 second +TA2 - rtems_task_suspend RTEMS_SELF +TA3 - frsm_tsk TA1 +TA3 - rsm_tsk TA2 +TA3 - rot_rdq priority 2 queue +TA3 - rtems_task_wake_after - sleep 1 second +TA2 - rtems_task_suspend RTEMS_SELF +TA2 - rtems_task_suspend RTEMS_SELF +TA3 - frsm_tsk TA1 +TA3 - rsm_tsk TA2 +TA3 - rot_rdq priority 2 queue +TA3 - rtems_task_wake_after - sleep 1 second +TA2 - rtems_task_suspend RTEMS_SELF +TA2 - rtems_task_suspend RTEMS_SELF +TA3 - frsm_tsk TA1 +TA3 - rsm_tsk TA2 +TA3 - rot_rdq priority 2 queue +TA3 - rtems_task_wake_after - sleep 1 second +TA2 - rtems_task_suspend RTEMS_SELF +TA2 - rtems_task_suspend RTEMS_SELF +*** END OF TEST 6 *** diff --git a/testsuites/itrontests/itrontask04/system.h b/testsuites/itrontests/itrontask04/system.h new file mode 100644 index 0000000000..51af0eaca6 --- /dev/null +++ b/testsuites/itrontests/itrontask04/system.h @@ -0,0 +1,44 @@ +/* system.h + * + * This include file contains information that is included in every + * function in the test set. + * + * COPYRIGHT (c) 1989-1998. + * On-Line Applications Research Corporation (OAR). + * Copyright assigned to U.S. Government, 1994. + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.OARcorp.com/rtems/license.html. + * + * $Id$ + */ + +#include + +/* functions */ + +void ITRON_Init( void ); +void Preempt_task(); +void Task_1(); +void Task_2(); +void Task_3(); + +/* configuration information */ + +#define CONFIGURE_TEST_NEEDS_CONSOLE_DRIVER +#define CONFIGURE_TEST_NEEDS_CLOCK_DRIVER +#define CONFIGURE_ITRON_INIT_TASK_TABLE + +#include + +/* global variables */ + +#define PREEMPT_TASK_ID 2 +#define TA1_ID 3 +#define TA2_ID 4 +#define TA3_ID 5 + +TEST_EXTERN rtems_id Global_variable; /* example global variable */ + +/* end of include file */ diff --git a/testsuites/itrontests/itrontask04/task1.c b/testsuites/itrontests/itrontask04/task1.c new file mode 100644 index 0000000000..aff26e15f2 --- /dev/null +++ b/testsuites/itrontests/itrontask04/task1.c @@ -0,0 +1,45 @@ +/* Task_1 + * + * This routine serves as a test task. It verifies the task manager. + * + * Input parameters: + * argument - task argument + * + * Output parameters: NONE + * + * COPYRIGHT (c) 1989-1998. + * On-Line Applications Research Corporation (OAR). + * Copyright assigned to U.S. Government, 1994. + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.OARcorp.com/rtems/license.html. + * + * $Id$ + */ + +#include "system.h" + +/* + * XXX - This test requires tasks to suspend self, yet ITRON defines + * this as an error. + */ + +void Task_1() +{ + rtems_status_code status; + + while (1) { + + puts( "TA2 - rtems_task_suspend RTEMS_SELF" ); + status = rtems_task_suspend( RTEMS_SELF ); + directive_failed( status, "TA2 rtems_task_suspend RTEMS_SELF" ); + + } +} + + + + + + diff --git a/testsuites/itrontests/itrontask04/task2.c b/testsuites/itrontests/itrontask04/task2.c new file mode 100644 index 0000000000..b5c08db60d --- /dev/null +++ b/testsuites/itrontests/itrontask04/task2.c @@ -0,0 +1,41 @@ +/* Task_2 + * + * This routine serves as a test task. It sleeps for 1 minute but + * does not expect to wake up. Task 1 should suspend then delete it + * so that it appears to never wake up. + * + * Input parameters: + * argument - task argument + * + * Output parameters: NONE + * + * COPYRIGHT (c) 1989-1998. + * On-Line Applications Research Corporation (OAR). + * Copyright assigned to U.S. Government, 1994. + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.OARcorp.com/rtems/license.html. + * + * $Id$ + */ + +#include "system.h" + +/* + * XXX - This test requires tasks to suspend self, yet ITRON defines + * this as an error. + */ + +void Task_2() +{ + rtems_status_code status; + + while (1) { + + puts( "TA2 - rtems_task_suspend RTEMS_SELF" ); + status = rtems_task_suspend( RTEMS_SELF ); + directive_failed( status, "TA2 rtems_task_suspend RTEMS_SELF" ); + + } +} diff --git a/testsuites/itrontests/itrontask04/task3.c b/testsuites/itrontests/itrontask04/task3.c new file mode 100644 index 0000000000..e7c6afc946 --- /dev/null +++ b/testsuites/itrontests/itrontask04/task3.c @@ -0,0 +1,53 @@ +/* Task_3 + * + * This routine serves as a test task. It simply sleeps for 5 seconds + * and then deletes itself. + * + * Input parameters: + * argument - task argument + * + * Output parameters: NONE + * + * COPYRIGHT (c) 1989-1998. + * On-Line Applications Research Corporation (OAR). + * Copyright assigned to U.S. Government, 1994. + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.OARcorp.com/rtems/license.html. + * + * $Id$ + */ + +#include "system.h" + +void Task_3() +{ + rtems_status_code status; + int i; + + for(i=0; i<5; i++) { + puts("TA3 - frsm_tsk TA1"); + status = frsm_tsk( TA1_ID ); + directive_failed( status, "TA3 - frsm_tsk TA1" ); + + puts("TA3 - rsm_tsk TA2"); + status = rsm_tsk( TA2_ID ); + directive_failed( status, "TA3 - rsm_tsk TA2" ); + + puts( "TA3 - rot_rdq priority 2 queue"); + status = rot_rdq( 2 ); + directive_failed( status, "rot_rdq for 2" ); + + /* + * XXX - Convert Later. + */ + + puts( "TA3 - rtems_task_wake_after - sleep 1 second" ); + status = rtems_task_wake_after( TICKS_PER_SECOND ); + directive_failed( status, "rtems_task_wake_after in TA3" ); + } + + puts( "*** END OF TEST 6 ***" ); + exit( 0 ); +} -- cgit v1.2.3