summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@oarcorp.com>2014-07-10 14:20:39 -0500
committerJoel Sherrill <joel.sherrill@oarcorp.com>2014-07-14 19:31:00 -0500
commitb6343c61002b421e4d578e9868bedc1f0f0b43d7 (patch)
tree5c26dfacce2523537cb201e5f07de599cf454901
parentcapture01: Add include of assert.h. (diff)
downloadrtems-b6343c61002b421e4d578e9868bedc1f0f0b43d7.tar.bz2
Enhance Semaphore Blocking and Readying Time Test Cases
tm02 and tm03 were modified to be reused for multiple configurations of RTEMS Classic API Semaphores. This added tm31-36. The messages for tm02 and tm03 were modified to indicate the semaphore attributes. tm31 - tm36 were added. This resulted in the following cases: tm02 - rtems_semaphore_obtain: Counting/FIFO not available caller blocks tm03 - rtems_semaphore_release: Counting/FIFO task readied preempts caller tm31 - rtems_semaphore_obtain: Counting/priority not available caller blocks tm32 - rtems_semaphore_release: Counting/priority task readied preempts caller tm33 - rtems_semaphore_obtain: Binary/FIFO not available caller blocks tm34 - rtems_semaphore_release: Binary/FIFO task readied preempts caller tm35 - rtems_semaphore_obtain: Binary/priority not available caller blocks tm36 - rtems_semaphore_release: Binary/priority task readied preempts caller
-rw-r--r--testsuites/tmtests/Makefile.am2
-rw-r--r--testsuites/tmtests/configure.ac7
-rw-r--r--testsuites/tmtests/tm02/Makefile.am1
-rw-r--r--testsuites/tmtests/tm02/task1.c28
-rw-r--r--testsuites/tmtests/tm02/tm02.doc4
-rw-r--r--testsuites/tmtests/tm03/Makefile.am1
-rw-r--r--testsuites/tmtests/tm03/task1.c29
-rw-r--r--testsuites/tmtests/tm03/tm03.doc5
-rw-r--r--testsuites/tmtests/tm31/Makefile.am28
-rw-r--r--testsuites/tmtests/tm31/tm31.doc14
-rw-r--r--testsuites/tmtests/tm32/Makefile.am27
-rw-r--r--testsuites/tmtests/tm32/tm32.doc14
-rw-r--r--testsuites/tmtests/tm33/Makefile.am28
-rw-r--r--testsuites/tmtests/tm33/tm33.doc14
-rw-r--r--testsuites/tmtests/tm34/Makefile.am27
-rw-r--r--testsuites/tmtests/tm34/tm34.doc14
-rw-r--r--testsuites/tmtests/tm35/Makefile.am28
-rw-r--r--testsuites/tmtests/tm35/tm35.doc14
-rw-r--r--testsuites/tmtests/tm36/Makefile.am27
-rw-r--r--testsuites/tmtests/tm36/tm36.doc14
-rw-r--r--testsuites/tmtests/tmtests_plan.csv322
21 files changed, 477 insertions, 171 deletions
diff --git a/testsuites/tmtests/Makefile.am b/testsuites/tmtests/Makefile.am
index 7d98a024a2..bab9e806bb 100644
--- a/testsuites/tmtests/Makefile.am
+++ b/testsuites/tmtests/Makefile.am
@@ -2,7 +2,7 @@ ACLOCAL_AMFLAGS = -I ../aclocal
_SUBDIRS = tmck tmoverhd tm01 tm02 tm03 tm04 tm05 tm06 tm07 tm08 tm09 tm10 \
tm11 tm12 tm13 tm14 tm15 tm16 tm17 tm18 tm19 tm20 tm21 tm22 tm23 tm24 \
- tm25 tm26 tm27 tm28 tm29 tm30
+ tm25 tm26 tm27 tm28 tm29 tm30 tm31 tm32 tm33 tm34 tm35 tm36
_SUBDIRS += tmcontext01
include $(top_srcdir)/../automake/test-subdirs.am
diff --git a/testsuites/tmtests/configure.ac b/testsuites/tmtests/configure.ac
index 1e3241ffb3..0e3385c4d2 100644
--- a/testsuites/tmtests/configure.ac
+++ b/testsuites/tmtests/configure.ac
@@ -11,7 +11,6 @@ RTEMS_CANONICAL_TARGET_CPU
AM_INIT_AUTOMAKE([no-define foreign 1.12.2])
AM_MAINTAINER_MODE
-
RTEMS_ENV_RTEMSBSP
RTEMS_CHECK_RTEMS_TEST_NO_PAUSE
@@ -61,5 +60,11 @@ tm27/Makefile
tm28/Makefile
tm29/Makefile
tm30/Makefile
+tm31/Makefile
+tm32/Makefile
+tm33/Makefile
+tm34/Makefile
+tm35/Makefile
+tm36/Makefile
])
AC_OUTPUT
diff --git a/testsuites/tmtests/tm02/Makefile.am b/testsuites/tmtests/tm02/Makefile.am
index 3bec68473d..ba6ad0fc74 100644
--- a/testsuites/tmtests/tm02/Makefile.am
+++ b/testsuites/tmtests/tm02/Makefile.am
@@ -13,6 +13,7 @@ include $(top_srcdir)/../automake/leaf.am
OPERATION_COUNT = @OPERATION_COUNT@
AM_CPPFLAGS += -I$(top_srcdir)/include -DOPERATION_COUNT=$(OPERATION_COUNT)
AM_CPPFLAGS += -I$(top_srcdir)/../support/include
+AM_CPPFLAGS += -DTM02
LINK_OBJS = $(tm02_OBJECTS)
LINK_LIBS = $(tm02_LDLIBS)
diff --git a/testsuites/tmtests/tm02/task1.c b/testsuites/tmtests/tm02/task1.c
index e27e4a0188..4d9b6d176e 100644
--- a/testsuites/tmtests/tm02/task1.c
+++ b/testsuites/tmtests/tm02/task1.c
@@ -1,5 +1,5 @@
/*
- * COPYRIGHT (c) 1989-2013.
+ * COPYRIGHT (c) 1989-2014.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -14,7 +14,29 @@
#define CONFIGURE_INIT
#include "system.h"
+#if defined(TM02)
const char rtems_test_name[] = "TIME TEST 2";
+#define SEMAPHORE_ATTRIBUTES (RTEMS_COUNTING_SEMAPHORE | RTEMS_FIFO)
+#define ATTR_DESC "counting/FIFO"
+
+#elif defined(TM31)
+const char rtems_test_name[] = "TIME TEST 31";
+#define SEMAPHORE_ATTRIBUTES (RTEMS_COUNTING_SEMAPHORE | RTEMS_PRIORITY)
+#define ATTR_DESC "counting/priority"
+
+#elif defined(TM33)
+const char rtems_test_name[] = "TIME TEST 33";
+#define SEMAPHORE_ATTRIBUTES RTEMS_BINARY_SEMAPHORE
+#define ATTR_DESC "binary/FIFO"
+
+#elif defined(TM35)
+const char rtems_test_name[] = "TIME TEST 35";
+#define SEMAPHORE_ATTRIBUTES (RTEMS_BINARY_SEMAPHORE | RTEMS_PRIORITY)
+#define ATTR_DESC "binary/priority"
+
+#else
+#error "Unknown test configuration"
+#endif
rtems_id High_id;
rtems_id Low_id;
@@ -110,7 +132,7 @@ void test_init(void)
status = rtems_semaphore_create(
rtems_build_name( 'S', 'M', '1', ' '),
0,
- RTEMS_DEFAULT_ATTRIBUTES,
+ SEMAPHORE_ATTRIBUTES,
RTEMS_NO_PRIORITY,
&Semaphore_id
);
@@ -149,7 +171,7 @@ rtems_task Low_task(
end_time = benchmark_timer_read();
put_time(
- "rtems_semaphore_obtain: not available caller blocks",
+ "rtems_semaphore_obtain: " ATTR_DESC " not available caller blocks",
end_time,
operation_count - 1,
0,
diff --git a/testsuites/tmtests/tm02/tm02.doc b/testsuites/tmtests/tm02/tm02.doc
index 32f2b2d6c2..ed9aac09ac 100644
--- a/testsuites/tmtests/tm02/tm02.doc
+++ b/testsuites/tmtests/tm02/tm02.doc
@@ -8,8 +8,8 @@
This test benchmarks the following operations:
- + rtems_semaphore_obtain
+ + rtems_semaphore_obtain: counting/FIFO not available, caller blocks
For more information
1. tmtests/include/timesys.h
-2. tmtests/README \ No newline at end of file
+2. tmtests/README
diff --git a/testsuites/tmtests/tm03/Makefile.am b/testsuites/tmtests/tm03/Makefile.am
index be850763cf..1f6d6fe689 100644
--- a/testsuites/tmtests/tm03/Makefile.am
+++ b/testsuites/tmtests/tm03/Makefile.am
@@ -13,6 +13,7 @@ include $(top_srcdir)/../automake/leaf.am
OPERATION_COUNT = @OPERATION_COUNT@
AM_CPPFLAGS += -I$(top_srcdir)/include -DOPERATION_COUNT=$(OPERATION_COUNT)
AM_CPPFLAGS += -I$(top_srcdir)/../support/include
+AM_CPPFLAGS += -DTM03
LINK_OBJS = $(tm03_OBJECTS)
LINK_LIBS = $(tm03_LDLIBS)
diff --git a/testsuites/tmtests/tm03/task1.c b/testsuites/tmtests/tm03/task1.c
index 9cd8de8cdb..42126ac8a5 100644
--- a/testsuites/tmtests/tm03/task1.c
+++ b/testsuites/tmtests/tm03/task1.c
@@ -1,5 +1,5 @@
/*
- * COPYRIGHT (c) 1989-2013.
+ * COPYRIGHT (c) 1989-2014.
* On-Line Applications Research Corporation (OAR).
*
* The license and distribution terms for this file may be
@@ -14,7 +14,30 @@
#define CONFIGURE_INIT
#include "system.h"
+#if defined(TM03)
const char rtems_test_name[] = "TIME TEST 3";
+#define SEMAPHORE_ATTRIBUTES (RTEMS_COUNTING_SEMAPHORE | RTEMS_FIFO)
+#define ATTR_DESC "counting/FIFO"
+
+#elif defined(TM32)
+const char rtems_test_name[] = "TIME TEST 32";
+#define SEMAPHORE_ATTRIBUTES (RTEMS_COUNTING_SEMAPHORE | RTEMS_PRIORITY)
+#define ATTR_DESC "counting/priority"
+
+#elif defined(TM34)
+const char rtems_test_name[] = "TIME TEST 34";
+#define SEMAPHORE_ATTRIBUTES RTEMS_BINARY_SEMAPHORE
+#define ATTR_DESC "binary/FIFO"
+
+#elif defined(TM36)
+const char rtems_test_name[] = "TIME TEST 36";
+#define SEMAPHORE_ATTRIBUTES (RTEMS_BINARY_SEMAPHORE | RTEMS_PRIORITY)
+#define ATTR_DESC "binary/priority"
+
+#else
+#error "Unknown test configuration"
+#endif
+
rtems_id Semaphore_id;
rtems_task test_init(
@@ -72,7 +95,7 @@ rtems_task test_init(
status = rtems_semaphore_create(
rtems_build_name( 'S', 'M', '1', '\0'),
0,
- RTEMS_DEFAULT_ATTRIBUTES,
+ SEMAPHORE_ATTRIBUTES,
RTEMS_NO_PRIORITY,
&Semaphore_id
);
@@ -140,7 +163,7 @@ rtems_task High_task(
end_time = benchmark_timer_read();
put_time(
- "rtems_semaphore_release: task readied preempts caller",
+ "rtems_semaphore_release: " ATTR_DESC " task readied preempts caller",
end_time,
operation_count - 1,
0,
diff --git a/testsuites/tmtests/tm03/tm03.doc b/testsuites/tmtests/tm03/tm03.doc
index 32f2b2d6c2..3d1ea9d4ef 100644
--- a/testsuites/tmtests/tm03/tm03.doc
+++ b/testsuites/tmtests/tm03/tm03.doc
@@ -1,6 +1,5 @@
# COPYRIGHT (c) 1989-2014.
# On-Line Applications Research Corporation (OAR).
-# Cynthia Rempel <cynthia@rtems.org>
# The license and distribution terms for this file may be
# found in the file LICENSE in this distribution or at
# http://www.rtems.org/license/LICENSE.
@@ -8,8 +7,8 @@
This test benchmarks the following operations:
- + rtems_semaphore_obtain
+ + rtems_semaphore_release: counting/FIFO task readied preempts caller
For more information
1. tmtests/include/timesys.h
-2. tmtests/README \ No newline at end of file
+2. tmtests/README
diff --git a/testsuites/tmtests/tm31/Makefile.am b/testsuites/tmtests/tm31/Makefile.am
new file mode 100644
index 0000000000..a6c8839428
--- /dev/null
+++ b/testsuites/tmtests/tm31/Makefile.am
@@ -0,0 +1,28 @@
+
+rtems_tests_PROGRAMS = tm31
+tm31_SOURCES = ../tm02/task1.c
+tm31_SOURCES += ../tm02/system.h
+tm31_SOURCES += ../include/timesys.h
+tm31_SOURCES += ../../support/src/tmtests_empty_function.c
+
+dist_rtems_tests_DATA = tm31.doc
+
+include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
+include $(top_srcdir)/../automake/compile.am
+include $(top_srcdir)/../automake/leaf.am
+
+
+OPERATION_COUNT = @OPERATION_COUNT@
+AM_CPPFLAGS += -I$(top_srcdir)/include -DOPERATION_COUNT=$(OPERATION_COUNT)
+AM_CPPFLAGS += -I$(top_srcdir)/../support/include
+AM_CPPFLAGS += -I$(top_srcdir)/../tm02
+AM_CPPFLAGS += -DTM31
+
+LINK_OBJS = $(tm31_OBJECTS)
+LINK_LIBS = $(tm31_LDLIBS)
+
+tm31$(EXEEXT): $(tm31_OBJECTS) $(tm31_DEPENDENCIES)
+ @rm -f tm31$(EXEEXT)
+ $(make-exe)
+
+include $(top_srcdir)/../automake/local.am
diff --git a/testsuites/tmtests/tm31/tm31.doc b/testsuites/tmtests/tm31/tm31.doc
new file mode 100644
index 0000000000..90de934e4c
--- /dev/null
+++ b/testsuites/tmtests/tm31/tm31.doc
@@ -0,0 +1,14 @@
+# COPYRIGHT (c) 1989-2014.
+# 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.org/license/LICENSE.
+#
+
+This test benchmarks the following operations:
+
+ + rtems_semaphore_obtain: counting/priority not available, caller blocks
+
+For more information
+1. tmtests/include/timesys.h
+2. tmtests/README
diff --git a/testsuites/tmtests/tm32/Makefile.am b/testsuites/tmtests/tm32/Makefile.am
new file mode 100644
index 0000000000..7fe71fd60d
--- /dev/null
+++ b/testsuites/tmtests/tm32/Makefile.am
@@ -0,0 +1,27 @@
+
+rtems_tests_PROGRAMS = tm32
+tm32_SOURCES = ../tm03/task1.c
+tm32_SOURCES += ../tm03/system.h
+tm32_SOURCES += ../include/timesys.h
+tm32_SOURCES += ../../support/src/tmtests_empty_function.c
+
+dist_rtems_tests_DATA = tm32.doc
+
+include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
+include $(top_srcdir)/../automake/compile.am
+include $(top_srcdir)/../automake/leaf.am
+
+OPERATION_COUNT = @OPERATION_COUNT@
+AM_CPPFLAGS += -I$(top_srcdir)/include -DOPERATION_COUNT=$(OPERATION_COUNT)
+AM_CPPFLAGS += -I$(top_srcdir)/../support/include
+AM_CPPFLAGS += -I$(top_srcdir)/../tm03
+AM_CPPFLAGS += -DTM32
+
+LINK_OBJS = $(tm32_OBJECTS)
+LINK_LIBS = $(tm32_LDLIBS)
+
+tm32$(EXEEXT): $(tm32_OBJECTS) $(tm32_DEPENDENCIES)
+ @rm -f tm32$(EXEEXT)
+ $(make-exe)
+
+include $(top_srcdir)/../automake/local.am
diff --git a/testsuites/tmtests/tm32/tm32.doc b/testsuites/tmtests/tm32/tm32.doc
new file mode 100644
index 0000000000..2087d42a6b
--- /dev/null
+++ b/testsuites/tmtests/tm32/tm32.doc
@@ -0,0 +1,14 @@
+# COPYRIGHT (c) 1989-2014.
+# 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.org/license/LICENSE.
+#
+
+This test benchmarks the following operations:
+
+ + rtems_semaphore_release: counting/priority task readied preempts caller
+
+For more information
+1. tmtests/include/timesys.h
+2. tmtests/README
diff --git a/testsuites/tmtests/tm33/Makefile.am b/testsuites/tmtests/tm33/Makefile.am
new file mode 100644
index 0000000000..c0ef67010f
--- /dev/null
+++ b/testsuites/tmtests/tm33/Makefile.am
@@ -0,0 +1,28 @@
+
+rtems_tests_PROGRAMS = tm33
+tm33_SOURCES = ../tm02/task1.c
+tm33_SOURCES += ../tm02/system.h
+tm33_SOURCES += ../include/timesys.h
+tm33_SOURCES += ../../support/src/tmtests_empty_function.c
+
+dist_rtems_tests_DATA = tm33.doc
+
+include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
+include $(top_srcdir)/../automake/compile.am
+include $(top_srcdir)/../automake/leaf.am
+
+
+OPERATION_COUNT = @OPERATION_COUNT@
+AM_CPPFLAGS += -I$(top_srcdir)/include -DOPERATION_COUNT=$(OPERATION_COUNT)
+AM_CPPFLAGS += -I$(top_srcdir)/../support/include
+AM_CPPFLAGS += -I$(top_srcdir)/../tm02
+AM_CPPFLAGS += -DTM33
+
+LINK_OBJS = $(tm33_OBJECTS)
+LINK_LIBS = $(tm33_LDLIBS)
+
+tm33$(EXEEXT): $(tm33_OBJECTS) $(tm33_DEPENDENCIES)
+ @rm -f tm33$(EXEEXT)
+ $(make-exe)
+
+include $(top_srcdir)/../automake/local.am
diff --git a/testsuites/tmtests/tm33/tm33.doc b/testsuites/tmtests/tm33/tm33.doc
new file mode 100644
index 0000000000..f78a4dc96d
--- /dev/null
+++ b/testsuites/tmtests/tm33/tm33.doc
@@ -0,0 +1,14 @@
+# COPYRIGHT (c) 1989-2014.
+# 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.org/license/LICENSE.
+#
+
+This test benchmarks the following operations:
+
+ + rtems_semaphore_obtain: binary/FIFO not available, caller blocks
+
+For more information
+1. tmtests/include/timesys.h
+2. tmtests/README
diff --git a/testsuites/tmtests/tm34/Makefile.am b/testsuites/tmtests/tm34/Makefile.am
new file mode 100644
index 0000000000..7c9f1ad333
--- /dev/null
+++ b/testsuites/tmtests/tm34/Makefile.am
@@ -0,0 +1,27 @@
+
+rtems_tests_PROGRAMS = tm34
+tm34_SOURCES = ../tm03/task1.c
+tm34_SOURCES += ../tm03/system.h
+tm34_SOURCES += ../include/timesys.h
+tm34_SOURCES += ../../support/src/tmtests_empty_function.c
+
+dist_rtems_tests_DATA = tm34.doc
+
+include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
+include $(top_srcdir)/../automake/compile.am
+include $(top_srcdir)/../automake/leaf.am
+
+OPERATION_COUNT = @OPERATION_COUNT@
+AM_CPPFLAGS += -I$(top_srcdir)/include -DOPERATION_COUNT=$(OPERATION_COUNT)
+AM_CPPFLAGS += -I$(top_srcdir)/../support/include
+AM_CPPFLAGS += -I$(top_srcdir)/../tm03
+AM_CPPFLAGS += -DTM34
+
+LINK_OBJS = $(tm34_OBJECTS)
+LINK_LIBS = $(tm34_LDLIBS)
+
+tm34$(EXEEXT): $(tm34_OBJECTS) $(tm34_DEPENDENCIES)
+ @rm -f tm34$(EXEEXT)
+ $(make-exe)
+
+include $(top_srcdir)/../automake/local.am
diff --git a/testsuites/tmtests/tm34/tm34.doc b/testsuites/tmtests/tm34/tm34.doc
new file mode 100644
index 0000000000..5affd68cfa
--- /dev/null
+++ b/testsuites/tmtests/tm34/tm34.doc
@@ -0,0 +1,14 @@
+# COPYRIGHT (c) 1989-2014.
+# 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.org/license/LICENSE.
+#
+
+This test benchmarks the following operations:
+
+ + rtems_semaphore_release: binary/FIFO task readied preempts caller
+
+For more information
+1. tmtests/include/timesys.h
+2. tmtests/README
diff --git a/testsuites/tmtests/tm35/Makefile.am b/testsuites/tmtests/tm35/Makefile.am
new file mode 100644
index 0000000000..b6c8c91991
--- /dev/null
+++ b/testsuites/tmtests/tm35/Makefile.am
@@ -0,0 +1,28 @@
+
+rtems_tests_PROGRAMS = tm35
+tm35_SOURCES = ../tm02/task1.c
+tm35_SOURCES += ../tm02/system.h
+tm35_SOURCES += ../include/timesys.h
+tm35_SOURCES += ../../support/src/tmtests_empty_function.c
+
+dist_rtems_tests_DATA = tm35.doc
+
+include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
+include $(top_srcdir)/../automake/compile.am
+include $(top_srcdir)/../automake/leaf.am
+
+
+OPERATION_COUNT = @OPERATION_COUNT@
+AM_CPPFLAGS += -I$(top_srcdir)/include -DOPERATION_COUNT=$(OPERATION_COUNT)
+AM_CPPFLAGS += -I$(top_srcdir)/../support/include
+AM_CPPFLAGS += -I$(top_srcdir)/../tm02
+AM_CPPFLAGS += -DTM35
+
+LINK_OBJS = $(tm35_OBJECTS)
+LINK_LIBS = $(tm35_LDLIBS)
+
+tm35$(EXEEXT): $(tm35_OBJECTS) $(tm35_DEPENDENCIES)
+ @rm -f tm35$(EXEEXT)
+ $(make-exe)
+
+include $(top_srcdir)/../automake/local.am
diff --git a/testsuites/tmtests/tm35/tm35.doc b/testsuites/tmtests/tm35/tm35.doc
new file mode 100644
index 0000000000..e82e284ef0
--- /dev/null
+++ b/testsuites/tmtests/tm35/tm35.doc
@@ -0,0 +1,14 @@
+# COPYRIGHT (c) 1989-2014.
+# 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.org/license/LICENSE.
+#
+
+This test benchmarks the following operations:
+
+ + rtems_semaphore_obtain: binary/priority not available, caller blocks
+
+For more information
+1. tmtests/include/timesys.h
+2. tmtests/README
diff --git a/testsuites/tmtests/tm36/Makefile.am b/testsuites/tmtests/tm36/Makefile.am
new file mode 100644
index 0000000000..4abab965c2
--- /dev/null
+++ b/testsuites/tmtests/tm36/Makefile.am
@@ -0,0 +1,27 @@
+
+rtems_tests_PROGRAMS = tm36
+tm36_SOURCES = ../tm03/task1.c
+tm36_SOURCES += ../tm03/system.h
+tm36_SOURCES += ../include/timesys.h
+tm36_SOURCES += ../../support/src/tmtests_empty_function.c
+
+dist_rtems_tests_DATA = tm36.doc
+
+include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg
+include $(top_srcdir)/../automake/compile.am
+include $(top_srcdir)/../automake/leaf.am
+
+OPERATION_COUNT = @OPERATION_COUNT@
+AM_CPPFLAGS += -I$(top_srcdir)/include -DOPERATION_COUNT=$(OPERATION_COUNT)
+AM_CPPFLAGS += -I$(top_srcdir)/../support/include
+AM_CPPFLAGS += -I$(top_srcdir)/../tm03
+AM_CPPFLAGS += -DTM36
+
+LINK_OBJS = $(tm36_OBJECTS)
+LINK_LIBS = $(tm36_LDLIBS)
+
+tm36$(EXEEXT): $(tm36_OBJECTS) $(tm36_DEPENDENCIES)
+ @rm -f tm36$(EXEEXT)
+ $(make-exe)
+
+include $(top_srcdir)/../automake/local.am
diff --git a/testsuites/tmtests/tm36/tm36.doc b/testsuites/tmtests/tm36/tm36.doc
new file mode 100644
index 0000000000..0f20a9c130
--- /dev/null
+++ b/testsuites/tmtests/tm36/tm36.doc
@@ -0,0 +1,14 @@
+# COPYRIGHT (c) 1989-2014.
+# 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.org/license/LICENSE.
+#
+
+This test benchmarks the following operations:
+
+ + rtems_semaphore_release: binary/priority task readied preempts caller
+
+For more information
+1. tmtests/include/timesys.h
+2. tmtests/README
diff --git a/testsuites/tmtests/tmtests_plan.csv b/testsuites/tmtests/tmtests_plan.csv
index ca46f499fd..de3335b519 100644
--- a/testsuites/tmtests/tmtests_plan.csv
+++ b/testsuites/tmtests/tmtests_plan.csv
@@ -1,158 +1,164 @@
-"rtems_barrier_create: only case","tm30","NA","Yes"
-"rtems_barrier_delete: only case","tm30","NA","Yes"
-"rtems_barrier_ident: only case","tm30","NA","Yes"
-
-"rtems_clock_get_tod: only case","tm08","NA","Yes"
-"rtems_clock_set: only case","tm08","NA","Yes"
-"rtems_clock_tick: only case","tm25","NA","Yes"
-
-"rtems_event_receive: available","tm15","NA","Yes"
-"rtems_event_receive: not available caller blocks","tm15","NA","Yes"
-"rtems_event_receive: not available NO_WAIT","tm15","NA","Yes"
-"rtems_event_receive: obtain current events","tm15","NA","Yes"
-"rtems_event_send: no task readied","tm15","NA","Yes"
-"rtems_event_send: task readied preempts caller","tm16","NA","Yes"
-"rtems_event_send: task readied returns to caller","tm15","NA","Yes"
-
-"rtems internal: context switch: no floating point contexts","tm26","NA","Yes"
-"rtems internal: context switch: self","tm26","NA","Yes"
-"rtems internal: context switch to another task","tm26","NA","Yes"
-"rtems internal: fp context switch restore 1st FP task","tm26","NA","Yes"
-"rtems internal: fp context switch save idle and restore initialized","tm26","NA","Yes"
-"rtems internal: fp context switch save idle, restore idle","tm26","NA","Yes"
-"rtems internal: fp context switch save initialized, restore initialized","tm26","NA","Yes"
-"rtems internal: _Semaphore_Get","tm26","NA","Yes"
-"rtems internal: _Thread_Disable_dispatch","tm26","NA","Yes"
-"rtems internal: _Thread_Dispatch NO FP","tm26","NA","Yes"
-"rtems internal: _Thread_Enable_dispatch","tm26","NA","Yes"
-"rtems internal: _Thread_Get: invalid id","tm26","NA","Yes"
-"rtems internal: _Thread_Get","tm26","NA","Yes"
-"rtems internal: _Thread_Ready","tm26","NA","Yes"
-"rtems internal: _Thread_Resume","tm26","NA","Yes"
-"rtems internal: _Thread_Set_state","tm26","NA","Yes"
-"rtems internal: _Thread_Unblock","tm26","NA","Yes"
-
-"rtems interrupt: entry overhead returns to interrupted task","tm27","NA","Yes"
-"rtems interrupt: entry overhead returns to nested interrupt","tm27","NA","Yes"
-"rtems interrupt: exit overhead returns to interrupted task","tm27","NA","Yes"
-"rtems interrupt: exit overhead returns to nested interrupt","tm27","NA","Yes"
-"rtems interrupt: _ISR_Disable","tm26","NA","Yes"
-"rtems interrupt: _ISR_Enable","tm26","NA","Yes"
-"rtems interrupt: _ISR_Flash","tm26","NA","Yes"
-
-"rtems_io_close: only case","tm20","NA","Yes"
-"rtems_io_control: only case","tm20","NA","Yes"
-"rtems_io_initialize: only case","tm20","NA","Yes"
-"rtems_io_open: only case","tm20","NA","Yes"
-"rtems_io_read: only case","tm20","NA","Yes"
-"rtems_io_write: only case","tm20","NA","Yes"
-
-"rtems_message_queue_broadcast: no waiting tasks","tm22","NA","Yes"
-"rtems_message_queue_broadcast: task readied returns to caller","tm22","NA","Yes"
-"rtems_message_queue_broadcast: task readied","tm22","NA","Yes"
-"rtems_message_queue_create: only case","tm09","NA","Yes"
-"rtems_message_queue_delete: only case","tm09","NA","Yes"
-"rtems_message_queue_flush: messages flushed","tm09","NA","Yes"
-"rtems_message_queue_flush: no messages flushed","tm09","NA","Yes"
-"rtems_message_queue_ident: only case","tm21","NA","Yes"
-"rtems_message_queue_receive: available","tm09","NA","Yes"
-"rtems_message_queue_receive: not available caller blocks","tm10","NA","Yes"
-"rtems_message_queue_receive: not available NO_WAIT","tm10","NA","Yes"
-"rtems_message_queue_send: no waiting tasks","tm09","NA","Yes"
-"rtems_message_queue_send: task readied preempts caller","tm11","NA","Yes"
-"rtems_message_queue_send: task readied returns to caller","tm12","NA","Yes"
-"rtems_message_queue_urgent: no waiting tasks","tm09","NA","Yes"
-"rtems_message_queue_urgent: task readied preempts caller","tm13","NA","Yes"
-"rtems_message_queue_urgent: task readied returns to caller","tm14","NA","Yes"
-
-"rtems_partition_create: only case","tm20","NA","Yes"
-"rtems_partition_delete: only case","tm20","NA","Yes"
-"rtems_partition_get_buffer: available","tm20","NA","Yes"
-"rtems_partition_get_buffer: not available","tm20","NA","Yes"
-"rtems_partition_ident: only case","tm21","NA","Yes"
-"rtems_partition_return_buffer: only case","tm20","NA","Yes"
-
-"rtems_port_create: only case","tm28","NA","Yes"
-"rtems_port_delete: only case","tm28","NA","Yes"
-"rtems_port_external_to_internal: only case","tm28","NA","Yes"
-"rtems_port_ident: only case","tm21","NA","Yes"
-"rtems_port_internal_to_external: only case","tm28","NA","Yes"
-
-"rtems_rate_monotonic_cancel: only case","tm29","NA","Yes"
-"rtems_rate_monotonic_create: only case","tm29","NA","Yes"
-"rtems_rate_monotonic_delete: active","tm29","NA","Yes"
-"rtems_rate_monotonic_delete: inactive","tm29","NA","Yes"
-"rtems_rate_monotonic_ident: only case","tm21","NA","Yes"
-"rtems_rate_monotonic_period: conclude periods caller blocks","tm29","NA","Yes"
-"rtems_rate_monotonic_period: initiate period returns to caller","tm29","NA","Yes"
-"rtems_rate_monotonic_period: obtain status","tm29","NA","Yes"
-
-"rtems_region_create: only case","tm20","NA","Yes"
-"rtems_region_delete: only case","tm20","NA","Yes"
-"rtems_region_get_segment: available","tm20","NA","Yes"
-"rtems_region_get_segment: not available caller blocks","tm20","NA","Yes"
-"rtems_region_get_segment: not available NO_WAIT","tm20","NA","Yes"
-"rtems_region_ident: only case","tm21","NA","Yes"
-"rtems_region_return_segment: no waiting tasks","tm20","NA","Yes"
-"rtems_region_return_segment: task readied preempts caller","tm20","NA","Yes"
-"rtems_region_return_segment: task readied returns to caller","tm20","NA","Yes"
-
-"rtems_semaphore_create: only case","tm01","NA","Yes"
-"rtems_semaphore_delete: only case","tm01","NA","Yes"
-"rtems_semaphore_ident: only case","tm21","NA","Yes"
-"rtems_semaphore_obtain: available","tm01","NA","Yes"
-"rtems_semaphore_obtain: not available caller blocks","tm02","NA","Yes"
-"rtems_semaphore_obtain: not available NO_WAIT","tm01","NA","Yes"
-"rtems_semaphore_release: no waiting tasks","tm01","NA","Yes"
-"rtems_semaphore_release: task readied preempts caller","tm03","NA","Yes"
-"rtems_semaphore_release: task readied","tm04","NA","Yes"
-
-"rtems_signal_catch: only case","tm19","NA","Yes"
-"rtems_signal: exit ASR overhead returns to calling task","tm19","NA","Yes"
-"rtems_signal: exit ASR overhead returns to preempting task","tm19","NA","Yes"
-"rtems_signal_send: returns to caller","tm19","NA","Yes"
-"rtems_signal_send: signal to self","tm19","NA","Yes"
-
-"rtems_task_create: only case","tm04","NA","Yes"
-"rtems_task_delete: blocked task","tm04","NA","Yes"
-"rtems_task_delete: calling task","tm18","NA","Yes"
-"rtems_task_delete: ready task","tm06","NA","Yes"
-"rtems_task_delete: suspended task","tm04","NA","Yes"
-"rtems_task_get_note: only case","tm08","NA","Yes"
-"rtems_task_ident: only case","tm21","NA","Yes"
-"rtems_task_mode: no reschedule","tm08","NA","Yes"
-"rtems_task_mode: obtain current mode","tm08","NA","Yes"
-"rtems_task_mode: reschedule returns to caller","tm08","NA","Yes"
-"rtems_task_mode: reschedule","tm08","NA","Yes"
-"rtems_task_restart: blocked task preempts caller","tm04","NA","Yes"
-"rtems_task_restart: blocked task","tm04","NA","Yes"
-"rtems_task_restart: calling task","tm06","NA","Yes"
-"rtems_task_restart: ready task","tm04","NA","Yes"
-"rtems_task_restart: ready task","tm04","NA","Yes"
-"rtems_task_restart: suspended task preempts caller","tm07","NA","Yes"
-"rtems_task_restart: suspended task","tm04","NA","Yes"
-"rtems_task_resume: task readied preempts caller","tm05","NA","Yes"
-"rtems_task_resume: task readied returns to caller","tm06","NA","Yes"
-"rtems_task_set_note: only case","tm08","NA","Yes"
-"rtems_task_set_priority: obtain current priority","tm08","NA","Yes"
-"rtems_task_set_priority: preempts caller","tm17","NA","Yes"
-"rtems_task_set_priority: returns to caller","tm08","NA","Yes"
-"rtems_task_start: only case","tm04","NA","Yes"
-"rtems_task_suspend: calling task","tm05","NA","Yes"
-"rtems_task_suspend: returns to caller","tm06","NA","Yes"
-"rtems_task_wake_after: yield returns to caller","tm24","NA","Yes"
-"rtems_task_wake_after: yields preempts caller","tm24","NA","Yes"
-"rtems_task_wake_when: only case","tm23","NA","Yes"
-
-"rtems_timer_cancel: active","tm23","NA","Yes"
-"rtems_timer_cancel: inactive","tm23","NA","Yes"
-"rtems_timer_create: only case","tm23","NA","Yes"
-"rtems_timer_delete: active","tm23","NA","Yes"
-"rtems_timer_delete: inactive","tm23","NA","Yes"
-"rtems_timer_fire_after: active","tm23","NA","Yes"
-"rtems_timer_fire_after: inactive","tm23","NA","Yes"
-"rtems_timer_fire_when: active","tm23","NA","Yes"
-"rtems_timer_fire_when: inactive","tm23","NA","Yes"
-"rtems_timer_ident: only case","tm21","NA","Yes"
-"rtems_timer_reset: active","tm23","NA","Yes"
-"rtems_timer_reset: inactive","tm23","NA","Yes"
+"rtems_barrier_create: only case",tm30,NA,Yes
+"rtems_barrier_delete: only case",tm30,NA,Yes
+"rtems_barrier_ident: only case",tm30,NA,Yes
+,,,
+"rtems_clock_get_tod: only case",tm08,NA,Yes
+"rtems_clock_set: only case",tm08,NA,Yes
+"rtems_clock_tick: only case",tm25,NA,Yes
+,,,
+"rtems_event_receive: available",tm15,NA,Yes
+"rtems_event_receive: not available caller blocks",tm15,NA,Yes
+"rtems_event_receive: not available NO_WAIT",tm15,NA,Yes
+"rtems_event_receive: obtain current events",tm15,NA,Yes
+"rtems_event_send: no task readied",tm15,NA,Yes
+"rtems_event_send: task readied preempts caller",tm16,NA,Yes
+"rtems_event_send: task readied returns to caller",tm15,NA,Yes
+,,,
+"rtems internal: context switch: no floating point contexts",tm26,NA,Yes
+"rtems internal: context switch: self",tm26,NA,Yes
+"rtems internal: context switch to another task",tm26,NA,Yes
+"rtems internal: fp context switch restore 1st FP task",tm26,NA,Yes
+"rtems internal: fp context switch save idle and restore initialized",tm26,NA,Yes
+"rtems internal: fp context switch save idle, restore idle",tm26,NA,Yes
+"rtems internal: fp context switch save initialized, restore initialized",tm26,NA,Yes
+"rtems internal: _Semaphore_Get",tm26,NA,Yes
+"rtems internal: _Thread_Disable_dispatch",tm26,NA,Yes
+"rtems internal: _Thread_Dispatch NO FP",tm26,NA,Yes
+"rtems internal: _Thread_Enable_dispatch",tm26,NA,Yes
+"rtems internal: _Thread_Get: invalid id",tm26,NA,Yes
+"rtems internal: _Thread_Get",tm26,NA,Yes
+"rtems internal: _Thread_Ready",tm26,NA,Yes
+"rtems internal: _Thread_Resume",tm26,NA,Yes
+"rtems internal: _Thread_Set_state",tm26,NA,Yes
+"rtems internal: _Thread_Unblock",tm26,NA,Yes
+,,,
+"rtems interrupt: entry overhead returns to interrupted task",tm27,NA,Yes
+"rtems interrupt: entry overhead returns to nested interrupt",tm27,NA,Yes
+"rtems interrupt: exit overhead returns to interrupted task",tm27,NA,Yes
+"rtems interrupt: exit overhead returns to nested interrupt",tm27,NA,Yes
+"rtems interrupt: _ISR_Disable",tm26,NA,Yes
+"rtems interrupt: _ISR_Enable",tm26,NA,Yes
+"rtems interrupt: _ISR_Flash",tm26,NA,Yes
+,,,
+"rtems_io_close: only case",tm20,NA,Yes
+"rtems_io_control: only case",tm20,NA,Yes
+"rtems_io_initialize: only case",tm20,NA,Yes
+"rtems_io_open: only case",tm20,NA,Yes
+"rtems_io_read: only case",tm20,NA,Yes
+"rtems_io_write: only case",tm20,NA,Yes
+,,,
+"rtems_message_queue_broadcast: no waiting tasks",tm22,NA,Yes
+"rtems_message_queue_broadcast: task readied returns to caller",tm22,NA,Yes
+"rtems_message_queue_broadcast: task readied",tm22,NA,Yes
+"rtems_message_queue_create: only case",tm09,NA,Yes
+"rtems_message_queue_delete: only case",tm09,NA,Yes
+"rtems_message_queue_flush: messages flushed",tm09,NA,Yes
+"rtems_message_queue_flush: no messages flushed",tm09,NA,Yes
+"rtems_message_queue_ident: only case",tm21,NA,Yes
+"rtems_message_queue_receive: available",tm09,NA,Yes
+"rtems_message_queue_receive: not available caller blocks",tm10,NA,Yes
+"rtems_message_queue_receive: not available NO_WAIT",tm10,NA,Yes
+"rtems_message_queue_send: no waiting tasks",tm09,NA,Yes
+"rtems_message_queue_send: task readied preempts caller",tm11,NA,Yes
+"rtems_message_queue_send: task readied returns to caller",tm12,NA,Yes
+"rtems_message_queue_urgent: no waiting tasks",tm09,NA,Yes
+"rtems_message_queue_urgent: task readied preempts caller",tm13,NA,Yes
+"rtems_message_queue_urgent: task readied returns to caller",tm14,NA,Yes
+,,,
+"rtems_partition_create: only case",tm20,NA,Yes
+"rtems_partition_delete: only case",tm20,NA,Yes
+"rtems_partition_get_buffer: available",tm20,NA,Yes
+"rtems_partition_get_buffer: not available",tm20,NA,Yes
+"rtems_partition_ident: only case",tm21,NA,Yes
+"rtems_partition_return_buffer: only case",tm20,NA,Yes
+,,,
+"rtems_port_create: only case",tm28,NA,Yes
+"rtems_port_delete: only case",tm28,NA,Yes
+"rtems_port_external_to_internal: only case",tm28,NA,Yes
+"rtems_port_ident: only case",tm21,NA,Yes
+"rtems_port_internal_to_external: only case",tm28,NA,Yes
+,,,
+"rtems_rate_monotonic_cancel: only case",tm29,NA,Yes
+"rtems_rate_monotonic_create: only case",tm29,NA,Yes
+"rtems_rate_monotonic_delete: active",tm29,NA,Yes
+"rtems_rate_monotonic_delete: inactive",tm29,NA,Yes
+"rtems_rate_monotonic_ident: only case",tm21,NA,Yes
+"rtems_rate_monotonic_period: conclude periods caller blocks",tm29,NA,Yes
+"rtems_rate_monotonic_period: initiate period returns to caller",tm29,NA,Yes
+"rtems_rate_monotonic_period: obtain status",tm29,NA,Yes
+,,,
+"rtems_region_create: only case",tm20,NA,Yes
+"rtems_region_delete: only case",tm20,NA,Yes
+"rtems_region_get_segment: available",tm20,NA,Yes
+"rtems_region_get_segment: not available caller blocks",tm20,NA,Yes
+"rtems_region_get_segment: not available NO_WAIT",tm20,NA,Yes
+"rtems_region_ident: only case",tm21,NA,Yes
+"rtems_region_return_segment: no waiting tasks",tm20,NA,Yes
+"rtems_region_return_segment: task readied preempts caller",tm20,NA,Yes
+"rtems_region_return_segment: task readied returns to caller",tm20,NA,Yes
+,,,
+"rtems_semaphore_create: only case",tm01,NA,Yes
+"rtems_semaphore_delete: only case",tm01,NA,Yes
+"rtems_semaphore_ident: only case",tm21,NA,Yes
+"rtems_semaphore_obtain: available",tm01,NA,Yes
+"rtems_semaphore_obtain: Counting/FIFO not available caller blocks",tm02,NA,Yes
+"rtems_semaphore_obtain: not available NO_WAIT",tm01,NA,Yes
+"rtems_semaphore_release: no waiting tasks",tm01,NA,Yes
+"rtems_semaphore_release: Counting/FIFO task readied preempts caller",tm03,NA,Yes
+"rtems_semaphore_release: task readied",tm04,NA,Yes
+"rtems_semaphore_obtain: Counting/priority not available caller blocks",tm31,NA,Yes
+"rtems_semaphore_release: Counting/priority task readied preempts caller",tm32,NA,Yes
+"rtems_semaphore_obtain: Binary/FIFO not available caller blocks",tm33,NA,Yes
+"rtems_semaphore_release: Binary/FIFO task readied preempts caller",tm34,NA,Yes
+"rtems_semaphore_obtain: Binary/priority not available caller blocks",tm35,NA,Yes
+"rtems_semaphore_release: Binary/priority task readied preempts caller",tm36,NA,Yes
+,,,
+"rtems_signal_catch: only case",tm19,NA,Yes
+"rtems_signal: exit ASR overhead returns to calling task",tm19,NA,Yes
+"rtems_signal: exit ASR overhead returns to preempting task",tm19,NA,Yes
+"rtems_signal_send: returns to caller",tm19,NA,Yes
+"rtems_signal_send: signal to self",tm19,NA,Yes
+,,,
+"rtems_task_create: only case",tm04,NA,Yes
+"rtems_task_delete: blocked task",tm04,NA,Yes
+"rtems_task_delete: calling task",tm18,NA,Yes
+"rtems_task_delete: ready task",tm06,NA,Yes
+"rtems_task_delete: suspended task",tm04,NA,Yes
+"rtems_task_get_note: only case",tm08,NA,Yes
+"rtems_task_ident: only case",tm21,NA,Yes
+"rtems_task_mode: no reschedule",tm08,NA,Yes
+"rtems_task_mode: obtain current mode",tm08,NA,Yes
+"rtems_task_mode: reschedule returns to caller",tm08,NA,Yes
+"rtems_task_mode: reschedule",tm08,NA,Yes
+"rtems_task_restart: blocked task preempts caller",tm04,NA,Yes
+"rtems_task_restart: blocked task",tm04,NA,Yes
+"rtems_task_restart: calling task",tm06,NA,Yes
+"rtems_task_restart: ready task",tm04,NA,Yes
+"rtems_task_restart: ready task",tm04,NA,Yes
+"rtems_task_restart: suspended task preempts caller",tm07,NA,Yes
+"rtems_task_restart: suspended task",tm04,NA,Yes
+"rtems_task_resume: task readied preempts caller",tm05,NA,Yes
+"rtems_task_resume: task readied returns to caller",tm06,NA,Yes
+"rtems_task_set_note: only case",tm08,NA,Yes
+"rtems_task_set_priority: obtain current priority",tm08,NA,Yes
+"rtems_task_set_priority: preempts caller",tm17,NA,Yes
+"rtems_task_set_priority: returns to caller",tm08,NA,Yes
+"rtems_task_start: only case",tm04,NA,Yes
+"rtems_task_suspend: calling task",tm05,NA,Yes
+"rtems_task_suspend: returns to caller",tm06,NA,Yes
+"rtems_task_wake_after: yield returns to caller",tm24,NA,Yes
+"rtems_task_wake_after: yields preempts caller",tm24,NA,Yes
+"rtems_task_wake_when: only case",tm23,NA,Yes
+,,,
+"rtems_timer_cancel: active",tm23,NA,Yes
+"rtems_timer_cancel: inactive",tm23,NA,Yes
+"rtems_timer_create: only case",tm23,NA,Yes
+"rtems_timer_delete: active",tm23,NA,Yes
+"rtems_timer_delete: inactive",tm23,NA,Yes
+"rtems_timer_fire_after: active",tm23,NA,Yes
+"rtems_timer_fire_after: inactive",tm23,NA,Yes
+"rtems_timer_fire_when: active",tm23,NA,Yes
+"rtems_timer_fire_when: inactive",tm23,NA,Yes
+"rtems_timer_ident: only case",tm21,NA,Yes
+"rtems_timer_reset: active",tm23,NA,Yes
+"rtems_timer_reset: inactive",tm23,NA,Yes