Patch from Eric Norum to avoid printing from context switch user extension.

The array is too long and needs to be shortened.
This commit is contained in:
Joel Sherrill
1998-06-12 20:55:21 +00:00
parent 2a53f31023
commit 9b413eaef6
6 changed files with 74 additions and 14 deletions

View File

@@ -66,4 +66,15 @@ TEST_EXTERN rtems_name Extension_name[ 4 ]; /* array of task names */
/* array of task run counts */
TEST_EXTERN volatile rtems_unsigned32 Run_count[ 4 ];
/*
* Keep track of task switches
*/
struct taskSwitchLog {
int taskIndex;
rtems_time_of_day when;
};
extern struct taskSwitchLog taskSwitchLog[];
extern int taskSwitchLogIndex;
volatile extern int testsFinished;
/* end of include file */

View File

@@ -21,6 +21,18 @@
#include "system.h"
static void
showTaskSwitches (void)
{
int i;
int switches = taskSwitchLogIndex;
for (i = 0 ; i < switches ; i++) {
put_name( Task_name[taskSwitchLog[i].taskIndex], FALSE );
print_time( "- ", &taskSwitchLog[i].when, "\n" );
}
}
rtems_task Task_1(
rtems_task_argument argument
)
@@ -97,7 +109,10 @@ rtems_task Task_1(
);
directive_failed( status, "rtems_task_mode" );
while ( FOREVER );
while ( !testsFinished );
showTaskSwitches ();
puts( "*** END OF TEST 4 ***" );
exit (0);
}
}
}

View File

@@ -23,6 +23,10 @@
#include "system.h"
struct taskSwitchLog taskSwitchLog[1000];
int taskSwitchLogIndex;
volatile int testsFinished;;
rtems_extension Task_switch(
rtems_tcb *unused,
rtems_tcb *heir
@@ -43,13 +47,13 @@ rtems_extension Task_switch(
status = rtems_clock_get( RTEMS_CLOCK_GET_TOD, &time );
directive_failed( status, "rtems_clock_get" );
put_name( Task_name[ index ], FALSE );
print_time( "- ", &time, "\n" );
if ( time.second >= 16 ) {
puts( "*** END OF TEST 4 ***" );
exit( 0 );
if (taskSwitchLogIndex < (sizeof taskSwitchLog / sizeof taskSwitchLog[0])) {
taskSwitchLog[taskSwitchLogIndex].taskIndex = index;
taskSwitchLog[taskSwitchLogIndex].when = time;
taskSwitchLogIndex++;
}
if ( time.second >= 16 )
testsFinished = 1;
break;
case 0:

View File

@@ -66,4 +66,15 @@ TEST_EXTERN rtems_name Extension_name[ 4 ]; /* array of task names */
/* array of task run counts */
TEST_EXTERN volatile rtems_unsigned32 Run_count[ 4 ];
/*
* Keep track of task switches
*/
struct taskSwitchLog {
int taskIndex;
rtems_time_of_day when;
};
extern struct taskSwitchLog taskSwitchLog[];
extern int taskSwitchLogIndex;
volatile extern int testsFinished;
/* end of include file */

View File

@@ -21,6 +21,18 @@
#include "system.h"
static void
showTaskSwitches (void)
{
int i;
int switches = taskSwitchLogIndex;
for (i = 0 ; i < switches ; i++) {
put_name( Task_name[taskSwitchLog[i].taskIndex], FALSE );
print_time( "- ", &taskSwitchLog[i].when, "\n" );
}
}
rtems_task Task_1(
rtems_task_argument argument
)
@@ -97,7 +109,10 @@ rtems_task Task_1(
);
directive_failed( status, "rtems_task_mode" );
while ( FOREVER );
while ( !testsFinished );
showTaskSwitches ();
puts( "*** END OF TEST 4 ***" );
exit (0);
}
}
}

View File

@@ -23,6 +23,10 @@
#include "system.h"
struct taskSwitchLog taskSwitchLog[1000];
int taskSwitchLogIndex;
volatile int testsFinished;;
rtems_extension Task_switch(
rtems_tcb *unused,
rtems_tcb *heir
@@ -43,13 +47,13 @@ rtems_extension Task_switch(
status = rtems_clock_get( RTEMS_CLOCK_GET_TOD, &time );
directive_failed( status, "rtems_clock_get" );
put_name( Task_name[ index ], FALSE );
print_time( "- ", &time, "\n" );
if ( time.second >= 16 ) {
puts( "*** END OF TEST 4 ***" );
exit( 0 );
if (taskSwitchLogIndex < (sizeof taskSwitchLog / sizeof taskSwitchLog[0])) {
taskSwitchLog[taskSwitchLogIndex].taskIndex = index;
taskSwitchLog[taskSwitchLogIndex].when = time;
taskSwitchLogIndex++;
}
if ( time.second >= 16 )
testsFinished = 1;
break;
case 0: