[rtems commit] Enhance Semaphore Blocking and Readying Time Test Cases

Joel Sherrill joel at rtems.org
Tue Jul 15 00:22:55 UTC 2014


Module:    rtems
Branch:    master
Commit:    b6343c61002b421e4d578e9868bedc1f0f0b43d7
Changeset: http://git.rtems.org/rtems/commit/?id=b6343c61002b421e4d578e9868bedc1f0f0b43d7

Author:    Joel Sherrill <joel.sherrill at oarcorp.com>
Date:      Thu Jul 10 14:20:39 2014 -0500

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

---

 testsuites/tmtests/Makefile.am      |    2 +-
 testsuites/tmtests/configure.ac     |    7 +-
 testsuites/tmtests/tm02/Makefile.am |    1 +
 testsuites/tmtests/tm02/task1.c     |   28 +++-
 testsuites/tmtests/tm02/tm02.doc    |    4 +-
 testsuites/tmtests/tm03/Makefile.am |    1 +
 testsuites/tmtests/tm03/task1.c     |   29 +++-
 testsuites/tmtests/tm03/tm03.doc    |    5 +-
 testsuites/tmtests/tm31/Makefile.am |   28 +++
 testsuites/tmtests/tm31/tm31.doc    |   14 ++
 testsuites/tmtests/tm32/Makefile.am |   27 +++
 testsuites/tmtests/tm32/tm32.doc    |   14 ++
 testsuites/tmtests/tm33/Makefile.am |   28 +++
 testsuites/tmtests/tm33/tm33.doc    |   14 ++
 testsuites/tmtests/tm34/Makefile.am |   27 +++
 testsuites/tmtests/tm34/tm34.doc    |   14 ++
 testsuites/tmtests/tm35/Makefile.am |   28 +++
 testsuites/tmtests/tm35/tm35.doc    |   14 ++
 testsuites/tmtests/tm36/Makefile.am |   27 +++
 testsuites/tmtests/tm36/tm36.doc    |   14 ++
 testsuites/tmtests/tmtests_plan.csv |  322 ++++++++++++++++++-----------------
 21 files changed, 477 insertions(+), 171 deletions(-)

diff --git a/testsuites/tmtests/Makefile.am b/testsuites/tmtests/Makefile.am
index 7d98a02..bab9e80 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 1e3241f..0e3385c 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 3bec684..ba6ad0f 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 e27e4a0..4d9b6d1 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 32f2b2d..ed9aac0 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 be85076..1f6d6fe 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 9cd8de8..42126ac 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 32f2b2d..3d1ea9d 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 at 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 0000000..a6c8839
--- /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 at .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 0000000..90de934
--- /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 0000000..7fe71fd
--- /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 at .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 0000000..2087d42
--- /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 0000000..c0ef670
--- /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 at .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 0000000..f78a4dc
--- /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 0000000..7c9f1ad
--- /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 at .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 0000000..5affd68
--- /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 0000000..b6c8c91
--- /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 at .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 0000000..e82e284
--- /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 0000000..4abab96
--- /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 at .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 0000000..0f20a9c
--- /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 ca46f49..de3335b 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



More information about the vc mailing list