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/sp20
- from Rev 30 to Rev 173
- ↔ Reverse comparison
Rev 30 → Rev 173
/init.c
0,0 → 1,67
/* 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:35 chris Exp $ |
*/ |
|
#define TEST_INIT |
#include "system.h" |
|
rtems_task Init( |
rtems_task_argument argument |
) |
{ |
rtems_unsigned32 index; |
rtems_status_code status; |
|
puts( "\n\n*** TEST 20 ***" ); |
|
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', ' ' ); |
Task_name[ 4 ] = rtems_build_name( 'T', 'A', '4', ' ' ); |
Task_name[ 5 ] = rtems_build_name( 'T', 'A', '5', ' ' ); |
|
for ( index = 1 ; index <= 5 ; index++ ) { |
status = rtems_task_create( |
Task_name[ index ], |
Priorities[ index ], |
RTEMS_MINIMUM_STACK_SIZE * 4, |
RTEMS_DEFAULT_MODES, |
RTEMS_DEFAULT_ATTRIBUTES, |
&Task_id[ index ] |
); |
directive_failed( status, "rtems_task_create loop" ); |
} |
|
for ( index = 1 ; index <= 5 ; index++ ) { |
status = rtems_task_start( Task_id[ index ], Task_1_through_5, index ); |
directive_failed( status, "rtems_task_start loop" ); |
} |
|
Count.count[ 1 ] = 0; |
Count.count[ 2 ] = 0; |
Count.count[ 3 ] = 0; |
Count.count[ 4 ] = 0; |
Count.count[ 5 ] = 0; |
|
status = rtems_task_delete( RTEMS_SELF ); |
directive_failed( status, "rtems_task_delete of RTEMS_SELF" ); |
} |
/task1.c
0,0 → 1,115
/* Task_1_through_5 |
* |
* This routine serves as a test task for the period capabilities of the |
* Rate Monotonic Manager. |
* |
* 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: task1.c,v 1.2 2001-09-27 12:02:35 chris Exp $ |
*/ |
|
#include "system.h" |
|
rtems_unsigned32 Periods[6] = { 0, 2, 2, 2, 2, 100 }; |
rtems_unsigned32 Iterations[6] = { 0, 50, 50, 50, 50, 1 }; |
rtems_task_priority Priorities[6] = { 0, 1, 1, 3, 4, 5 }; |
|
rtems_task Task_1_through_5( |
rtems_unsigned32 argument |
) |
{ |
rtems_id rmid; |
rtems_id test_rmid; |
rtems_unsigned32 index; |
rtems_unsigned32 pass; |
rtems_unsigned32 failed; |
rtems_status_code status; |
|
status = rtems_rate_monotonic_create( argument, &rmid ); |
directive_failed( status, "rtems_rate_monotonic_create" ); |
put_name( Task_name[ argument ], FALSE ); |
printf( "- rtems_rate_monotonic_create id = 0x%08x\n", rmid ); |
|
status = rtems_rate_monotonic_ident( argument, &test_rmid ); |
directive_failed( status, "rtems_rate_monotonic_ident" ); |
put_name( Task_name[ argument ], FALSE ); |
printf( "- rtems_rate_monotonic_ident id = 0x%08x\n", test_rmid ); |
|
if ( rmid != test_rmid ) { |
printf( "RMID's DO NOT MATCH (0x%x and 0x%x)\n", rmid, test_rmid ); |
exit( 0 ); |
} |
|
put_name( Task_name[ argument ], FALSE ); |
printf( "- (0x%08x) period %d\n", rmid, Periods[ argument ] ); |
|
status = rtems_task_wake_after( 2 ); |
directive_failed( status, "rtems_task_wake_after" ); |
|
switch ( argument ) { |
case 1: |
case 2: |
case 3: |
case 4: |
while ( FOREVER ) { |
status = rtems_rate_monotonic_period( rmid, Periods[ argument ] ); |
directive_failed( status, "rtems_rate_monotonic_period" ); |
Count.count[ argument ]++; |
} |
break; |
case 5: |
pass = 0; |
failed = 0; |
|
status = rtems_rate_monotonic_period( rmid, Periods[ argument ] ); |
directive_failed( status, "rtems_rate_monotonic_period 1 of TA5" ); |
|
Get_all_counters(); |
|
while ( FOREVER ) { |
|
status = rtems_rate_monotonic_period( rmid, Periods[ argument ] ); |
directive_failed( status, "rtems_rate_monotonic_period 2 of TA5" ); |
|
Get_all_counters(); |
|
for( index = 1 ; index <= 4 ; index++ ) { |
if ( Temporary_count.count[ index ] != Iterations[ index ] ) { |
puts_nocr( "FAIL -- " ); |
put_name ( Task_name[ index ], FALSE ); |
printf ( " Actual=%d, Expected=%d\n", |
Temporary_count.count[ index ], |
Iterations[ index ] |
); |
failed += 1; |
} |
} |
|
if ( failed == 5 ) |
exit( 0 ); |
|
pass += 1; |
|
printf( "TA5 - PERIODS CHECK OK (%d)\n", pass ); |
|
fflush( stdout ); |
|
if ( pass == 10 ) { |
puts( "*** END OF TEST 20 ***" ); |
exit( 0 ); |
} |
|
} |
break; |
} |
} |
/sp20.scn
0,0 → 1,27
*** TEST 20 *** |
TA1 - rtems_rate_monotonic_create id = 0x2c010001 |
TA1 - rtems_rate_monotonic_ident id = 0x2c010001 |
TA1 - (0x2c010001) period 2 |
TA2 - rtems_rate_monotonic_create id = 0x2c010002 |
TA2 - rtems_rate_monotonic_ident id = 0x2c010002 |
TA2 - (0x2c010002) period 2 |
TA3 - rtems_rate_monotonic_create id = 0x2c010003 |
TA3 - rtems_rate_monotonic_ident id = 0x2c010003 |
TA3 - (0x2c010003) period 2 |
TA4 - rtems_rate_monotonic_create id = 0x2c010004 |
TA4 - rtems_rate_monotonic_ident id = 0x2c010004 |
TA4 - (0x2c010004) period 2 |
TA5 - rtems_rate_monotonic_create id = 0x2c010005 |
TA5 - rtems_rate_monotonic_ident id = 0x2c010005 |
TA5 - (0x28010005) period 100 |
TA5 - PERIODS CHECK OK (1) |
TA5 - PERIODS CHECK OK (2) |
TA5 - PERIODS CHECK OK (3) |
TA5 - PERIODS CHECK OK (4) |
TA5 - PERIODS CHECK OK (5) |
TA5 - PERIODS CHECK OK (6) |
TA5 - PERIODS CHECK OK (7) |
TA5 - PERIODS CHECK OK (8) |
TA5 - PERIODS CHECK OK (9) |
TA5 - PERIODS CHECK OK (10) |
*** END OF TEST 20 *** |
/sp20.doc
0,0 → 1,23
# |
# $Id: sp20.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: test20 |
|
directives: |
|
rm_create, rm_period |
|
concepts: |
|
a. Verifies Rate Monotonic Manager behavior. |
/Makefile.am
0,0 → 1,38
## |
## $Id: Makefile.am,v 1.2 2001-09-27 12:02:35 chris Exp $ |
## |
|
AUTOMAKE_OPTIONS = foreign 1.4 |
|
TEST = sp20 |
|
MANAGERS = io rate_monotonic |
|
C_FILES = init.c getall.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 |
/getall.c
0,0 → 1,42
/* Get_all_counters |
* |
* This routine allows TA5 to atomically obtain the iteration counters. |
* |
* 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: getall.c,v 1.2 2001-09-27 12:02:35 chris Exp $ |
*/ |
|
#include "system.h" |
|
void Get_all_counters() |
{ |
rtems_mode previous_mode; |
rtems_status_code status; |
|
status = rtems_task_mode( |
RTEMS_NO_PREEMPT, |
RTEMS_PREEMPT_MASK, |
&previous_mode |
); |
directive_failed( status, "rtems_task_mode to RTEMS_NO_PREEMPT" ); |
|
Temporary_count = Count; |
Count.count[ 1 ] = 0; |
Count.count[ 2 ] = 0; |
Count.count[ 3 ] = 0; |
Count.count[ 4 ] = 0; |
Count.count[ 5 ] = 0; |
|
status = rtems_task_mode( RTEMS_PREEMPT, RTEMS_PREEMPT_MASK, &previous_mode ); |
directive_failed( status, "rtems_task_mode to RTEMS_PREEMPT" ); |
} |
/system.h
0,0 → 1,61
/* 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:35 chris Exp $ |
*/ |
|
#include <tmacros.h> |
|
/* types */ |
|
struct counters { |
rtems_unsigned32 count[6]; |
}; |
|
/* functions */ |
|
rtems_task Init( |
rtems_task_argument argument |
); |
|
rtems_task Task_1_through_5( |
rtems_task_argument argument |
); |
|
void Get_all_counters( void ); |
|
/* configuration information */ |
|
#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER |
#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER |
|
#define CONFIGURE_MAXIMUM_TASKS 6 |
#define CONFIGURE_MAXIMUM_PERIODS 10 |
|
#define CONFIGURE_INIT_TASK_PRIORITY 10 |
#define CONFIGURE_INIT_TASK_INITIAL_MODES RTEMS_DEFAULT_MODES |
#define CONFIGURE_RTEMS_INIT_TASKS_TABLE |
|
#define CONFIGURE_EXTRA_TASK_STACKS (15 * RTEMS_MINIMUM_STACK_SIZE) |
|
#include <confdefs.h> |
|
/* global variables */ |
|
TEST_EXTERN rtems_id Task_id[ 6 ]; /* array of task ids */ |
TEST_EXTERN rtems_name Task_name[ 6 ]; /* array of task names */ |
|
TEST_EXTERN struct counters Count; /* iteration counters */ |
TEST_EXTERN struct counters Temporary_count; |
extern rtems_task_priority Priorities[ 6 ]; |
|
/* end of include file */ |