* sp31/sp31.scn, sp31/task1.c, spintrcritical17/init.c: New test
	cases. Updated copyright notice.
This commit is contained in:
Joel Sherrill
2009-12-04 14:08:51 +00:00
parent 0cd3878008
commit bb14405df2
4 changed files with 146 additions and 35 deletions

View File

@@ -1,3 +1,8 @@
2009-12-04 Sebastian Huber <Sebastian.Huber@embedded-brains.de>
* sp31/sp31.scn, sp31/task1.c, spintrcritical17/init.c: New test
cases. Updated copyright notice.
2009-12-02 Ralf Corsépius <ralf.corsepius@rtems.org> 2009-12-02 Ralf Corsépius <ralf.corsepius@rtems.org>
* sp25/task1.c: Use PRIuPTR for segment_sizes. * sp25/task1.c: Use PRIuPTR for segment_sizes.

View File

@@ -47,6 +47,16 @@ TA1 - rtems_timer_server_fire_when - timer 1 in 3 seconds
TA1 - rtems_task_wake_after - 1 second TA1 - rtems_task_wake_after - 1 second
TA1 - rtems_clock_get_tod - 09:00:11 12/31/1988 TA1 - rtems_clock_get_tod - 09:00:11 12/31/1988
TA1 - rtems_timer_cancel - timer 1 TA1 - rtems_timer_cancel - timer 1
TA1 - rtems_timer_server_fire_when - timer 1 in 3 seconds
TA1 - rtems_timer_server_fire_when - timer 2 in 3 seconds
TA1 - rtems_task_wake_after - 1 second
TA1 - rtems_timer_server_fire_when - timer 2 in 3 seconds
TA1 - rtems_timer_cancel - timer 1
TA1 - rtems_timer_cancel - timer 2
TA1 - rtems_timer_server_fire_when - timer 1 in 1 seconds
TA1 - rtems_timer_server_fire_after - timer 2 in 1 tick
TA1 - rtems_task_wake_after - 1 tick
TA1 - rtems_timer_cancel - timer 1
TA1 - rtems_task_wake_after - YIELD (only task at priority) TA1 - rtems_task_wake_after - YIELD (only task at priority)
TA1 - timer_deleting - timer 1 TA1 - timer_deleting - timer 1
*** END OF TEST 31 *** *** END OF TEST 31 ***

View File

@@ -11,6 +11,8 @@
* COPYRIGHT (c) 1989-2009. * COPYRIGHT (c) 1989-2009.
* On-Line Applications Research Corporation (OAR). * On-Line Applications Research Corporation (OAR).
* *
* Copyright (c) 2009 embedded brains GmbH.
*
* The license and distribution terms for this file may be * The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at * found in the file LICENSE in this distribution or at
* http://www.rtems.com/license/LICENSE. * http://www.rtems.com/license/LICENSE.
@@ -35,6 +37,14 @@ rtems_timer_service_routine Should_not_fire_TSR(
TSR_fired = 1; TSR_fired = 1;
} }
rtems_timer_service_routine Do_nothing(
rtems_id ignored_id,
void *ignored_address
)
{
/* Do nothing */
}
static Watchdog_Interval schedule_time( void ) static Watchdog_Interval schedule_time( void )
{ {
const Watchdog_Control *watchdog = const Watchdog_Control *watchdog =
@@ -271,6 +281,67 @@ rtems_task Task_1(
status = rtems_timer_cancel( tmid ); status = rtems_timer_cancel( tmid );
directive_failed( status, "rtems_timer_cancel" ); directive_failed( status, "rtems_timer_cancel" );
/* TOD timer insert with non empty TOD timer chain */
status = rtems_clock_get_tod( &time );
directive_failed( status, "rtems_clock_get_tod" );
time.second += 3;
puts( "TA1 - rtems_timer_server_fire_when - timer 1 in 3 seconds" );
status = rtems_timer_server_fire_when( tmid, &time, Do_nothing, NULL );
directive_failed( status, "rtems_timer_server_fire_when" );
puts( "TA1 - rtems_timer_server_fire_when - timer 2 in 3 seconds" );
status = rtems_timer_server_fire_when( tmid2, &time, Do_nothing, NULL );
directive_failed( status, "rtems_timer_server_fire_when" );
puts( "TA1 - rtems_task_wake_after - 1 second" );
status = rtems_task_wake_after( 1 * rtems_clock_get_ticks_per_second() );
directive_failed( status, "rtems_task_wake_after" );
puts( "TA1 - rtems_timer_server_fire_when - timer 2 in 3 seconds" );
status = rtems_timer_server_fire_when( tmid2, &time, Do_nothing, NULL );
directive_failed( status, "rtems_timer_server_fire_when" );
puts( "TA1 - rtems_timer_cancel - timer 1" );
status = rtems_timer_cancel( tmid );
directive_failed( status, "rtems_timer_cancel" );
puts( "TA1 - rtems_timer_cancel - timer 2" );
status = rtems_timer_cancel( tmid2 );
directive_failed( status, "rtems_timer_cancel" );
/* TOD chain processing with time wrap */
time.second = 30;
status = rtems_clock_set( &time );
directive_failed( status, "rtems_clock_set" );
time.second = 31;
puts( "TA1 - rtems_timer_server_fire_when - timer 1 in 1 seconds" );
status = rtems_timer_server_fire_when( tmid, &time, Do_nothing, NULL );
directive_failed( status, "rtems_timer_server_fire_when" );
time.second = 29;
status = rtems_clock_set( &time );
directive_failed( status, "rtems_clock_set" );
puts( "TA1 - rtems_timer_server_fire_after - timer 2 in 1 tick" );
status = rtems_timer_server_fire_after( tmid2, 1, Do_nothing, NULL );
directive_failed( status, "rtems_timer_server_fire_after" );
puts( "TA1 - rtems_task_wake_after - 1 tick" );
status = rtems_task_wake_after( 1 );
directive_failed( status, "rtems_task_wake_after" );
puts( "TA1 - rtems_timer_cancel - timer 1" );
status = rtems_timer_cancel( tmid );
directive_failed( status, "rtems_timer_cancel" );
/* delete */ /* delete */
puts( "TA1 - rtems_task_wake_after - YIELD (only task at priority)" ); puts( "TA1 - rtems_task_wake_after - YIELD (only task at priority)" );
status = rtems_task_wake_after( RTEMS_YIELD_PROCESSOR ); status = rtems_task_wake_after( RTEMS_YIELD_PROCESSOR );

View File

@@ -1,6 +1,10 @@
/* /*
* COPYRIGHT (c) 1989-2009. * Copyright (c) 2009
* On-Line Applications Research Corporation (OAR). * embedded brains GmbH
* Obere Lagerstr. 30
* D-82178 Puchheim
* Germany
* <rtems@embedded-brains.de>
* *
* The license and distribution terms for this file may be * The license and distribution terms for this file may be
* found in the file LICENSE in this distribution or at * found in the file LICENSE in this distribution or at
@@ -12,33 +16,55 @@
#include <tmacros.h> #include <tmacros.h>
#include <intrcritical.h> #include <intrcritical.h>
static rtems_id timer_0; #define TIMER_COUNT 4
static rtems_id timer_1;
static rtems_id timer_2;
volatile bool case_hit; #define TIMER_TRIGGER 0
#define TIMER_RESET 1
#define TIMER_NEVER_INTERVAL 2
#define TIMER_NEVER_TOD 3
static rtems_id timer [TIMER_COUNT];
static rtems_time_of_day tod;
static volatile bool case_hit;
static void never_callback(rtems_id timer, void *arg) static void never_callback(rtems_id timer, void *arg)
{ {
rtems_test_assert(false); rtems_test_assert(false);
} }
static void reset_callback(rtems_id timer, void *arg) static void reset_tod_timer(void)
{ {
rtems_status_code sc = RTEMS_SUCCESSFUL; rtems_status_code sc = RTEMS_SUCCESSFUL;
sc = rtems_timer_reset(timer_0); sc = rtems_timer_server_fire_when(
timer [TIMER_NEVER_TOD],
&tod,
never_callback,
NULL
);
directive_failed_with_level(sc, "rtems_timer_server_fire_after", -1);
}
static void reset_callback(rtems_id timer_id, void *arg)
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
sc = rtems_timer_reset(timer [TIMER_RESET]);
directive_failed_with_level(sc, "rtems_timer_reset", -1); directive_failed_with_level(sc, "rtems_timer_reset", -1);
sc = rtems_timer_reset(timer_1); sc = rtems_timer_reset(timer [TIMER_NEVER_INTERVAL]);
directive_failed_with_level(sc, "rtems_timer_reset", -1); directive_failed_with_level(sc, "rtems_timer_reset", -1);
reset_tod_timer();
if (!case_hit) { if (!case_hit) {
case_hit = _Timer_server->insert_chain != NULL; case_hit = _Timer_server->insert_chain != NULL;
} }
} }
static void trigger_callback(rtems_id timer, void *arg) static void trigger_callback(rtems_id timer_id, void *arg)
{ {
rtems_status_code sc = RTEMS_SUCCESSFUL; rtems_status_code sc = RTEMS_SUCCESSFUL;
@@ -52,33 +78,30 @@ static void trigger_callback(rtems_id timer, void *arg)
rtems_test_exit(0); rtems_test_exit(0);
} }
sc = rtems_timer_reset(timer_2); sc = rtems_timer_reset(timer [TIMER_TRIGGER]);
directive_failed(sc, "rtems_timer_reset"); directive_failed(sc, "rtems_timer_reset");
} }
rtems_task Init( rtems_task_argument ignored ) rtems_task Init( rtems_task_argument ignored )
{ {
rtems_status_code sc = RTEMS_SUCCESSFUL; rtems_status_code sc = RTEMS_SUCCESSFUL;
size_t i = 0;
puts("\n\n*** TEST INTERRUPT CRITICAL SECTION 17 ***"); puts("\n\n*** TEST INTERRUPT CRITICAL SECTION 17 ***");
sc = rtems_timer_create( build_time(&tod, 4, 12, 2009, 9, 34, 11, 0);
rtems_build_name('T', 'I', 'M', '0'), sc = rtems_clock_set(&tod);
&timer_0 directive_failed(sc, "rtems_clock_set");
);
directive_failed(sc, "rtems_timer_create");
sc = rtems_timer_create( ++tod.year;
rtems_build_name('T', 'I', 'M', '1'),
&timer_1
);
directive_failed(sc, "rtems_timer_create");
for (i = 0; i < TIMER_COUNT; ++i) {
sc = rtems_timer_create( sc = rtems_timer_create(
rtems_build_name('T', 'I', 'M', '2'), rtems_build_name('T', 'I', 'M', '0' + i),
&timer_2 &timer [i]
); );
directive_failed(sc, "rtems_timer_create"); directive_failed(sc, "rtems_timer_create");
}
sc = rtems_timer_initiate_server( sc = rtems_timer_initiate_server(
RTEMS_MINIMUM_PRIORITY, RTEMS_MINIMUM_PRIORITY,
@@ -88,15 +111,17 @@ rtems_task Init( rtems_task_argument ignored )
directive_failed(sc, "rtems_timer_initiate_server"); directive_failed(sc, "rtems_timer_initiate_server");
sc = rtems_timer_server_fire_after( sc = rtems_timer_server_fire_after(
timer_0, timer [TIMER_NEVER_INTERVAL],
2, 2,
never_callback, never_callback,
NULL NULL
); );
directive_failed(sc, "rtems_timer_server_fire_after"); directive_failed(sc, "rtems_timer_server_fire_after");
reset_tod_timer();
sc = rtems_timer_fire_after( sc = rtems_timer_fire_after(
timer_1, timer [TIMER_RESET],
1, 1,
reset_callback, reset_callback,
NULL NULL
@@ -104,7 +129,7 @@ rtems_task Init( rtems_task_argument ignored )
directive_failed(sc, "rtems_timer_fire_after"); directive_failed(sc, "rtems_timer_fire_after");
sc = rtems_timer_server_fire_after( sc = rtems_timer_server_fire_after(
timer_2, timer [TIMER_TRIGGER],
1, 1,
trigger_callback, trigger_callback,
NULL NULL
@@ -122,7 +147,7 @@ rtems_task Init( rtems_task_argument ignored )
#define CONFIGURE_MICROSECONDS_PER_TICK 1000 #define CONFIGURE_MICROSECONDS_PER_TICK 1000
#define CONFIGURE_MAXIMUM_TASKS 2 #define CONFIGURE_MAXIMUM_TASKS 2
#define CONFIGURE_MAXIMUM_TIMERS 3 #define CONFIGURE_MAXIMUM_TIMERS 4
#define CONFIGURE_RTEMS_INIT_TASKS_TABLE #define CONFIGURE_RTEMS_INIT_TASKS_TABLE