forked from Imagelibrary/rtems
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:
@@ -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 */
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user