diff options
author | Jennifer Averett <jennifer.averett@oarcorp.com> | 2014-07-10 11:55:04 -0500 |
---|---|---|
committer | Jennifer Averett <jennifer.averett@oarcorp.com> | 2014-07-11 10:12:48 -0500 |
commit | 247118bf519c18bd646417a817b8a22b304dcc61 (patch) | |
tree | ead8e87b6ce01a13c7e68977f881fb0cb27ebeb4 /testsuites/smptests/smpschedsem01 | |
parent | smpschedaffinity05: Add test for worst case migration for affintiy scheduler. (diff) | |
download | rtems-247118bf519c18bd646417a817b8a22b304dcc61.tar.bz2 |
smpschedsem01: new test.
This test verifies priority is inherited from a high priority
semaphore by a lower priority task.
Diffstat (limited to 'testsuites/smptests/smpschedsem01')
-rw-r--r-- | testsuites/smptests/smpschedsem01/Makefile.am | 19 | ||||
-rw-r--r-- | testsuites/smptests/smpschedsem01/init.c | 94 | ||||
-rw-r--r-- | testsuites/smptests/smpschedsem01/smpschedsem01.doc | 12 | ||||
-rw-r--r-- | testsuites/smptests/smpschedsem01/smpschedsem01.scn | 7 |
4 files changed, 132 insertions, 0 deletions
diff --git a/testsuites/smptests/smpschedsem01/Makefile.am b/testsuites/smptests/smpschedsem01/Makefile.am new file mode 100644 index 0000000000..bf39506e26 --- /dev/null +++ b/testsuites/smptests/smpschedsem01/Makefile.am @@ -0,0 +1,19 @@ +rtems_tests_PROGRAMS = smpschedsem01 +smpschedsem01_SOURCES = init.c + +dist_rtems_tests_DATA = smpschedsem01.scn smpschedsem01.doc + +include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP@.cfg +include $(top_srcdir)/../automake/compile.am +include $(top_srcdir)/../automake/leaf.am + +AM_CPPFLAGS += -I$(top_srcdir)/../support/include + +LINK_OBJS = $(smpschedsem01_OBJECTS) +LINK_LIBS = $(smpschedsem01_LDLIBS) + +smpschedsem01$(EXEEXT): $(smpschedsem01_OBJECTS) $(smpschedsem01_DEPENDENCIES) + @rm -f smpschedsem01$(EXEEXT) + $(make-exe) + +include $(top_srcdir)/../automake/local.am diff --git a/testsuites/smptests/smpschedsem01/init.c b/testsuites/smptests/smpschedsem01/init.c new file mode 100644 index 0000000000..894ba812b9 --- /dev/null +++ b/testsuites/smptests/smpschedsem01/init.c @@ -0,0 +1,94 @@ +/* + * COPYRIGHT (c) 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. + */ + +#ifdef HAVE_CONFIG_H + #include "config.h" +#endif + +#include <rtems.h> + +#include "tmacros.h" + +const char rtems_test_name[] = "SMPSCHEDSEM 01"; + +#define NUM_CPUS 1 +#define TASK_COUNT 2 +#define TASK_PRIORITY 8 +#define SEM_PRIORITY 5 + +/* + * Test verifies priority, + * Changes priority by obtaining a higher priority semaphore + * Releases semaphore to return priority + */ +static void test(void) +{ + rtems_id id; + rtems_status_code sc; + rtems_task_priority priority; + rtems_id task_sem; + + sc = rtems_semaphore_create( + rtems_build_name('S', 'E', 'M', '0'), + 1, + RTEMS_BINARY_SEMAPHORE | + RTEMS_PRIORITY | + RTEMS_PRIORITY_CEILING, + 5, + &task_sem + ); + rtems_test_assert(sc == RTEMS_SUCCESSFUL); + + rtems_task_set_priority(RTEMS_SELF, RTEMS_CURRENT_PRIORITY, &priority); + printf("Init: priority %d expected %d\n",(int)priority, TASK_PRIORITY ); + rtems_test_assert( priority == TASK_PRIORITY ); + + printf("Init: Obtain Semaphore\n"); + sc = rtems_semaphore_obtain (task_sem, RTEMS_WAIT, RTEMS_NO_TIMEOUT); + rtems_test_assert(sc == RTEMS_SUCCESSFUL); + rtems_task_set_priority(RTEMS_SELF, RTEMS_CURRENT_PRIORITY, &priority); + printf("Init: priority %d expected %d\n",(int)priority, SEM_PRIORITY ); + rtems_test_assert( priority == SEM_PRIORITY ); + + printf("Init: Release Semaphore\n"); + rtems_semaphore_release(task_sem); + rtems_task_set_priority(RTEMS_SELF, RTEMS_CURRENT_PRIORITY, &priority); + printf("Init: priority %d expected %d\n",(int)priority, TASK_PRIORITY ); + rtems_test_assert( priority == TASK_PRIORITY ); +} + +static void Init(rtems_task_argument arg) +{ + TEST_BEGIN(); + + test(); + + TEST_END(); + rtems_test_exit(0); +} + +#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER +#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER + +#define CONFIGURE_SMP_APPLICATION + +#define CONFIGURE_SCHEDULER_PRIORITY_AFFINITY_SMP + +#define CONFIGURE_SMP_MAXIMUM_PROCESSORS NUM_CPUS + +#define CONFIGURE_MAXIMUM_TASKS TASK_COUNT + +#define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION + +#define CONFIGURE_INIT_TASK_PRIORITY TASK_PRIORITY +#define CONFIGURE_RTEMS_INIT_TASKS_TABLE + +#define CONFIGURE_INIT + +#include <rtems/confdefs.h> diff --git a/testsuites/smptests/smpschedsem01/smpschedsem01.doc b/testsuites/smptests/smpschedsem01/smpschedsem01.doc new file mode 100644 index 0000000000..22c76161a8 --- /dev/null +++ b/testsuites/smptests/smpschedsem01/smpschedsem01.doc @@ -0,0 +1,12 @@ +This file describes the directives and concepts tested by this test set. + +test set name: smpschedsem01 + +directives: + + - _Scheduler_priority_affinity_xxx + +concepts: + + - Ensure priority is inherited from a high priority semaphore by a lower + priority task. diff --git a/testsuites/smptests/smpschedsem01/smpschedsem01.scn b/testsuites/smptests/smpschedsem01/smpschedsem01.scn new file mode 100644 index 0000000000..71a1da2e98 --- /dev/null +++ b/testsuites/smptests/smpschedsem01/smpschedsem01.scn @@ -0,0 +1,7 @@ +*** BEGIN OF TEST SMPSCHEDSEM 01 *** +Init: priority 8 expected 8 +Init: Obtain Semaphore +Init: priority 5 expected 5 +Init: Release Semaphore +Init: priority 8 expected 8 +*** END OF TEST SMPSCHEDSEM 01 *** |