mirror of
https://gitlab.rtems.org/rtems/rtos/rtems.git
synced 2026-02-04 04:31:36 +00:00
testsuites/rhealstone: reformat with clang-format
Updates #3860. Updates #5358.
This commit is contained in:
committed by
Kinsey Moore
parent
87e4f79bd1
commit
f2b17295cb
@@ -16,11 +16,11 @@ rtems_task Task02( rtems_task_argument ignored );
|
||||
rtems_task Task03( rtems_task_argument ignored );
|
||||
rtems_task Init( rtems_task_argument ignored );
|
||||
|
||||
rtems_id Task_id[3];
|
||||
rtems_name Task_name[3];
|
||||
rtems_id sem_id;
|
||||
rtems_name sem_name;
|
||||
rtems_status_code status;
|
||||
rtems_id Task_id[ 3 ];
|
||||
rtems_name Task_name[ 3 ];
|
||||
rtems_id sem_id;
|
||||
rtems_name sem_name;
|
||||
rtems_status_code status;
|
||||
|
||||
uint32_t count;
|
||||
uint32_t telapsed;
|
||||
@@ -32,9 +32,9 @@ rtems_task Init( rtems_task_argument ignored )
|
||||
{
|
||||
(void) ignored;
|
||||
|
||||
rtems_attribute sem_attr;
|
||||
rtems_task_priority pri;
|
||||
rtems_mode prev_mode;
|
||||
rtems_attribute sem_attr;
|
||||
rtems_task_priority pri;
|
||||
rtems_mode prev_mode;
|
||||
|
||||
Print_Warning();
|
||||
|
||||
@@ -42,46 +42,40 @@ rtems_task Init( rtems_task_argument ignored )
|
||||
|
||||
sem_attr = RTEMS_INHERIT_PRIORITY | RTEMS_BINARY_SEMAPHORE | RTEMS_PRIORITY;
|
||||
|
||||
sem_name = rtems_build_name( 'S','0',' ',' ' );
|
||||
status = rtems_semaphore_create(
|
||||
sem_name,
|
||||
1,
|
||||
sem_attr,
|
||||
0,
|
||||
&sem_id
|
||||
);
|
||||
sem_name = rtems_build_name( 'S', '0', ' ', ' ' );
|
||||
status = rtems_semaphore_create( sem_name, 1, sem_attr, 0, &sem_id );
|
||||
directive_failed( status, "rtems_semaphore_create of S0" );
|
||||
|
||||
Task_name[0] = rtems_build_name( 'T','A','0','1' );
|
||||
Task_name[ 0 ] = rtems_build_name( 'T', 'A', '0', '1' );
|
||||
status = rtems_task_create(
|
||||
Task_name[0],
|
||||
26, /* High priority task */
|
||||
Task_name[ 0 ],
|
||||
26, /* High priority task */
|
||||
RTEMS_MINIMUM_STACK_SIZE,
|
||||
RTEMS_DEFAULT_MODES,
|
||||
RTEMS_DEFAULT_ATTRIBUTES,
|
||||
&Task_id[0]
|
||||
&Task_id[ 0 ]
|
||||
);
|
||||
directive_failed( status, "rtems_task_create of TA01" );
|
||||
|
||||
Task_name[1] = rtems_build_name( 'T','A','0','2' );
|
||||
Task_name[ 1 ] = rtems_build_name( 'T', 'A', '0', '2' );
|
||||
status = rtems_task_create(
|
||||
Task_name[1],
|
||||
28, /* Mid priority task */
|
||||
Task_name[ 1 ],
|
||||
28, /* Mid priority task */
|
||||
RTEMS_MINIMUM_STACK_SIZE,
|
||||
RTEMS_DEFAULT_MODES,
|
||||
RTEMS_DEFAULT_ATTRIBUTES,
|
||||
&Task_id[1]
|
||||
&Task_id[ 1 ]
|
||||
);
|
||||
directive_failed( status, "rtems_task_create of TA02" );
|
||||
|
||||
Task_name[2] = rtems_build_name( 'T','A','0','3' );
|
||||
Task_name[ 2 ] = rtems_build_name( 'T', 'A', '0', '3' );
|
||||
status = rtems_task_create(
|
||||
Task_name[2],
|
||||
30, /* Low priority task */
|
||||
Task_name[ 2 ],
|
||||
30, /* Low priority task */
|
||||
RTEMS_MINIMUM_STACK_SIZE,
|
||||
RTEMS_DEFAULT_MODES,
|
||||
RTEMS_DEFAULT_ATTRIBUTES,
|
||||
&Task_id[2]
|
||||
&Task_id[ 2 ]
|
||||
);
|
||||
directive_failed( status, "rtems_task_create of TA03" );
|
||||
|
||||
@@ -97,12 +91,12 @@ rtems_task Init( rtems_task_argument ignored )
|
||||
|
||||
/* Get time of benchmark with no semaphores involved, i.e. find overhead */
|
||||
sem_exe = 0;
|
||||
status = rtems_task_start( Task_id[2], Task03, 0 );
|
||||
status = rtems_task_start( Task_id[ 2 ], Task03, 0 );
|
||||
directive_failed( status, "rtems_task_start of TA03" );
|
||||
|
||||
/* Get time of benchmark with semaphores */
|
||||
sem_exe = 1;
|
||||
status = rtems_task_restart( Task_id[2], 0 );
|
||||
status = rtems_task_restart( Task_id[ 2 ], 0 );
|
||||
directive_failed( status, "rtems_task_start of TA03" );
|
||||
|
||||
/* Should never reach here */
|
||||
@@ -134,23 +128,22 @@ rtems_task Task01( rtems_task_argument ignored )
|
||||
telapsed = benchmark_timer_read();
|
||||
|
||||
/* Check which run this was */
|
||||
if (sem_exe == 0) {
|
||||
if ( sem_exe == 0 ) {
|
||||
tswitch_overhead = telapsed;
|
||||
rtems_task_suspend( Task_id[1] );
|
||||
rtems_task_suspend( Task_id[2] );
|
||||
rtems_task_suspend( Task_id[ 1 ] );
|
||||
rtems_task_suspend( Task_id[ 2 ] );
|
||||
rtems_task_suspend( RTEMS_SELF );
|
||||
} else {
|
||||
put_time(
|
||||
"Rhealstone: Deadlock Break",
|
||||
telapsed,
|
||||
BENCHMARKS, /* Total number of times deadlock broken*/
|
||||
tswitch_overhead, /* Overhead of loop and task switches */
|
||||
tobtain_overhead
|
||||
"Rhealstone: Deadlock Break",
|
||||
telapsed,
|
||||
BENCHMARKS, /* Total number of times deadlock broken*/
|
||||
tswitch_overhead, /* Overhead of loop and task switches */
|
||||
tobtain_overhead
|
||||
);
|
||||
TEST_END();
|
||||
rtems_test_exit( 0 );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
rtems_task Task02( rtems_task_argument ignored )
|
||||
@@ -158,21 +151,21 @@ rtems_task Task02( rtems_task_argument ignored )
|
||||
(void) ignored;
|
||||
|
||||
/* Start up TA01, get preempted */
|
||||
if ( sem_exe == 1) {
|
||||
status = rtems_task_restart( Task_id[0], 0);
|
||||
directive_failed( status, "rtems_task_start of TA01");
|
||||
if ( sem_exe == 1 ) {
|
||||
status = rtems_task_restart( Task_id[ 0 ], 0 );
|
||||
directive_failed( status, "rtems_task_start of TA01" );
|
||||
} else {
|
||||
status = rtems_task_start( Task_id[0], Task01, 0);
|
||||
directive_failed( status, "rtems_task_start of TA01");
|
||||
status = rtems_task_start( Task_id[ 0 ], Task01, 0 );
|
||||
directive_failed( status, "rtems_task_start of TA01" );
|
||||
}
|
||||
|
||||
/* Benchmark code */
|
||||
for ( ; count < BENCHMARKS ; ) {
|
||||
for ( ; count < BENCHMARKS; ) {
|
||||
/* Suspend self, go to TA01 */
|
||||
rtems_task_suspend( RTEMS_SELF );
|
||||
|
||||
/* Wake up TA01, get preempted */
|
||||
rtems_task_resume( Task_id[0] );
|
||||
rtems_task_resume( Task_id[ 0 ] );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -180,22 +173,22 @@ rtems_task Task03( rtems_task_argument ignored )
|
||||
{
|
||||
(void) ignored;
|
||||
|
||||
if (sem_exe == 1) {
|
||||
if ( sem_exe == 1 ) {
|
||||
/* Low priority task holds mutex */
|
||||
rtems_semaphore_obtain( sem_id, RTEMS_WAIT, 0 );
|
||||
}
|
||||
|
||||
/* Start up TA02, get preempted */
|
||||
if ( sem_exe == 1) {
|
||||
status = rtems_task_restart( Task_id[1], 0);
|
||||
directive_failed( status, "rtems_task_start of TA02");
|
||||
if ( sem_exe == 1 ) {
|
||||
status = rtems_task_restart( Task_id[ 1 ], 0 );
|
||||
directive_failed( status, "rtems_task_start of TA02" );
|
||||
} else {
|
||||
status = rtems_task_start( Task_id[1], Task02, 0);
|
||||
directive_failed( status, "rtems_task_start of TA02");
|
||||
status = rtems_task_start( Task_id[ 1 ], Task02, 0 );
|
||||
directive_failed( status, "rtems_task_start of TA02" );
|
||||
}
|
||||
|
||||
/* Benchmark code */
|
||||
for ( ; count < BENCHMARKS ; ) {
|
||||
for ( ; count < BENCHMARKS; ) {
|
||||
if ( sem_exe == 1 ) {
|
||||
/* Preempted by TA01 upon release */
|
||||
rtems_semaphore_release( sem_id );
|
||||
@@ -206,7 +199,7 @@ rtems_task Task03( rtems_task_argument ignored )
|
||||
rtems_semaphore_obtain( sem_id, RTEMS_WAIT, 0 );
|
||||
}
|
||||
/* Wake up TA02, get preempted */
|
||||
rtems_task_resume( Task_id[1] );
|
||||
rtems_task_resume( Task_id[ 1 ] );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -216,7 +209,7 @@ rtems_task Task03( rtems_task_argument ignored )
|
||||
|
||||
#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
|
||||
#define CONFIGURE_MAXIMUM_SEMAPHORES 1
|
||||
#define CONFIGURE_MAXIMUM_TASKS 4
|
||||
#define CONFIGURE_MAXIMUM_TASKS 4
|
||||
|
||||
#define CONFIGURE_INIT
|
||||
#include <rtems/confdefs.h>
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
/* configuration information */
|
||||
#define CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER
|
||||
#define CONFIGURE_APPLICATION_NEEDS_TIMER_DRIVER
|
||||
#define CONFIGURE_MAXIMUM_TASKS 2
|
||||
#define CONFIGURE_MAXIMUM_TASKS 2
|
||||
#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
|
||||
#define CONFIGURE_SCHEDULER_PRIORITY
|
||||
|
||||
@@ -36,37 +36,33 @@ const char rtems_test_name[] = "RHILATENCY";
|
||||
|
||||
#define BENCHMARKS 50000
|
||||
|
||||
rtems_task Task_1(
|
||||
rtems_task_argument argument
|
||||
);
|
||||
rtems_task Task_1( rtems_task_argument argument );
|
||||
|
||||
uint32_t Interrupt_nest;
|
||||
uint32_t timer_overhead;
|
||||
uint32_t Interrupt_enter_time;
|
||||
uint32_t Interrupt_nest;
|
||||
uint32_t timer_overhead;
|
||||
uint32_t Interrupt_enter_time;
|
||||
|
||||
rtems_task Init(
|
||||
rtems_task_argument argument
|
||||
)
|
||||
rtems_task Init( rtems_task_argument argument )
|
||||
{
|
||||
(void) argument;
|
||||
|
||||
rtems_status_code status;
|
||||
rtems_id Task_id;
|
||||
rtems_id Task_id;
|
||||
|
||||
Print_Warning();
|
||||
|
||||
TEST_BEGIN();
|
||||
|
||||
if (
|
||||
_Scheduler_Table[ 0 ].Operations.initialize
|
||||
!= _Scheduler_priority_Initialize
|
||||
_Scheduler_Table[ 0 ].Operations.initialize !=
|
||||
_Scheduler_priority_Initialize
|
||||
) {
|
||||
puts( " Error ==> " );
|
||||
puts( "Test only supported for deterministic priority scheduler\n" );
|
||||
rtems_test_exit( 0 );
|
||||
}
|
||||
|
||||
#define LOW_PRIORITY (RTEMS_MAXIMUM_PRIORITY - 1u)
|
||||
#define LOW_PRIORITY ( RTEMS_MAXIMUM_PRIORITY - 1u )
|
||||
status = rtems_task_create(
|
||||
rtems_build_name( 'T', 'A', '1', ' ' ),
|
||||
LOW_PRIORITY,
|
||||
@@ -101,13 +97,11 @@ static void Isr_handler( void *arg )
|
||||
Clear_tm27_intr();
|
||||
}
|
||||
|
||||
rtems_task Task_1(
|
||||
rtems_task_argument argument
|
||||
)
|
||||
rtems_task Task_1( rtems_task_argument argument )
|
||||
{
|
||||
(void) argument;
|
||||
|
||||
Install_tm27_vector( Isr_handler ) ;
|
||||
Install_tm27_vector( Isr_handler );
|
||||
Interrupt_nest = 0;
|
||||
|
||||
/* Benchmark code */
|
||||
@@ -118,7 +112,7 @@ rtems_task Task_1(
|
||||
put_time(
|
||||
"Rhealstone: Interrupt Latency",
|
||||
Interrupt_enter_time,
|
||||
1, /* Only Rhealstone that isn't an average */
|
||||
1, /* Only Rhealstone that isn't an average */
|
||||
timer_overhead,
|
||||
0
|
||||
);
|
||||
|
||||
@@ -13,25 +13,23 @@
|
||||
|
||||
const char rtems_test_name[] = "RHMLATENCY";
|
||||
|
||||
#define MESSAGE_SIZE (sizeof(long) * 4)
|
||||
#define BENCHMARKS 50000
|
||||
#define MESSAGE_SIZE ( sizeof( long ) * 4 )
|
||||
#define BENCHMARKS 50000
|
||||
|
||||
rtems_task Init( rtems_task_argument ignored );
|
||||
rtems_task Task01( rtems_task_argument ignored );
|
||||
rtems_task Task02( rtems_task_argument ignored );
|
||||
|
||||
uint32_t telapsed;
|
||||
uint32_t tloop_overhead;
|
||||
uint32_t treceive_overhead;
|
||||
uint32_t count;
|
||||
rtems_id Task_id[2];
|
||||
rtems_name Task_name[2];
|
||||
rtems_id Queue_id;
|
||||
long Buffer[4];
|
||||
uint32_t telapsed;
|
||||
uint32_t tloop_overhead;
|
||||
uint32_t treceive_overhead;
|
||||
uint32_t count;
|
||||
rtems_id Task_id[ 2 ];
|
||||
rtems_name Task_name[ 2 ];
|
||||
rtems_id Queue_id;
|
||||
long Buffer[ 4 ];
|
||||
|
||||
void Init(
|
||||
rtems_task_argument argument
|
||||
)
|
||||
void Init( rtems_task_argument argument )
|
||||
{
|
||||
(void) argument;
|
||||
|
||||
@@ -42,7 +40,7 @@ void Init(
|
||||
TEST_BEGIN();
|
||||
|
||||
status = rtems_message_queue_create(
|
||||
rtems_build_name( 'M', 'Q', '1', ' ' ),
|
||||
rtems_build_name( 'M', 'Q', '1', ' ' ),
|
||||
1,
|
||||
MESSAGE_SIZE,
|
||||
RTEMS_DEFAULT_ATTRIBUTES,
|
||||
@@ -50,25 +48,25 @@ void Init(
|
||||
);
|
||||
directive_failed( status, "rtems_message_queue_create" );
|
||||
|
||||
Task_name[0] = rtems_build_name( 'T','A','0','1' );
|
||||
Task_name[ 0 ] = rtems_build_name( 'T', 'A', '0', '1' );
|
||||
status = rtems_task_create(
|
||||
Task_name[0],
|
||||
30, /* TA01 is low priority task */
|
||||
Task_name[ 0 ],
|
||||
30, /* TA01 is low priority task */
|
||||
RTEMS_MINIMUM_STACK_SIZE,
|
||||
RTEMS_DEFAULT_MODES,
|
||||
RTEMS_DEFAULT_ATTRIBUTES,
|
||||
&Task_id[0]
|
||||
&Task_id[ 0 ]
|
||||
);
|
||||
directive_failed( status, "rtems_task_create of TA01");
|
||||
directive_failed( status, "rtems_task_create of TA01" );
|
||||
|
||||
Task_name[1] = rtems_build_name( 'T','A','0','2' );
|
||||
Task_name[ 1 ] = rtems_build_name( 'T', 'A', '0', '2' );
|
||||
status = rtems_task_create(
|
||||
Task_name[1],
|
||||
28, /* High priority task */
|
||||
Task_name[ 1 ],
|
||||
28, /* High priority task */
|
||||
RTEMS_MINIMUM_STACK_SIZE,
|
||||
RTEMS_DEFAULT_MODES,
|
||||
RTEMS_DEFAULT_ATTRIBUTES,
|
||||
&Task_id[1]
|
||||
&Task_id[ 1 ]
|
||||
);
|
||||
directive_failed( status, "rtems_task_create of TA01" );
|
||||
|
||||
@@ -78,7 +76,7 @@ void Init(
|
||||
}
|
||||
tloop_overhead = benchmark_timer_read();
|
||||
|
||||
status = rtems_task_start( Task_id[0], Task01, 0 );
|
||||
status = rtems_task_start( Task_id[ 0 ], Task01, 0 );
|
||||
directive_failed( status, "rtems_task_start of TA01" );
|
||||
|
||||
rtems_task_exit();
|
||||
@@ -94,7 +92,7 @@ rtems_task Task01( rtems_task_argument ignored )
|
||||
(void) rtems_message_queue_send( Queue_id, Buffer, MESSAGE_SIZE );
|
||||
|
||||
/* Start up second task, get preempted */
|
||||
status = rtems_task_start( Task_id[1], Task02, 0 );
|
||||
status = rtems_task_start( Task_id[ 1 ], Task02, 0 );
|
||||
directive_failed( status, "rtems_task_start" );
|
||||
|
||||
for ( ; count < BENCHMARKS; count++ ) {
|
||||
@@ -103,7 +101,6 @@ rtems_task Task01( rtems_task_argument ignored )
|
||||
|
||||
/* Should never reach here */
|
||||
rtems_test_assert( false );
|
||||
|
||||
}
|
||||
|
||||
rtems_task Task02( rtems_task_argument ignored )
|
||||
@@ -115,33 +112,33 @@ rtems_task Task02( rtems_task_argument ignored )
|
||||
/* find recieve overhead - no preempt or task switch */
|
||||
benchmark_timer_initialize();
|
||||
(void) rtems_message_queue_receive(
|
||||
Queue_id,
|
||||
(long (*)[4]) Buffer,
|
||||
&size,
|
||||
RTEMS_DEFAULT_OPTIONS,
|
||||
RTEMS_NO_TIMEOUT
|
||||
);
|
||||
Queue_id,
|
||||
(long ( * )[ 4 ]) Buffer,
|
||||
&size,
|
||||
RTEMS_DEFAULT_OPTIONS,
|
||||
RTEMS_NO_TIMEOUT
|
||||
);
|
||||
treceive_overhead = benchmark_timer_read();
|
||||
|
||||
/* Benchmark code */
|
||||
benchmark_timer_initialize();
|
||||
for ( count = 0; count < BENCHMARKS - 1; count++ ) {
|
||||
(void) rtems_message_queue_receive(
|
||||
Queue_id,
|
||||
(long (*)[4]) Buffer,
|
||||
&size,
|
||||
RTEMS_DEFAULT_OPTIONS,
|
||||
RTEMS_NO_TIMEOUT
|
||||
);
|
||||
Queue_id,
|
||||
(long ( * )[ 4 ]) Buffer,
|
||||
&size,
|
||||
RTEMS_DEFAULT_OPTIONS,
|
||||
RTEMS_NO_TIMEOUT
|
||||
);
|
||||
}
|
||||
telapsed = benchmark_timer_read();
|
||||
|
||||
put_time(
|
||||
"Rhealstone: Intertask Message Latency",
|
||||
telapsed, /* Total time of all benchmarks */
|
||||
BENCHMARKS - 1, /* Total benchmarks */
|
||||
tloop_overhead, /* Overhead of loops */
|
||||
treceive_overhead /* Overhead of recieve call and task switch */
|
||||
"Rhealstone: Intertask Message Latency",
|
||||
telapsed, /* Total time of all benchmarks */
|
||||
BENCHMARKS - 1, /* Total benchmarks */
|
||||
tloop_overhead, /* Overhead of loops */
|
||||
treceive_overhead /* Overhead of recieve call and task switch */
|
||||
);
|
||||
|
||||
TEST_END();
|
||||
@@ -153,10 +150,10 @@ rtems_task Task02( rtems_task_argument ignored )
|
||||
#define CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER
|
||||
#define CONFIGURE_APPLICATION_NEEDS_TIMER_DRIVER
|
||||
|
||||
#define CONFIGURE_MAXIMUM_TASKS 3
|
||||
#define CONFIGURE_MAXIMUM_MESSAGE_QUEUES 1
|
||||
#define CONFIGURE_MAXIMUM_TASKS 3
|
||||
#define CONFIGURE_MAXIMUM_MESSAGE_QUEUES 1
|
||||
#define CONFIGURE_MESSAGE_BUFFER_MEMORY \
|
||||
CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE(1, MESSAGE_SIZE)
|
||||
CONFIGURE_MESSAGE_BUFFERS_FOR_QUEUE( 1, MESSAGE_SIZE )
|
||||
#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
|
||||
|
||||
#define CONFIGURE_INIT
|
||||
|
||||
@@ -15,75 +15,69 @@ rtems_task Task01( rtems_task_argument ignored );
|
||||
rtems_task Task02( rtems_task_argument ignored );
|
||||
rtems_task Init( rtems_task_argument ignored );
|
||||
|
||||
rtems_id Task_id[2];
|
||||
rtems_name Task_name[2];
|
||||
rtems_id sem_id;
|
||||
rtems_name sem_name;
|
||||
rtems_id Task_id[ 2 ];
|
||||
rtems_name Task_name[ 2 ];
|
||||
rtems_id sem_id;
|
||||
rtems_name sem_name;
|
||||
|
||||
uint32_t telapsed;
|
||||
uint32_t tswitch_overhead;
|
||||
uint32_t count;
|
||||
uint32_t sem_exe;
|
||||
uint32_t telapsed;
|
||||
uint32_t tswitch_overhead;
|
||||
uint32_t count;
|
||||
uint32_t sem_exe;
|
||||
|
||||
rtems_task Init( rtems_task_argument ignored )
|
||||
{
|
||||
(void) ignored;
|
||||
|
||||
rtems_status_code status;
|
||||
rtems_attribute sem_attr;
|
||||
rtems_task_priority pri;
|
||||
rtems_mode prev_mode;
|
||||
rtems_status_code status;
|
||||
rtems_attribute sem_attr;
|
||||
rtems_task_priority pri;
|
||||
rtems_mode prev_mode;
|
||||
|
||||
Print_Warning();
|
||||
|
||||
TEST_BEGIN();
|
||||
|
||||
sem_attr = RTEMS_BINARY_SEMAPHORE | RTEMS_PRIORITY;
|
||||
sem_attr = RTEMS_BINARY_SEMAPHORE | RTEMS_PRIORITY;
|
||||
|
||||
sem_name = rtems_build_name( 'S','0',' ',' ' );
|
||||
status = rtems_semaphore_create(
|
||||
sem_name,
|
||||
1,
|
||||
sem_attr,
|
||||
0,
|
||||
&sem_id
|
||||
);
|
||||
sem_name = rtems_build_name( 'S', '0', ' ', ' ' );
|
||||
status = rtems_semaphore_create( sem_name, 1, sem_attr, 0, &sem_id );
|
||||
directive_failed( status, "rtems_semaphore_create of S0" );
|
||||
|
||||
Task_name[0] = rtems_build_name( 'T','A','0','1' );
|
||||
Task_name[ 0 ] = rtems_build_name( 'T', 'A', '0', '1' );
|
||||
status = rtems_task_create(
|
||||
Task_name[0],
|
||||
Task_name[ 0 ],
|
||||
30,
|
||||
RTEMS_MINIMUM_STACK_SIZE,
|
||||
RTEMS_DEFAULT_MODES,
|
||||
RTEMS_DEFAULT_ATTRIBUTES,
|
||||
&Task_id[0]
|
||||
&Task_id[ 0 ]
|
||||
);
|
||||
directive_failed( status, "rtems_task_create of TA01" );
|
||||
|
||||
Task_name[1] = rtems_build_name( 'T','A','0','2' );
|
||||
Task_name[ 1 ] = rtems_build_name( 'T', 'A', '0', '2' );
|
||||
status = rtems_task_create(
|
||||
Task_name[1],
|
||||
Task_name[ 1 ],
|
||||
30,
|
||||
RTEMS_MINIMUM_STACK_SIZE,
|
||||
RTEMS_DEFAULT_MODES,
|
||||
RTEMS_DEFAULT_ATTRIBUTES,
|
||||
&Task_id[1]
|
||||
&Task_id[ 1 ]
|
||||
);
|
||||
directive_failed( status , "rtems_task_create of TA02\n" );
|
||||
directive_failed( status, "rtems_task_create of TA02\n" );
|
||||
|
||||
rtems_task_mode( RTEMS_PREEMPT, RTEMS_PREEMPT_MASK, &prev_mode );
|
||||
/* Lower own priority so TA01 can start up and run */
|
||||
rtems_task_set_priority( RTEMS_SELF, 40, &pri);
|
||||
rtems_task_set_priority( RTEMS_SELF, 40, &pri );
|
||||
|
||||
/* Get time of benchmark with no semaphore shuffling */
|
||||
sem_exe = 0;
|
||||
status = rtems_task_start( Task_id[0], Task01, 0 );
|
||||
status = rtems_task_start( Task_id[ 0 ], Task01, 0 );
|
||||
directive_failed( status, "rtems_task_start of TA01" );
|
||||
|
||||
/* Get time of benchmark with semaphore shuffling */
|
||||
sem_exe = 1;
|
||||
status = rtems_task_restart( Task_id[0], 0 );
|
||||
status = rtems_task_restart( Task_id[ 0 ], 0 );
|
||||
directive_failed( status, "rtems_task_restart of TA01" );
|
||||
|
||||
/* Should never reach here */
|
||||
@@ -98,16 +92,16 @@ rtems_task Task01( rtems_task_argument ignored )
|
||||
|
||||
/* Start up TA02, yield so it can run */
|
||||
if ( sem_exe == 0 ) {
|
||||
status = rtems_task_start( Task_id[1], Task02, 0 );
|
||||
status = rtems_task_start( Task_id[ 1 ], Task02, 0 );
|
||||
directive_failed( status, "rtems_task_start of TA02" );
|
||||
} else {
|
||||
status = rtems_task_restart( Task_id[1], 0 );
|
||||
status = rtems_task_restart( Task_id[ 1 ], 0 );
|
||||
directive_failed( status, "rtems_task_restart of TA02" );
|
||||
}
|
||||
rtems_task_wake_after( RTEMS_YIELD_PROCESSOR );
|
||||
|
||||
/* Benchmark code */
|
||||
for ( ; count < BENCHMARKS ; ) {
|
||||
for ( ; count < BENCHMARKS; ) {
|
||||
if ( sem_exe == 1 ) {
|
||||
rtems_semaphore_obtain( sem_id, RTEMS_WAIT, 0 );
|
||||
}
|
||||
@@ -143,17 +137,17 @@ rtems_task Task02( rtems_task_argument ignored )
|
||||
telapsed = benchmark_timer_read();
|
||||
|
||||
/* Check which run this was */
|
||||
if (sem_exe == 0) {
|
||||
if ( sem_exe == 0 ) {
|
||||
tswitch_overhead = telapsed;
|
||||
rtems_task_suspend( Task_id[0] );
|
||||
rtems_task_suspend( Task_id[ 0 ] );
|
||||
rtems_task_suspend( RTEMS_SELF );
|
||||
} else {
|
||||
put_time(
|
||||
"Rhealstone: Semaphore Shuffle",
|
||||
telapsed,
|
||||
(BENCHMARKS * 2), /* Total number of semaphore-shuffles*/
|
||||
tswitch_overhead, /* Overhead of loop and task switches */
|
||||
0
|
||||
"Rhealstone: Semaphore Shuffle",
|
||||
telapsed,
|
||||
( BENCHMARKS * 2 ), /* Total number of semaphore-shuffles*/
|
||||
tswitch_overhead, /* Overhead of loop and task switches */
|
||||
0
|
||||
);
|
||||
TEST_END();
|
||||
rtems_test_exit( 0 );
|
||||
@@ -164,7 +158,7 @@ rtems_task Task02( rtems_task_argument ignored )
|
||||
#define CONFIGURE_APPLICATION_NEEDS_SIMPLE_CONSOLE_DRIVER
|
||||
#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
|
||||
#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
|
||||
#define CONFIGURE_MAXIMUM_TASKS 3
|
||||
#define CONFIGURE_MAXIMUM_TASKS 3
|
||||
#define CONFIGURE_MAXIMUM_SEMAPHORES 1
|
||||
#define CONFIGURE_INIT
|
||||
#include <rtems/confdefs.h>
|
||||
|
||||
@@ -9,38 +9,38 @@
|
||||
|
||||
const char rtems_test_name[] = "RHTASKPREEMPT";
|
||||
|
||||
#define BENCHMARKS 50000 /* Number of benchmarks to run and average over */
|
||||
#define BENCHMARKS 50000 /* Number of benchmarks to run and average over */
|
||||
|
||||
rtems_task Task02( rtems_task_argument ignored );
|
||||
rtems_task Task01( rtems_task_argument ignored );
|
||||
rtems_task Init( rtems_task_argument ignored );
|
||||
|
||||
rtems_id Task_id[2];
|
||||
rtems_name Task_name[2];
|
||||
rtems_id Task_id[ 2 ];
|
||||
rtems_name Task_name[ 2 ];
|
||||
|
||||
uint32_t telapsed; /* total time elapsed during benchmark */
|
||||
uint32_t tloop_overhead; /* overhead of loops */
|
||||
uint32_t tswitch_overhead; /* overhead of time it takes to switch
|
||||
uint32_t telapsed; /* total time elapsed during benchmark */
|
||||
uint32_t tloop_overhead; /* overhead of loops */
|
||||
uint32_t tswitch_overhead; /* overhead of time it takes to switch
|
||||
* from TA02 to TA01, includes rtems_suspend
|
||||
* overhead
|
||||
*/
|
||||
unsigned long count1;
|
||||
rtems_status_code status;
|
||||
unsigned long count1;
|
||||
rtems_status_code status;
|
||||
|
||||
rtems_task Task01( rtems_task_argument ignored )
|
||||
{
|
||||
(void) ignored;
|
||||
|
||||
/* Start up TA02, get preempted */
|
||||
status = rtems_task_start( Task_id[1], Task02, 0);
|
||||
directive_failed( status, "rtems_task_start of TA02");
|
||||
status = rtems_task_start( Task_id[ 1 ], Task02, 0 );
|
||||
directive_failed( status, "rtems_task_start of TA02" );
|
||||
|
||||
tswitch_overhead = benchmark_timer_read();
|
||||
|
||||
benchmark_timer_initialize();
|
||||
/* Benchmark code */
|
||||
for ( count1 = 0; count1 < BENCHMARKS; count1++ ) {
|
||||
rtems_task_resume( Task_id[1] ); /* Awaken TA02, preemption occurs */
|
||||
rtems_task_resume( Task_id[ 1 ] ); /* Awaken TA02, preemption occurs */
|
||||
}
|
||||
|
||||
/* Should never reach here */
|
||||
@@ -62,11 +62,11 @@ rtems_task Task02( rtems_task_argument ignored )
|
||||
|
||||
telapsed = benchmark_timer_read();
|
||||
put_time(
|
||||
"Rhealstone: Task Preempt",
|
||||
telapsed, /* Total time of all benchmarks */
|
||||
BENCHMARKS - 1, /* BENCHMARKS - 1 total preemptions */
|
||||
tloop_overhead, /* Overhead of loops */
|
||||
tswitch_overhead /* Overhead of task switch back to TA01 */
|
||||
"Rhealstone: Task Preempt",
|
||||
telapsed, /* Total time of all benchmarks */
|
||||
BENCHMARKS - 1, /* BENCHMARKS - 1 total preemptions */
|
||||
tloop_overhead, /* Overhead of loops */
|
||||
tswitch_overhead /* Overhead of task switch back to TA01 */
|
||||
);
|
||||
|
||||
TEST_END();
|
||||
@@ -81,37 +81,37 @@ rtems_task Init( rtems_task_argument ignored )
|
||||
|
||||
TEST_BEGIN();
|
||||
|
||||
Task_name[0] = rtems_build_name( 'T','A','0','1' );
|
||||
Task_name[ 0 ] = rtems_build_name( 'T', 'A', '0', '1' );
|
||||
status = rtems_task_create(
|
||||
Task_name[0],
|
||||
30, /* TA01 is low priority task */
|
||||
Task_name[ 0 ],
|
||||
30, /* TA01 is low priority task */
|
||||
RTEMS_MINIMUM_STACK_SIZE,
|
||||
RTEMS_DEFAULT_MODES,
|
||||
RTEMS_DEFAULT_ATTRIBUTES,
|
||||
&Task_id[0]
|
||||
&Task_id[ 0 ]
|
||||
);
|
||||
directive_failed( status, "rtems_task_create of TA01");
|
||||
directive_failed( status, "rtems_task_create of TA01" );
|
||||
|
||||
Task_name[1] = rtems_build_name( 'T','A','0','2' );
|
||||
Task_name[ 1 ] = rtems_build_name( 'T', 'A', '0', '2' );
|
||||
status = rtems_task_create(
|
||||
Task_name[1],
|
||||
28, /* TA02 is high priority task */
|
||||
Task_name[ 1 ],
|
||||
28, /* TA02 is high priority task */
|
||||
RTEMS_MINIMUM_STACK_SIZE,
|
||||
RTEMS_DEFAULT_MODES,
|
||||
RTEMS_DEFAULT_ATTRIBUTES,
|
||||
&Task_id[1]
|
||||
&Task_id[ 1 ]
|
||||
);
|
||||
directive_failed( status, "rtems_task_create of TA02");
|
||||
directive_failed( status, "rtems_task_create of TA02" );
|
||||
|
||||
/* Find loop overhead */
|
||||
benchmark_timer_initialize();
|
||||
for ( count1 = 0; count1 < ( BENCHMARKS * 2 ) - 1; count1++ ) {
|
||||
/* no statement */ ;
|
||||
/* no statement */;
|
||||
}
|
||||
tloop_overhead = benchmark_timer_read();
|
||||
|
||||
status = rtems_task_start( Task_id[0], Task01, 0 );
|
||||
directive_failed( status, "rtems_task_start of TA01");
|
||||
status = rtems_task_start( Task_id[ 0 ], Task01, 0 );
|
||||
directive_failed( status, "rtems_task_start of TA01" );
|
||||
|
||||
rtems_task_exit();
|
||||
}
|
||||
|
||||
@@ -15,12 +15,12 @@ rtems_task Task01( rtems_task_argument ignored );
|
||||
rtems_task Task02( rtems_task_argument ignored );
|
||||
rtems_task Init( rtems_task_argument ignored );
|
||||
|
||||
rtems_id Task_id[2];
|
||||
rtems_name Task_name[2];
|
||||
uint32_t loop_overhead;
|
||||
uint32_t dir_overhead;
|
||||
unsigned long count1, count2;
|
||||
rtems_status_code status;
|
||||
rtems_id Task_id[ 2 ];
|
||||
rtems_name Task_name[ 2 ];
|
||||
uint32_t loop_overhead;
|
||||
uint32_t dir_overhead;
|
||||
unsigned long count1, count2;
|
||||
rtems_status_code status;
|
||||
|
||||
rtems_task Task02( rtems_task_argument ignored )
|
||||
{
|
||||
@@ -37,11 +37,11 @@ rtems_task Task02( rtems_task_argument ignored )
|
||||
|
||||
telapsed = benchmark_timer_read();
|
||||
put_time(
|
||||
"Rhealstone: Task switch",
|
||||
telapsed,
|
||||
( BENCHMARKS * 2 ) - 1, /* ( BENCHMARKS * 2 ) - 1 total benchmarks */
|
||||
loop_overhead, /* Overhead of loop */
|
||||
dir_overhead /* Overhead of rtems_task_wake_after directive */
|
||||
"Rhealstone: Task switch",
|
||||
telapsed,
|
||||
( BENCHMARKS * 2 ) - 1, /* ( BENCHMARKS * 2 ) - 1 total benchmarks */
|
||||
loop_overhead, /* Overhead of loop */
|
||||
dir_overhead /* Overhead of rtems_task_wake_after directive */
|
||||
);
|
||||
|
||||
TEST_END();
|
||||
@@ -52,7 +52,7 @@ rtems_task Task01( rtems_task_argument ignored )
|
||||
{
|
||||
(void) ignored;
|
||||
|
||||
status = rtems_task_start( Task_id[1], Task02, 0 );
|
||||
status = rtems_task_start( Task_id[ 1 ], Task02, 0 );
|
||||
directive_failed( status, "rtems_task_start of TA02" );
|
||||
|
||||
/* Yield processor so second task can startup and run */
|
||||
@@ -64,7 +64,6 @@ rtems_task Task01( rtems_task_argument ignored )
|
||||
|
||||
/* Should never reach here */
|
||||
rtems_test_assert( false );
|
||||
|
||||
}
|
||||
|
||||
rtems_task Init( rtems_task_argument ignored )
|
||||
@@ -75,25 +74,25 @@ rtems_task Init( rtems_task_argument ignored )
|
||||
|
||||
TEST_BEGIN();
|
||||
|
||||
Task_name[0] = rtems_build_name( 'T','A','0','1' );
|
||||
Task_name[ 0 ] = rtems_build_name( 'T', 'A', '0', '1' );
|
||||
status = rtems_task_create(
|
||||
Task_name[0],
|
||||
Task_name[ 0 ],
|
||||
30,
|
||||
RTEMS_MINIMUM_STACK_SIZE,
|
||||
RTEMS_DEFAULT_MODES,
|
||||
RTEMS_DEFAULT_ATTRIBUTES,
|
||||
&Task_id[0]
|
||||
&Task_id[ 0 ]
|
||||
);
|
||||
directive_failed( status, "rtems_task_create of TA01" );
|
||||
|
||||
Task_name[1] = rtems_build_name( 'T','A','0','2' );
|
||||
Task_name[ 1 ] = rtems_build_name( 'T', 'A', '0', '2' );
|
||||
status = rtems_task_create(
|
||||
Task_name[1],
|
||||
Task_name[ 1 ],
|
||||
30,
|
||||
RTEMS_MINIMUM_STACK_SIZE,
|
||||
RTEMS_DEFAULT_MODES,
|
||||
RTEMS_DEFAULT_ATTRIBUTES,
|
||||
&Task_id[1]
|
||||
&Task_id[ 1 ]
|
||||
);
|
||||
directive_failed( status, "rtems_task_create of TA02" );
|
||||
|
||||
@@ -112,7 +111,7 @@ rtems_task Init( rtems_task_argument ignored )
|
||||
rtems_task_wake_after( RTEMS_YIELD_PROCESSOR );
|
||||
dir_overhead = benchmark_timer_read();
|
||||
|
||||
status = rtems_task_start( Task_id[0], Task01, 0);
|
||||
status = rtems_task_start( Task_id[ 0 ], Task01, 0 );
|
||||
directive_failed( status, "rtems_task_start of TA01" );
|
||||
|
||||
rtems_task_exit();
|
||||
|
||||
Reference in New Issue
Block a user