OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /openrisc/trunk/rtos/rtems/c/src/tests/sptests/sp24
    from Rev 30 to Rev 173
    Reverse comparison

Rev 30 → Rev 173

/resume.c
0,0 → 1,33
/* Resume_task
*
* This subprogram is scheduled as a timer service routine. When
* it fires it resumes the task which is mapped to this timer.
*
* Input parameters: NONE
*
* Output parameters: NONE
*
* COPYRIGHT (c) 1989-1999.
* On-Line Applications Research Corporation (OAR).
*
* 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: resume.c,v 1.2 2001-09-27 12:02:36 chris Exp $
*/
 
#include "system.h"
 
rtems_timer_service_routine Resume_task(
rtems_id timer_id,
void *ignored_address
)
{
rtems_id task_to_resume;
rtems_status_code status;
 
task_to_resume = Task_id[ rtems_get_index( timer_id ) ];
status = rtems_task_resume( task_to_resume );
directive_failed_with_level( status, "rtems_task_resume", 1 );
}
/init.c
0,0 → 1,75
/* Init
*
* This routine is the initialization task for this test program.
* It is a user initialization task and has the responsibility for creating
* and starting the tasks that make up the test. If the time of day
* clock is required for the test, it should also be set to a known
* value by this function.
*
* Input parameters:
* argument - task argument
*
* Output parameters: NONE
*
* COPYRIGHT (c) 1989-1999.
* On-Line Applications Research Corporation (OAR).
*
* 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: init.c,v 1.2 2001-09-27 12:02:36 chris Exp $
*/
 
#define TEST_INIT
#include "system.h"
 
rtems_task Init(
rtems_task_argument argument
)
{
rtems_time_of_day time;
rtems_unsigned32 index;
rtems_status_code status;
 
puts( "\n\n*** TEST 24 ***" );
 
build_time( &time, 12, 31, 1988, 9, 0, 0, 0 );
 
status = rtems_clock_set( &time );
directive_failed( status, "rtems_clock_set" );
 
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', ' ' );
 
Timer_name[ 1 ] = rtems_build_name( 'T', 'M', '1', ' ' );
Timer_name[ 2 ] = rtems_build_name( 'T', 'M', '2', ' ' );
Timer_name[ 3 ] = rtems_build_name( 'T', 'M', '3', ' ' );
 
for ( index = 1 ; index <= 3 ; index++ ) {
status = rtems_task_create(
Task_name[ index ],
1,
RTEMS_MINIMUM_STACK_SIZE * 2,
RTEMS_DEFAULT_MODES,
RTEMS_DEFAULT_ATTRIBUTES,
&Task_id[ index ]
);
directive_failed( status, "rtems_task_create loop" );
 
status = rtems_timer_create(
Timer_name[ index ],
&Timer_id[ index ]
);
directive_failed( status, "rtems_timer_create loop" );
}
 
for ( index = 1 ; index <= 3 ; index++ ) {
status = rtems_task_start( Task_id[ index ], Task_1_through_3, index );
directive_failed( status, "rtems_task_start loop" );
}
 
status = rtems_task_delete( RTEMS_SELF );
directive_failed( status, "rtems_task_delete of RTEMS_SELF" );
}
/task1.c
0,0 → 1,57
/* Task_1_through_3
*
* This task is a cyclic version of test1 to asssure that the times
* displayed are not skewed as in test1. "TA1" is printed once every
* 5 seconds, "TA2" is printed once every 10 seconds, and "TA3" is
* printed once every 15 seconds. The times displayed should be
* in multiples of 5, 10, and 15 for TA1, TA2, and TA3 respectively.
* If the times are skewed from these values, then the calendar time
* does not correspond correctly with the number of ticks.
*
* COPYRIGHT (c) 1989-1999.
* On-Line Applications Research Corporation (OAR).
*
* 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: task1.c,v 1.2 2001-09-27 12:02:36 chris Exp $
*/
 
#include "system.h"
 
rtems_task Task_1_through_3(
rtems_task_argument argument
)
{
rtems_id tid;
rtems_time_of_day time;
rtems_status_code status;
 
status = rtems_task_ident( RTEMS_SELF, RTEMS_SEARCH_ALL_NODES, &tid );
directive_failed( status, "rtems_task_ident of self" );
 
while ( FOREVER ) {
status = rtems_timer_fire_after(
Timer_id[ argument ],
task_number( tid ) * 5 * TICKS_PER_SECOND,
Resume_task,
NULL
);
directive_failed( status, "tm_fire_after failed" );
 
status = rtems_clock_get( RTEMS_CLOCK_GET_TOD, &time );
directive_failed( status, "rtems_clock_get failed" );
 
if ( time.second >= 35 ) {
puts( "*** END OF TEST 24 ***" );
exit( 0 );
}
 
put_name( Task_name[ task_number( tid ) ], FALSE );
print_time( " - rtems_clock_get - ", &time, "\n" );
 
status = rtems_task_suspend( RTEMS_SELF );
directive_failed( status, "rtems_task_suspend" );
}
}
/Makefile.am
0,0 → 1,38
##
## $Id: Makefile.am,v 1.2 2001-09-27 12:02:36 chris Exp $
##
 
AUTOMAKE_OPTIONS = foreign 1.4
 
TEST = sp24
 
MANAGERS = io event timer
 
C_FILES = init.c resume.c task1.c
C_O_FILES = $(C_FILES:%.c=${ARCH}/%.o)
 
H_FILES = system.h
noinst_HEADERS = $(H_FILES)
 
DOCTYPES = scn doc
DOCS = $(DOCTYPES:%=$(TEST).%)
 
SRCS = $(C_FILES) $(H_FILES)
OBJS = $(C_O_FILES)
 
PRINT_SRCS = $(DOCS)
 
PGM = ${ARCH}/$(TEST).exe
 
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
include $(RTEMS_ROOT)/make/leaf.cfg
include $(top_srcdir)/sptests.am
 
${PGM}: $(OBJS) $(LINK_FILES)
$(make-exe)
 
all-local: $(ARCH) $(TMPINSTALL_FILES)
 
EXTRA_DIST = $(C_FILES) $(DOCS)
 
include $(top_srcdir)/../../../../automake/local.am
/sp24.scn
0,0 → 1,16
*** TEST 24 ***
TA1 - rtems_clock_get - 09:00:00 12/31/1988
TA2 - rtems_clock_get - 09:00:00 12/31/1988
TA3 - rtems_clock_get - 09:00:00 12/31/1988
TA1 - rtems_clock_get - 09:00:05 12/31/1988
TA2 - rtems_clock_get - 09:00:10 12/31/1988
TA1 - rtems_clock_get - 09:00:10 12/31/1988
TA3 - rtems_clock_get - 09:00:15 12/31/1988
TA1 - rtems_clock_get - 09:00:15 12/31/1988
TA2 - rtems_clock_get - 09:00:20 12/31/1988
TA1 - rtems_clock_get - 09:00:20 12/31/1988
TA1 - rtems_clock_get - 09:00:25 12/31/1988
TA3 - rtems_clock_get - 09:00:30 12/31/1988
TA2 - rtems_clock_get - 09:00:30 12/31/1988
TA1 - rtems_clock_get - 09:00:30 12/31/1988
*** END OF TEST 24 ***
/system.h
0,0 → 1,55
/* system.h
*
* This include file contains information that is included in every
* function in the test set.
*
* COPYRIGHT (c) 1989-1999.
* On-Line Applications Research Corporation (OAR).
*
* 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: system.h,v 1.2 2001-09-27 12:02:36 chris Exp $
*/
 
#include <tmacros.h>
 
/* functions */
 
rtems_task Init(
rtems_task_argument argument
);
rtems_timer_service_routine Resume_task(
rtems_id timer_id,
void *ignored_address
);
rtems_task Task_1_through_3(
rtems_task_argument argument
);
 
/* configuration information */
 
#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
 
#define CONFIGURE_MAXIMUM_TASKS 4
#define CONFIGURE_MAXIMUM_TIMERS 3
 
#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
 
#define CONFIGURE_EXTRA_TASK_STACKS (3 * RTEMS_MINIMUM_STACK_SIZE)
 
#include <confdefs.h>
 
/* global variables */
 
TEST_EXTERN rtems_id Task_id[ 4 ]; /* array of task ids */
TEST_EXTERN rtems_name Task_name[ 4 ]; /* array of task names */
 
TEST_EXTERN rtems_id Timer_id[ 4 ]; /* array of timer ids */
TEST_EXTERN rtems_name Timer_name[ 4 ]; /* array of timer names */
 
/* end of include file */
/sp24.doc
0,0 → 1,50
#
# $Id: sp24.doc,v 1.7 1999/11/17 17:51:33 joel Exp $
#
# COPYRIGHT (c) 1989-1999.
# On-Line Applications Research Corporation (OAR).
#
# 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: test24
 
directives:
ex_init, ex_start, t_create, t_start, tm_tick, i_return, t_ident,
ev_receive
 
concepts:
 
a. This test is a cyclic version of test1. The times printed by
each test should not skew as in test1 (see output section).
 
b. Verifies system can create and start both the executive's system
initialization and idle task.
 
c. Verifies executive can swap between three application tasks at the
same priority and the executive's internal idle task.
 
d. Verifies can print strings to the CRT on port 2 of the mvme136 board
using Print and Println in the board support package.
 
e. Verifies interrupt handler can handler a task switch from an interrupt
as specified with the i_return directive.
 
f. Verifies executive initialization performed correctly.
 
g. Verifies the executive trap handler except for the halt function.
 
h. Verifies that a task can get the task identification number of itself.
 
output:
"TA1" is printed once every 5 seconds. "TA2" is printed once
every 10 seconds. "TA3" is printed once every 15 seconds.
 
The times printed should be multiples of 5 seconds for TA1, 10 seconds
for TA2, and 15 seconds for TA3. If this does not happen, the calendar
time does not correspond correctly to the number of ticks.

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.