summaryrefslogtreecommitdiffstats
path: root/testsuites
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2009-09-14 20:05:44 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2009-09-14 20:05:44 +0000
commita5b04dabd923fcb3a9d1586d9ff01bdc81de83ba (patch)
tree7fa8a1d9c24a741cf28832d5f5cc005ba2ddc1ca /testsuites
parent2009-09-14 Joel Sherrill <joel.sherrill@OARcorp.com> (diff)
downloadrtems-a5b04dabd923fcb3a9d1586d9ff01bdc81de83ba.tar.bz2
2009-09-14 Joel Sherrill <joel.sherrill@OARcorp.com>
* Makefile.am, configure.ac, sp65/init.c: Add new test to exercise very simple priority ceiling case that was previously only tested via the POSIX API. * sp66/.cvsignore, sp66/Makefile.am, sp66/init.c, sp66/sp66.doc, sp66/sp66.scn: New files.
Diffstat (limited to 'testsuites')
-rw-r--r--testsuites/sptests/ChangeLog8
-rw-r--r--testsuites/sptests/Makefile.am2
-rw-r--r--testsuites/sptests/configure.ac4
-rw-r--r--testsuites/sptests/sp65/init.c21
-rw-r--r--testsuites/sptests/sp66/.cvsignore2
-rw-r--r--testsuites/sptests/sp66/Makefile.am30
-rw-r--r--testsuites/sptests/sp66/init.c97
-rw-r--r--testsuites/sptests/sp66/sp66.doc27
-rw-r--r--testsuites/sptests/sp66/sp66.scn8
9 files changed, 192 insertions, 7 deletions
diff --git a/testsuites/sptests/ChangeLog b/testsuites/sptests/ChangeLog
index 399aa51dac..0f9699c380 100644
--- a/testsuites/sptests/ChangeLog
+++ b/testsuites/sptests/ChangeLog
@@ -1,3 +1,11 @@
+2009-09-14 Joel Sherrill <joel.sherrill@OARcorp.com>
+
+ * Makefile.am, configure.ac, sp65/init.c: Add new test to exercise very
+ simple priority ceiling case that was previously only tested via the
+ POSIX API.
+ * sp66/.cvsignore, sp66/Makefile.am, sp66/init.c, sp66/sp66.doc,
+ sp66/sp66.scn: New files.
+
2009-09-13 Joel Sherrill <joel.sherrill@oarcorp.com>
* sp43/Makefile.am, sp43/init.c, sp43/sp43.scn, sp43/system.h: Add test
diff --git a/testsuites/sptests/Makefile.am b/testsuites/sptests/Makefile.am
index 011b7b0158..791c296e87 100644
--- a/testsuites/sptests/Makefile.am
+++ b/testsuites/sptests/Makefile.am
@@ -13,7 +13,7 @@ SUBDIRS = \
sp30 sp31 sp32 sp33 sp34 sp35 sp37 sp38 sp39 \
sp40 sp41 sp42 sp43 sp44 sp45 sp46 sp47 sp48 sp49 \
sp50 sp51 sp52 sp53 sp54 sp55 sp56 sp57 sp58 sp59 \
- sp60 sp61 sp62 sp63 sp64 sp65 \
+ sp60 sp61 sp62 sp63 sp64 sp65 sp66 \
spchain spclockget spcoverage spobjgetnext spprintk spsize \
spstkalloc spthreadq01 spwatchdog spwkspace \
spfatal01 spfatal02 spfatal03 spfatal04 spfatal05 spfatal06 spfatal07 \
diff --git a/testsuites/sptests/configure.ac b/testsuites/sptests/configure.ac
index 9024150d73..fd00082f8b 100644
--- a/testsuites/sptests/configure.ac
+++ b/testsuites/sptests/configure.ac
@@ -23,6 +23,9 @@ RTEMS_CANONICALIZE_TOOLS
RTEMS_CHECK_CUSTOM_BSP(RTEMS_BSP)
+RTEMS_ENABLE_COVERAGE
+AM_CONDITIONAL([HAS_COVERAGE],[test $RTEMS_HAS_COVERAGE = "yes"])
+
# Explicitly list all Makefiles here
AC_CONFIG_FILES([Makefile
sp01/Makefile
@@ -91,6 +94,7 @@ sp62/Makefile
sp63/Makefile
sp64/Makefile
sp65/Makefile
+sp66/Makefile
spchain/Makefile
spclockget/Makefile
spcoverage/Makefile
diff --git a/testsuites/sptests/sp65/init.c b/testsuites/sptests/sp65/init.c
index ef81cdac71..e20cd62607 100644
--- a/testsuites/sptests/sp65/init.c
+++ b/testsuites/sptests/sp65/init.c
@@ -11,6 +11,14 @@
#include <tmacros.h>
+#if defined(INHERIT_CEILING)
+ #define TEST_NAME "66"
+ #define TASK_PRIORITY 2
+#else
+ #define TEST_NAME "65"
+ #define TASK_PRIORITY 1
+#endif
+
rtems_task Task_1(
rtems_task_argument arg
);
@@ -22,7 +30,7 @@ rtems_task Init(
int status, ceiling, old_ceiling;
rtems_id Mutex_id, Task_id;
- puts( "\n\n*** TEST 65 ***" );
+ puts( "\n\n*** TEST " TEST_NAME " ***" );
/*
* Create binary semaphore (a.k.a. Mutex) with Priority Ceiling
@@ -45,11 +53,11 @@ rtems_task Init(
puts( "Calling rtems_task_create" );
status = rtems_task_create( rtems_build_name( 'T', 'A', 'S', '1' ),
- 1,
- RTEMS_MINIMUM_STACK_SIZE,
- RTEMS_DEFAULT_MODES,
- RTEMS_DEFAULT_ATTRIBUTES,
- &Task_id
+ TASK_PRIORITY,
+ RTEMS_MINIMUM_STACK_SIZE,
+ RTEMS_DEFAULT_MODES,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &Task_id
);
directive_failed( status, "rtems_task_create" );
@@ -89,6 +97,7 @@ rtems_task Task_1(
#define CONFIGURE_MAXIMUM_TASKS 2
#define CONFIGURE_MAXIMUM_SEMAPHORES 1
+#define CONFIGURE_INIT_TASK_PRIORITY TASK_PRIORITY
#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
#define CONFIGURE_INIT
diff --git a/testsuites/sptests/sp66/.cvsignore b/testsuites/sptests/sp66/.cvsignore
new file mode 100644
index 0000000000..282522db03
--- /dev/null
+++ b/testsuites/sptests/sp66/.cvsignore
@@ -0,0 +1,2 @@
+Makefile
+Makefile.in
diff --git a/testsuites/sptests/sp66/Makefile.am b/testsuites/sptests/sp66/Makefile.am
new file mode 100644
index 0000000000..b40cdc5148
--- /dev/null
+++ b/testsuites/sptests/sp66/Makefile.am
@@ -0,0 +1,30 @@
+##
+## $Id$
+##
+
+MANAGERS = all
+
+rtems_tests_PROGRAMS = sp66
+sp66_SOURCES = ../sp65/init.c
+
+dist_rtems_tests_DATA = sp66.scn
+dist_rtems_tests_DATA += sp66.doc
+
+include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
+include $(top_srcdir)/../automake/compile.am
+include $(top_srcdir)/../automake/leaf.am
+
+sp66_LDADD = $(MANAGERS_NOT_WANTED:%=$(PROJECT_LIB)/no-%.rel)
+
+AM_CPPFLAGS += -I$(top_srcdir)/include
+AM_CPPFLAGS += -I$(top_srcdir)/../support/include
+AM_CPPFLAGS += -DINHERIT_CEILING
+
+LINK_OBJS = $(sp66_OBJECTS) $(sp66_LDADD)
+LINK_LIBS = $(sp66_LDLIBS)
+
+sp66$(EXEEXT): $(sp66_OBJECTS) $(sp66_DEPENDENCIES)
+ @rm -f sp66$(EXEEXT)
+ $(make-exe)
+
+include $(top_srcdir)/../automake/local.am
diff --git a/testsuites/sptests/sp66/init.c b/testsuites/sptests/sp66/init.c
new file mode 100644
index 0000000000..3cea6ee161
--- /dev/null
+++ b/testsuites/sptests/sp66/init.c
@@ -0,0 +1,97 @@
+/*
+ * 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>
+
+rtems_task Task_1(
+ rtems_task_argument arg
+);
+
+rtems_task Init(
+ rtems_task_argument ignored
+)
+{
+ int status, ceiling, old_ceiling;
+ rtems_id Mutex_id, Task_id;
+
+ puts( "\n\n*** TEST 66 ***" );
+
+ /*
+ * Create binary semaphore (a.k.a. Mutex) with Priority Ceiling
+ * attribute.
+ */
+
+ puts( "Creating semaphore" );
+ status = rtems_semaphore_create(
+ rtems_build_name( 's','e','m','1' ),
+ 1,
+ RTEMS_BINARY_SEMAPHORE | RTEMS_PRIORITY | RTEMS_PRIORITY_CEILING,
+ 1,
+ &Mutex_id
+ );
+ directive_failed( status, "rtems_semaphore_create" );
+
+ puts( "Calling rtems_semaphore_obtain" );
+ status = rtems_semaphore_obtain( Mutex_id, RTEMS_DEFAULT_OPTIONS, 0 );
+ directive_failed( status, "rtems_semaphore_obtain" );
+
+ puts( "Calling rtems_task_create" );
+ status = rtems_task_create( rtems_build_name( 'T', 'A', 'S', '1' ),
+ 2,
+ RTEMS_MINIMUM_STACK_SIZE,
+ RTEMS_DEFAULT_MODES,
+ RTEMS_DEFAULT_ATTRIBUTES,
+ &Task_id
+ );
+ directive_failed( status, "rtems_task_create" );
+
+ puts( "Calling rtems_task_start" );
+ status = rtems_task_start( Task_id, Task_1, (rtems_task_argument)&Mutex_id );
+ directive_failed( status, "rtems_task_start" );
+
+ sleep(1);
+
+ puts( "Calling semaphore release" );
+ status = rtems_semaphore_release( Mutex_id );
+ directive_failed( status, "rtems_semaphore_release" );
+
+ puts( "*** END OF TEST 66 ***" );
+
+ rtems_test_exit(0);
+}
+
+rtems_task Task_1(
+ rtems_task_argument arg
+)
+{
+ int status_in_task;
+ rtems_id *Mutex_id = (rtems_id *)arg;
+
+ puts( "Init Task_1: Obtaining semaphore" );
+ status_in_task = rtems_semaphore_obtain( *Mutex_id, RTEMS_DEFAULT_OPTIONS, 0 );
+ directive_failed( status_in_task, "Task_1 rtems_semaphore_obtain" );
+ return;
+}
+
+/* configuration information */
+
+#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
+#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
+
+#define CONFIGURE_MAXIMUM_TASKS 2
+#define CONFIGURE_MAXIMUM_SEMAPHORES 1
+#define CONFIGURE_INIT_TASK_PRIORITY 2
+#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
+
+#define CONFIGURE_INIT
+#include <rtems/confdefs.h>
+
+/* global variables */
diff --git a/testsuites/sptests/sp66/sp66.doc b/testsuites/sptests/sp66/sp66.doc
new file mode 100644
index 0000000000..bbaedc7b06
--- /dev/null
+++ b/testsuites/sptests/sp66/sp66.doc
@@ -0,0 +1,27 @@
+#
+# $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: sp66
+
+directives:
+
+ rtems_semaphore_create
+ rtems_semaphore_obtain
+
+concepts:
+
++ Verify that obtaining a priority ceiling mutex and inheriting the
+ priority works correctly.
+
++ Verify the when transferring the mutex to a blocked task that the
+ priority of the task being given the mutex inherits the ceiling.
diff --git a/testsuites/sptests/sp66/sp66.scn b/testsuites/sptests/sp66/sp66.scn
new file mode 100644
index 0000000000..74490ae844
--- /dev/null
+++ b/testsuites/sptests/sp66/sp66.scn
@@ -0,0 +1,8 @@
+*** TEST 66 ***
+Creating semaphore
+Calling rtems_semaphore_obtain
+Calling rtems_task_create
+Calling rtems_task_start
+Init Task_1: Obtaining semaphore
+Calling semaphore release
+*** END OF TEST 65 ***