[rtems commit] sptests/sp39: Convert to sptests/spintrcritical21
Sebastian Huber
sebh at rtems.org
Wed Sep 10 05:08:05 UTC 2014
Module: rtems
Branch: master
Commit: 4984ee4aa227cd9a4e4d3f171ea9317d1bc3e163
Changeset: http://git.rtems.org/rtems/commit/?id=4984ee4aa227cd9a4e4d3f171ea9317d1bc3e163
Author: Sebastian Huber <sebastian.huber at embedded-brains.de>
Date: Tue Sep 9 17:13:51 2014 +0200
sptests/sp39: Convert to sptests/spintrcritical21
Use interrupt critical section test support. Do not print end of test
message in case of failure.
---
testsuites/sptests/Makefile.am | 3 +-
testsuites/sptests/configure.ac | 2 +-
testsuites/sptests/sp39/Makefile.am | 22 ----
testsuites/sptests/spintrcritical21/Makefile.am | 20 +++
.../sptests/{sp39 => spintrcritical21}/init.c | 134 ++++++++------------
.../spintrcritical21.doc} | 2 +-
.../spintrcritical21.scn} | 4 +-
.../sptests/{sp39 => spintrcritical21}/system.h | 1 +
8 files changed, 83 insertions(+), 105 deletions(-)
diff --git a/testsuites/sptests/Makefile.am b/testsuites/sptests/Makefile.am
index a0acbc3..3df4ffb 100644
--- a/testsuites/sptests/Makefile.am
+++ b/testsuites/sptests/Makefile.am
@@ -6,7 +6,7 @@ _SUBDIRS = \
sp01 sp02 sp03 sp04 sp05 sp06 sp07 sp08 \
sp10 sp11 sp12 sp13 sp14 sp15 sp16 sp17 sp18 sp19 \
sp20 sp21 sp22 sp23 sp24 sp25 sp26 sp27 sp27a \
- sp30 sp31 sp32 sp33 sp34 sp35 sp37 sp38 sp39 \
+ sp30 sp31 sp32 sp33 sp34 sp35 sp37 sp38 \
sp40 sp41 sp42 sp43 sp44 sp45 sp46 sp47 sp48 sp49 \
sp50 sp51 sp52 sp53 sp54 sp55 sp56 sp57 sp58 sp59 \
sp60 sp62 sp63 sp64 sp65 sp66 sp67 sp68 sp69 \
@@ -53,6 +53,7 @@ _SUBDIRS += sptls02
endif
_SUBDIRS += sptls01
_SUBDIRS += spintrcritical20
+_SUBDIRS += spintrcritical21
_SUBDIRS += spcontext01
_SUBDIRS += spfatal26
_SUBDIRS += speventtransient01
diff --git a/testsuites/sptests/configure.ac b/testsuites/sptests/configure.ac
index d376a4f..fa149ab 100644
--- a/testsuites/sptests/configure.ac
+++ b/testsuites/sptests/configure.ac
@@ -53,6 +53,7 @@ spcpucounter01/Makefile
sptls02/Makefile
sptls01/Makefile
spintrcritical20/Makefile
+spintrcritical21/Makefile
spcontext01/Makefile
spfatal26/Makefile
spinternalerror02/Makefile
@@ -98,7 +99,6 @@ sp35/Makefile
sp36/Makefile
sp37/Makefile
sp38/Makefile
-sp39/Makefile
sp40/Makefile
sp41/Makefile
sp42/Makefile
diff --git a/testsuites/sptests/sp39/Makefile.am b/testsuites/sptests/sp39/Makefile.am
deleted file mode 100644
index fc091da..0000000
--- a/testsuites/sptests/sp39/Makefile.am
+++ /dev/null
@@ -1,22 +0,0 @@
-
-rtems_tests_PROGRAMS = sp39
-sp39_SOURCES = init.c system.h
-
-dist_rtems_tests_DATA = sp39.scn
-dist_rtems_tests_DATA += sp39.doc
-
-include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP at .cfg
-include $(top_srcdir)/../automake/compile.am
-include $(top_srcdir)/../automake/leaf.am
-
-
-AM_CPPFLAGS += -I$(top_srcdir)/../support/include
-
-LINK_OBJS = $(sp39_OBJECTS)
-LINK_LIBS = $(sp39_LDLIBS)
-
-sp39$(EXEEXT): $(sp39_OBJECTS) $(sp39_DEPENDENCIES)
- @rm -f sp39$(EXEEXT)
- $(make-exe)
-
-include $(top_srcdir)/../automake/local.am
diff --git a/testsuites/sptests/spintrcritical21/Makefile.am b/testsuites/sptests/spintrcritical21/Makefile.am
new file mode 100644
index 0000000..b53d000
--- /dev/null
+++ b/testsuites/sptests/spintrcritical21/Makefile.am
@@ -0,0 +1,20 @@
+rtems_tests_PROGRAMS = spintrcritical21
+spintrcritical21_SOURCES = init.c ../spintrcritical_support/intrcritical.c
+
+dist_rtems_tests_DATA = spintrcritical21.scn spintrcritical21.doc
+
+include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP at .cfg
+include $(top_srcdir)/../automake/compile.am
+include $(top_srcdir)/../automake/leaf.am
+
+AM_CPPFLAGS += -I$(top_srcdir)/../support/include
+AM_CPPFLAGS += -I$(top_srcdir)/spintrcritical_support
+
+LINK_OBJS = $(spintrcritical21_OBJECTS)
+LINK_LIBS = $(spintrcritical21_LDLIBS)
+
+spintrcritical21$(EXEEXT): $(spintrcritical21_OBJECTS) $(spintrcritical21_DEPENDENCIES)
+ @rm -f spintrcritical21$(EXEEXT)
+ $(make-exe)
+
+include $(top_srcdir)/../automake/local.am
diff --git a/testsuites/sptests/sp39/init.c b/testsuites/sptests/spintrcritical21/init.c
similarity index 55%
rename from testsuites/sptests/sp39/init.c
rename to testsuites/sptests/spintrcritical21/init.c
index b78cd7f..8b1ddcf 100644
--- a/testsuites/sptests/sp39/init.c
+++ b/testsuites/sptests/spintrcritical21/init.c
@@ -16,9 +16,11 @@
#define CONFIGURE_INIT
#include "system.h"
+#include <intrcritical.h>
+
#include <rtems/rtems/eventimpl.h>
-const char rtems_test_name[] = "SP 39";
+const char rtems_test_name[] = "SPINTRCRITICAL 21";
/*
* ERROR CHECKING NOTE:
@@ -28,21 +30,13 @@ const char rtems_test_name[] = "SP 39";
* fatal_directive_check_status_only() not directive_failed().
*/
-rtems_timer_service_routine test_event_from_isr(
- rtems_id timer,
- void *arg
-);
-rtems_timer_service_routine test_event_with_timeout_from_isr(
- rtems_id timer,
- void *arg
-);
+static volatile bool case_hit;
-volatile bool case_hit;
+static rtems_id main_task;
-rtems_id main_task;
-rtems_id other_task;
+static rtems_id other_task;
-rtems_timer_service_routine test_event_from_isr(
+static rtems_timer_service_routine test_event_from_isr(
rtems_id timer,
void *arg
)
@@ -64,13 +58,26 @@ rtems_timer_service_routine test_event_from_isr(
status = rtems_event_send( main_task, 0x02 );
fatal_directive_check_status_only( status, RTEMS_SUCCESSFUL, "event send" );
- case_hit = TRUE;
+ case_hit = true;
}
status = rtems_event_send( main_task, 0x01 );
fatal_directive_check_status_only( status, RTEMS_SUCCESSFUL, "event send" );
}
-rtems_timer_service_routine test_event_with_timeout_from_isr(
+static bool test_body_event_from_isr( void *arg )
+{
+ rtems_status_code status;
+ rtems_event_set out;
+
+ (void) arg;
+
+ status = rtems_event_receive( 0x01, RTEMS_DEFAULT_OPTIONS, 0, &out );
+ rtems_test_assert( status == RTEMS_SUCCESSFUL );
+
+ return case_hit;
+}
+
+static rtems_timer_service_routine test_event_with_timeout_from_isr(
rtems_id timer,
void *arg
)
@@ -82,33 +89,35 @@ rtems_timer_service_routine test_event_with_timeout_from_isr(
* We want to catch the task while it is blocking. Otherwise
* just send and make it happy.
*/
- case_hit = TRUE;
+ case_hit = true;
}
status = rtems_event_send( main_task, 0x01 );
fatal_directive_check_status_only( status, RTEMS_SUCCESSFUL, "event send" );
}
+static bool test_body_event_with_timeout_from_isr( void *arg )
+{
+ rtems_status_code status;
+ rtems_event_set out;
+
+ (void) arg;
+
+ status = rtems_event_receive( 0x01, RTEMS_DEFAULT_OPTIONS, 1, &out );
+ rtems_test_assert( status == RTEMS_SUCCESSFUL || status == RTEMS_TIMEOUT );
+
+ return case_hit;
+}
+
rtems_task Init(
rtems_task_argument argument
)
{
rtems_status_code status;
- rtems_id timer;
- rtems_event_set out;
- int i;
- int max;
- uint32_t iterations = 0;
TEST_BEGIN();
main_task = rtems_task_self();
- /*
- * Timer used in multiple ways
- */
- status = rtems_timer_create( 1, &timer );
- directive_failed( status, "rtems_timer_create" );
-
status = rtems_task_create(
0xa5a5a5a5,
1,
@@ -122,71 +131,40 @@ rtems_task Init(
/*
* Test Event send successful from ISR -- receive is forever
*/
- case_hit = FALSE;
- iterations = 0;
- max = 1;
-
- while (1) {
- if ( case_hit )
- break;
- status = rtems_timer_fire_after( timer, 1, test_event_from_isr, NULL );
- directive_failed( status, "timer_fire_after failed" );
-
- for (i=0 ; i<max ; i++ )
- if ( _Event_Sync_state == THREAD_BLOCKING_OPERATION_SATISFIED )
- break;
-
- status = rtems_event_receive( 0x01, RTEMS_DEFAULT_OPTIONS, 0, &out );
- directive_failed( status, "rtems_event_receive" );
- if ( case_hit == TRUE )
- break;
- max += 2;
-
- /* with our clock tick, this is about 30 seconds */
- if ( ++iterations >= 4L * 1000L * 30L)
- break;
- }
+
+ case_hit = false;
+ interrupt_critical_section_test(
+ test_body_event_from_isr,
+ NULL,
+ test_event_from_isr
+ );
printf(
"Event sent from ISR hitting synchronization point has %soccurred\n",
- (( case_hit == TRUE ) ? "" : "NOT ")
+ case_hit ? "" : "NOT "
);
+ rtems_test_assert( case_hit );
+
/*
* Test Event send successful from ISR -- receive has timeout
*/
- case_hit = FALSE;
- iterations = 0;
- max = 1;
-
- while (1) {
- if ( case_hit )
- break;
- status = rtems_timer_fire_after(
- timer, 1, test_event_with_timeout_from_isr, NULL );
- directive_failed( status, "timer_fire_after failed" );
-
- for (i=0 ; i<max ; i++ )
- if ( _Event_Sync_state == THREAD_BLOCKING_OPERATION_SATISFIED )
- break;
-
- status = rtems_event_receive( 0x01, RTEMS_DEFAULT_OPTIONS, 10, &out );
- directive_failed( status, "rtems_event_receive" );
- if ( case_hit == TRUE )
- break;
- max += 2;
-
- /* with our clock tick, this is about 30 seconds */
- if ( ++iterations >= 4L * 1000L * 30L)
- break;
- }
+
+ case_hit = false;
+ interrupt_critical_section_test(
+ test_body_event_with_timeout_from_isr,
+ NULL,
+ test_event_with_timeout_from_isr
+ );
printf(
"Event sent from ISR (with timeout) hitting synchronization "
"point has %soccurred\n",
- (( case_hit == TRUE ) ? "" : "NOT ")
+ case_hit ? "" : "NOT "
);
+ rtems_test_assert( case_hit );
+
TEST_END();
rtems_test_exit( 0 );
}
diff --git a/testsuites/sptests/sp39/sp39.doc b/testsuites/sptests/spintrcritical21/spintrcritical21.doc
similarity index 94%
rename from testsuites/sptests/sp39/sp39.doc
rename to testsuites/sptests/spintrcritical21/spintrcritical21.doc
index e5b7510..94423e1 100644
--- a/testsuites/sptests/sp39/sp39.doc
+++ b/testsuites/sptests/spintrcritical21/spintrcritical21.doc
@@ -8,7 +8,7 @@
This file describes the directives and concepts tested by this test set.
-test set name: sp39
+test set name: spintrcritical21
directives:
diff --git a/testsuites/sptests/sp39/sp39.scn b/testsuites/sptests/spintrcritical21/spintrcritical21.scn
similarity index 64%
rename from testsuites/sptests/sp39/sp39.scn
rename to testsuites/sptests/spintrcritical21/spintrcritical21.scn
index adf690b..d7a1998 100644
--- a/testsuites/sptests/sp39/sp39.scn
+++ b/testsuites/sptests/spintrcritical21/spintrcritical21.scn
@@ -1,4 +1,4 @@
-*** TEST 39 ***
+*** BEGIN OF TEST SPINTRCRITICAL 21 ***
Event sent from ISR hitting synchronization point has occurred
Event sent from ISR (with timeout) hitting synchronization point has occurred
-*** END OF TEST 39 ***
+*** END OF TEST SPINTRCRITICAL 21 ***
diff --git a/testsuites/sptests/sp39/system.h b/testsuites/sptests/spintrcritical21/system.h
similarity index 95%
rename from testsuites/sptests/sp39/system.h
rename to testsuites/sptests/spintrcritical21/system.h
index f5f1f25..f9111c0 100644
--- a/testsuites/sptests/sp39/system.h
+++ b/testsuites/sptests/spintrcritical21/system.h
@@ -32,6 +32,7 @@ rtems_task Init(
#define CONFIGURE_MAXIMUM_TASKS 2
#define CONFIGURE_MAXIMUM_TIMERS 1
+#define CONFIGURE_MAXIMUM_USER_EXTENSIONS 1
#include <rtems/confdefs.h>
More information about the vc
mailing list