forked from Imagelibrary/rtems
2009-07-23 Joel Sherrill <joel.sherrill@OARcorp.com>
* Makefile.am, configure.ac: Add new tests to exercise cases where a timer is scheduled from an ISR while it is being scheduled at the task level. * spintrcritical13/.cvsignore, spintrcritical13/Makefile.am, spintrcritical13/init.c, spintrcritical13/spintrcritical13.doc, spintrcritical13/spintrcritical13.scn, spintrcritical14/.cvsignore, spintrcritical14/Makefile.am, spintrcritical14/spintrcritical14.doc, spintrcritical14/spintrcritical14.scn: New files.
This commit is contained in:
@@ -1,3 +1,14 @@
|
||||
2009-07-23 Joel Sherrill <joel.sherrill@OARcorp.com>
|
||||
|
||||
* Makefile.am, configure.ac: Add new tests to exercise cases where a
|
||||
timer is scheduled from an ISR while it is being scheduled at the
|
||||
task level.
|
||||
* spintrcritical13/.cvsignore, spintrcritical13/Makefile.am,
|
||||
spintrcritical13/init.c, spintrcritical13/spintrcritical13.doc,
|
||||
spintrcritical13/spintrcritical13.scn, spintrcritical14/.cvsignore,
|
||||
spintrcritical14/Makefile.am, spintrcritical14/spintrcritical14.doc,
|
||||
spintrcritical14/spintrcritical14.scn: New files.
|
||||
|
||||
2009-07-23 Joel Sherrill <joel.sherrill@OARcorp.com>
|
||||
|
||||
* spintrcritical01/init.c, spintrcritical06/init.c,
|
||||
|
||||
@@ -20,7 +20,8 @@ SUBDIRS = \
|
||||
spfatal08 spfatal09 spfatal10 spfatal11 spfatal12 \
|
||||
spintrcritical01 spintrcritical02 spintrcritical03 spintrcritical04 \
|
||||
spintrcritical05 spintrcritical06 spintrcritical07 spintrcritical08 \
|
||||
spintrcritical09 spintrcritical10 spintrcritical11 spintrcritical12
|
||||
spintrcritical09 spintrcritical10 spintrcritical11 spintrcritical12 \
|
||||
spintrcritical13 spintrcritical14
|
||||
|
||||
DIST_SUBDIRS = $(SUBDIRS) spfatal_support spintrcritical_support
|
||||
EXTRA_DIST = spfatal_support/init.c spfatal_support/system.h
|
||||
|
||||
@@ -111,6 +111,8 @@ spintrcritical09/Makefile
|
||||
spintrcritical10/Makefile
|
||||
spintrcritical11/Makefile
|
||||
spintrcritical12/Makefile
|
||||
spintrcritical13/Makefile
|
||||
spintrcritical14/Makefile
|
||||
spobjgetnext/Makefile
|
||||
spprintk/Makefile
|
||||
spsize/Makefile
|
||||
|
||||
2
testsuites/sptests/spintrcritical13/.cvsignore
Normal file
2
testsuites/sptests/spintrcritical13/.cvsignore
Normal file
@@ -0,0 +1,2 @@
|
||||
Makefile
|
||||
Makefile.in
|
||||
31
testsuites/sptests/spintrcritical13/Makefile.am
Normal file
31
testsuites/sptests/spintrcritical13/Makefile.am
Normal file
@@ -0,0 +1,31 @@
|
||||
##
|
||||
## $Id$
|
||||
##
|
||||
|
||||
MANAGERS = all
|
||||
|
||||
rtems_tests_PROGRAMS = spintrcritical13
|
||||
spintrcritical13_SOURCES = init.c \
|
||||
../spintrcritical_support/intrcritical.c
|
||||
|
||||
dist_rtems_tests_DATA = spintrcritical13.scn
|
||||
dist_rtems_tests_DATA += spintrcritical13.doc
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(top_srcdir)/../automake/compile.am
|
||||
include $(top_srcdir)/../automake/leaf.am
|
||||
|
||||
spintrcritical13_LDADD = $(MANAGERS_NOT_WANTED:%=$(PROJECT_LIB)/no-%.rel)
|
||||
|
||||
AM_CPPFLAGS += -I$(top_srcdir)/../support/include
|
||||
AM_CPPFLAGS += -I$(top_srcdir)/spintrcritical_support
|
||||
AM_CPPFLAGS += -DFIRE_AFTER
|
||||
|
||||
LINK_OBJS = $(spintrcritical13_OBJECTS) $(spintrcritical13_LDADD)
|
||||
LINK_LIBS = $(spintrcritical13_LDLIBS)
|
||||
|
||||
spintrcritical13$(EXEEXT): $(spintrcritical13_OBJECTS) $(spintrcritical13_DEPENDENCIES)
|
||||
@rm -f spintrcritical13$(EXEEXT)
|
||||
$(make-exe)
|
||||
|
||||
include $(top_srcdir)/../automake/local.am
|
||||
108
testsuites/sptests/spintrcritical13/init.c
Normal file
108
testsuites/sptests/spintrcritical13/init.c
Normal file
@@ -0,0 +1,108 @@
|
||||
/*
|
||||
* COPYRIGHT (c) 1989-2009.
|
||||
* 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.rtems.com/license/LICENSE.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#include <tmacros.h>
|
||||
#include <intrcritical.h>
|
||||
|
||||
#if defined(FIRE_AFTER)
|
||||
#define TEST_NAME "13"
|
||||
#define TEST_STRING "Timer Fire After"
|
||||
#define TEST_DIRECTIVE rtems_timer_fire_after
|
||||
|
||||
#elif defined(SERVER_FIRE_AFTER)
|
||||
#define TEST_NAME "14"
|
||||
#define TEST_STRING "Timer Server Fire After"
|
||||
#define TEST_DIRECTIVE rtems_timer_server_fire_after
|
||||
|
||||
#else
|
||||
#error "Test Mode not defined"
|
||||
|
||||
#endif
|
||||
|
||||
rtems_id Main_task;
|
||||
rtems_id Timer;
|
||||
|
||||
rtems_timer_service_routine TimerMethod(
|
||||
rtems_id timer,
|
||||
void *arg
|
||||
)
|
||||
{
|
||||
}
|
||||
|
||||
rtems_timer_service_routine test_release_from_isr(
|
||||
rtems_id timer,
|
||||
void *arg
|
||||
)
|
||||
{
|
||||
(void) rtems_timer_fire_after( Timer, 10, TimerMethod, NULL );
|
||||
}
|
||||
|
||||
rtems_task Init(
|
||||
rtems_task_argument ignored
|
||||
)
|
||||
{
|
||||
rtems_status_code sc;
|
||||
int resets;
|
||||
|
||||
puts( "\n\n*** TEST INTERRUPT CRITICAL SECTION " TEST_NAME " ***" );
|
||||
|
||||
puts( "Init - Trying to generate timer fire from ISR while firing" );
|
||||
puts( "Init - Variation is: " TEST_STRING );
|
||||
|
||||
puts( "Init - There is no way for the test to know if it hits the case" );
|
||||
|
||||
#if defined(SERVER_FIRE_AFTER)
|
||||
/* initiate timer server */
|
||||
sc = rtems_timer_initiate_server(
|
||||
RTEMS_MINIMUM_PRIORITY,
|
||||
RTEMS_MINIMUM_STACK_SIZE,
|
||||
RTEMS_DEFAULT_ATTRIBUTES
|
||||
);
|
||||
directive_failed( sc, "rtems_timer_initiate_server" );
|
||||
#endif
|
||||
|
||||
puts( "Init - rtems_timer_create - OK" );
|
||||
sc = rtems_timer_create( rtems_build_name( 'P', 'E', 'R', '1' ), &Timer);
|
||||
directive_failed( sc, "rtems_timer_create" );
|
||||
|
||||
Main_task = rtems_task_self();
|
||||
|
||||
interrupt_critical_section_test_support_initialize( test_release_from_isr );
|
||||
|
||||
for (resets=0 ; resets<10 ;) {
|
||||
if ( interrupt_critical_section_test_support_delay() )
|
||||
resets++;
|
||||
|
||||
sc = TEST_DIRECTIVE( Timer, 10, TimerMethod, NULL );
|
||||
directive_failed( sc, "rtems_timer_fire_after");
|
||||
}
|
||||
|
||||
puts( "*** END OF TEST INTERRUPT CRITICAL SECTION " TEST_NAME " ***" );
|
||||
rtems_test_exit(0);
|
||||
}
|
||||
|
||||
/* configuration information */
|
||||
|
||||
#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
|
||||
#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
|
||||
|
||||
#if defined(SERVER_FIRE_AFTER)
|
||||
#define CONFIGURE_MAXIMUM_TASKS 3
|
||||
#else
|
||||
#define CONFIGURE_MAXIMUM_TASKS 2
|
||||
#endif
|
||||
#define CONFIGURE_MAXIMUM_TIMERS 2
|
||||
#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
|
||||
|
||||
#define CONFIGURE_INIT
|
||||
#include <rtems/confdefs.h>
|
||||
|
||||
/* global variables */
|
||||
24
testsuites/sptests/spintrcritical13/spintrcritical13.doc
Normal file
24
testsuites/sptests/spintrcritical13/spintrcritical13.doc
Normal file
@@ -0,0 +1,24 @@
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
# COPYRIGHT (c) 1989-2009.
|
||||
# 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.rtems.com/license/LICENSE.
|
||||
#
|
||||
|
||||
This file describes the directives and concepts tested by this test set.
|
||||
|
||||
test set name: spintrcritical13
|
||||
|
||||
directives:
|
||||
|
||||
rtems_timer_create
|
||||
rtems_timer_fire_after
|
||||
|
||||
concepts:
|
||||
|
||||
+ Ensure that firing a timer from an ISR while it is being scheduled by
|
||||
a thread using rtems_timer_fire_after works as expected.
|
||||
6
testsuites/sptests/spintrcritical13/spintrcritical13.scn
Normal file
6
testsuites/sptests/spintrcritical13/spintrcritical13.scn
Normal file
@@ -0,0 +1,6 @@
|
||||
*** TEST INTERRUPT CRITICAL SECTION 13 ***
|
||||
Init - Trying to generate timer fire from ISR while firing
|
||||
Init - Variation is: Timer Server Fire After
|
||||
Init - There is no way for the test to know if it hits the case
|
||||
Init - rtems_timer_create - OK
|
||||
Support - rtems_timer_create - creating timer 1
|
||||
2
testsuites/sptests/spintrcritical14/.cvsignore
Normal file
2
testsuites/sptests/spintrcritical14/.cvsignore
Normal file
@@ -0,0 +1,2 @@
|
||||
Makefile
|
||||
Makefile.in
|
||||
31
testsuites/sptests/spintrcritical14/Makefile.am
Normal file
31
testsuites/sptests/spintrcritical14/Makefile.am
Normal file
@@ -0,0 +1,31 @@
|
||||
##
|
||||
## $Id$
|
||||
##
|
||||
|
||||
MANAGERS = all
|
||||
|
||||
rtems_tests_PROGRAMS = spintrcritical14
|
||||
spintrcritical14_SOURCES = ../spintrcritical13/init.c \
|
||||
../spintrcritical_support/intrcritical.c
|
||||
|
||||
dist_rtems_tests_DATA = spintrcritical14.scn
|
||||
dist_rtems_tests_DATA += spintrcritical14.doc
|
||||
|
||||
include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
|
||||
include $(top_srcdir)/../automake/compile.am
|
||||
include $(top_srcdir)/../automake/leaf.am
|
||||
|
||||
spintrcritical14_LDADD = $(MANAGERS_NOT_WANTED:%=$(PROJECT_LIB)/no-%.rel)
|
||||
|
||||
AM_CPPFLAGS += -I$(top_srcdir)/../support/include
|
||||
AM_CPPFLAGS += -I$(top_srcdir)/spintrcritical_support
|
||||
AM_CPPFLAGS += -DSERVER_FIRE_AFTER
|
||||
|
||||
LINK_OBJS = $(spintrcritical14_OBJECTS) $(spintrcritical14_LDADD)
|
||||
LINK_LIBS = $(spintrcritical14_LDLIBS)
|
||||
|
||||
spintrcritical14$(EXEEXT): $(spintrcritical14_OBJECTS) $(spintrcritical14_DEPENDENCIES)
|
||||
@rm -f spintrcritical14$(EXEEXT)
|
||||
$(make-exe)
|
||||
|
||||
include $(top_srcdir)/../automake/local.am
|
||||
24
testsuites/sptests/spintrcritical14/spintrcritical14.doc
Normal file
24
testsuites/sptests/spintrcritical14/spintrcritical14.doc
Normal file
@@ -0,0 +1,24 @@
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
# COPYRIGHT (c) 1989-2009.
|
||||
# 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.rtems.com/license/LICENSE.
|
||||
#
|
||||
|
||||
This file describes the directives and concepts tested by this test set.
|
||||
|
||||
test set name: spintrcritical14
|
||||
|
||||
directives:
|
||||
|
||||
rtems_timer_create
|
||||
rtems_timer_server_fire_after
|
||||
|
||||
concepts:
|
||||
|
||||
+ Ensure that firing a timer from an ISR while it is being scheduled by
|
||||
a thread using rtems_timer_server_fire_after works as expected.
|
||||
6
testsuites/sptests/spintrcritical14/spintrcritical14.scn
Normal file
6
testsuites/sptests/spintrcritical14/spintrcritical14.scn
Normal file
@@ -0,0 +1,6 @@
|
||||
*** TEST INTERRUPT CRITICAL SECTION 14 ***
|
||||
Init - Trying to generate timer fire from ISR while firing
|
||||
Init - Variation is: Timer Fire After
|
||||
Init - There is no way for the test to know if it hits the case
|
||||
Init - rtems_timer_create - OK
|
||||
Support - rtems_timer_create - creating timer 1
|
||||
Reference in New Issue
Block a user