I added variants of tm02 and tm03 for counting/priority, binary/FIFO, and binary/priority. These tests are for an operation count of 100 on sis. I have attached the patch and the files.
The "0" times are because I just repurposed an existing test and when it blocks the middle tasks in FIFO order, each requires a context switch through it. When in priority order, it restores the highest priority and there isn't enough code executed to be reliably measured. For the test cases we have, everything looks the same or better but not remarkably so. If someone can suggest some test cases which push priority blocking, I am happy to try them. I am not seeing a downside to committing this code. If someone doesn't say something, then I plan to commit it soon. Soon being after this weekend since it is my wedding anniversary and we are taking a long weekend. -- Joel Sherrill, Ph.D. Director of Research & Development joel.sherr...@oarcorp.com On-Line Applications Research Ask me about RTEMS: a free RTOS Huntsville AL 35805 Support Available (256) 722-9985
>From 23997f324cb26999371842a40ad624d6b1b59b54 Mon Sep 17 00:00:00 2001 From: Joel Sherrill <joel.sherr...@oarcorp.com> Date: Thu, 10 Jul 2014 14:20:39 -0500 Subject: [PATCH 7/7] 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(-) create mode 100644 testsuites/tmtests/tm31/Makefile.am create mode 100644 testsuites/tmtests/tm31/tm31.doc create mode 100644 testsuites/tmtests/tm32/Makefile.am create mode 100644 testsuites/tmtests/tm32/tm32.doc create mode 100644 testsuites/tmtests/tm33/Makefile.am create mode 100644 testsuites/tmtests/tm33/tm33.doc create mode 100644 testsuites/tmtests/tm34/Makefile.am create mode 100644 testsuites/tmtests/tm34/tm34.doc create mode 100644 testsuites/tmtests/tm35/Makefile.am create mode 100644 testsuites/tmtests/tm35/tm35.doc create mode 100644 testsuites/tmtests/tm36/Makefile.am create mode 100644 testsuites/tmtests/tm36/tm36.doc 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 <cynt...@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@.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@.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@.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@.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@.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@.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 -- 1.7.1
rtems_semaphore_create: only case - 48 rtems_semaphore_delete: only case - 60 rtems_semaphore_ident: only case - 62 rtems_semaphore_obtain: available - 8 rtems_semaphore_obtain: binary/FIFO not available caller blocks - 87 rtems_semaphore_obtain: binary/priority not available caller blocks - 113 rtems_semaphore_obtain: counting/FIFO not available caller blocks - 86 rtems_semaphore_obtain: counting/priority not available caller blocks - 112 rtems_semaphore_obtain: not available NO_WAIT - 8 rtems_semaphore_release: binary/FIFO task readied preempts caller - 76 rtems_semaphore_release: binary/priority task readied preempts caller - 0 rtems_semaphore_release: counting/FIFO task readied preempts caller - 74 rtems_semaphore_release: counting/priority task readied preempts caller - 0 rtems_semaphore_release: no waiting tasks - 24 rtems_semaphore_release: task readied -- returns to caller - 31
rtems_semaphore_create: only case - 59 rtems_semaphore_delete: only case - 71 rtems_semaphore_ident: only case - 62 rtems_semaphore_obtain: available - 8 rtems_semaphore_obtain: binary/FIFO not available caller blocks - 88 rtems_semaphore_obtain: binary/priority not available caller blocks - 116 rtems_semaphore_obtain: counting/FIFO not available caller blocks - 87 rtems_semaphore_obtain: counting/priority not available caller blocks - 115 rtems_semaphore_obtain: not available NO_WAIT - 8 rtems_semaphore_release: binary/FIFO task readied preempts caller - 80 rtems_semaphore_release: binary/priority task readied preempts caller - 0 rtems_semaphore_release: counting/FIFO task readied preempts caller - 78 rtems_semaphore_release: counting/priority task readied preempts caller - 0 rtems_semaphore_release: no waiting tasks - 28 rtems_semaphore_release: task readied -- returns to caller - 34
_______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel