diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2014-04-29 16:09:35 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2014-05-05 08:26:27 +0200 |
commit | e239760f6a6a5e31331487548d56c4a7581ed7cc (patch) | |
tree | f8f80f50df7562c7bb2209747c8544589212f45f /testsuites | |
parent | doc: Add SMP glossary (diff) | |
download | rtems-e239760f6a6a5e31331487548d56c4a7581ed7cc.tar.bz2 |
score: SMP_FATAL_SCHEDULER_WITHOUT_PROCESSORS
Avoid the SMP_FATAL_SCHEDULER_WITHOUT_PROCESSORS fatal error and make it
a run-time error in rtems_scheduler_ident() and _Scheduler_Get_by_id().
Diffstat (limited to 'testsuites')
-rw-r--r-- | testsuites/smptests/Makefile.am | 1 | ||||
-rw-r--r-- | testsuites/smptests/configure.ac | 1 | ||||
-rw-r--r-- | testsuites/smptests/smpfatal06/Makefile.am | 19 | ||||
-rw-r--r-- | testsuites/smptests/smpfatal06/init.c | 81 | ||||
-rw-r--r-- | testsuites/smptests/smpfatal06/smpfatal06.doc | 11 | ||||
-rw-r--r-- | testsuites/smptests/smpfatal06/smpfatal06.scn | 2 | ||||
-rw-r--r-- | testsuites/smptests/smpscheduler02/init.c | 58 |
7 files changed, 51 insertions, 122 deletions
diff --git a/testsuites/smptests/Makefile.am b/testsuites/smptests/Makefile.am index e757cf28eb..f16d39664d 100644 --- a/testsuites/smptests/Makefile.am +++ b/testsuites/smptests/Makefile.am @@ -16,7 +16,6 @@ SUBDIRS += smpfatal02 SUBDIRS += smpfatal03 SUBDIRS += smpfatal04 SUBDIRS += smpfatal05 -SUBDIRS += smpfatal06 SUBDIRS += smpfatal07 SUBDIRS += smpfatal08 SUBDIRS += smpload01 diff --git a/testsuites/smptests/configure.ac b/testsuites/smptests/configure.ac index ee36b50568..e3857f1e0f 100644 --- a/testsuites/smptests/configure.ac +++ b/testsuites/smptests/configure.ac @@ -71,7 +71,6 @@ smpfatal02/Makefile smpfatal03/Makefile smpfatal04/Makefile smpfatal05/Makefile -smpfatal06/Makefile smpfatal07/Makefile smpfatal08/Makefile smpload01/Makefile diff --git a/testsuites/smptests/smpfatal06/Makefile.am b/testsuites/smptests/smpfatal06/Makefile.am deleted file mode 100644 index c0bdf5bb23..0000000000 --- a/testsuites/smptests/smpfatal06/Makefile.am +++ /dev/null @@ -1,19 +0,0 @@ -rtems_tests_PROGRAMS = smpfatal06 -smpfatal06_SOURCES = init.c - -dist_rtems_tests_DATA = smpfatal06.scn smpfatal06.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 = $(smpfatal06_OBJECTS) -LINK_LIBS = $(smpfatal06_LDLIBS) - -smpfatal06$(EXEEXT): $(smpfatal06_OBJECTS) $(smpfatal06_DEPENDENCIES) - @rm -f smpfatal06$(EXEEXT) - $(make-exe) - -include $(top_srcdir)/../automake/local.am diff --git a/testsuites/smptests/smpfatal06/init.c b/testsuites/smptests/smpfatal06/init.c deleted file mode 100644 index 739da7a35d..0000000000 --- a/testsuites/smptests/smpfatal06/init.c +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright (c) 2014 embedded brains GmbH. All rights reserved. - * - * embedded brains GmbH - * Dornierstr. 4 - * 82178 Puchheim - * Germany - * <rtems@embedded-brains.de> - * - * 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 <rtems/test.h> -#include <rtems/score/smpimpl.h> - -#include <assert.h> -#include <stdlib.h> - -const char rtems_test_name[] = "SMPFATAL 6"; - -static void Init(rtems_task_argument arg) -{ - assert(0); -} - -static void fatal_extension( - rtems_fatal_source source, - bool is_internal, - rtems_fatal_code code -) -{ - rtems_test_begink(); - - if ( - source == RTEMS_FATAL_SOURCE_SMP - && !is_internal - && code == SMP_FATAL_SCHEDULER_WITHOUT_PROCESSORS - ) { - rtems_test_endk(); - } -} - -#define CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER -#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER - -#define CONFIGURE_INITIAL_EXTENSIONS \ - { .fatal = fatal_extension }, \ - RTEMS_TEST_INITIAL_EXTENSION - -#define CONFIGURE_SMP_APPLICATION - -#define CONFIGURE_SMP_MAXIMUM_PROCESSORS 1 - -#define CONFIGURE_SCHEDULER_SIMPLE_SMP - -#include <rtems/scheduler.h> - -RTEMS_SCHEDULER_CONTEXT_SIMPLE_SMP(a); -RTEMS_SCHEDULER_CONTEXT_SIMPLE_SMP(b); - -#define CONFIGURE_SCHEDULER_CONTROLS \ - RTEMS_SCHEDULER_CONTROL_SIMPLE_SMP(a, rtems_build_name('S', 'I', 'M', 'P')), \ - RTEMS_SCHEDULER_CONTROL_SIMPLE_SMP(b, rtems_build_name('S', 'I', 'M', 'P')) - -#define CONFIGURE_SMP_SCHEDULER_ASSIGNMENTS \ - RTEMS_SCHEDULER_ASSIGN(0, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_MANDATORY) - -#define CONFIGURE_MAXIMUM_TASKS 1 - -#define CONFIGURE_RTEMS_INIT_TASKS_TABLE - -#define CONFIGURE_INIT - -#include <rtems/confdefs.h> diff --git a/testsuites/smptests/smpfatal06/smpfatal06.doc b/testsuites/smptests/smpfatal06/smpfatal06.doc deleted file mode 100644 index e35b3b0a8e..0000000000 --- a/testsuites/smptests/smpfatal06/smpfatal06.doc +++ /dev/null @@ -1,11 +0,0 @@ -This file describes the directives and concepts tested by this test set. - -test set name: smpfatal06 - -directives: - - - _SMP_Handler_initialize() - -concepts: - - - Ensure that a scheduler without processor leads to a fatal error. diff --git a/testsuites/smptests/smpfatal06/smpfatal06.scn b/testsuites/smptests/smpfatal06/smpfatal06.scn deleted file mode 100644 index 575b2b3fb1..0000000000 --- a/testsuites/smptests/smpfatal06/smpfatal06.scn +++ /dev/null @@ -1,2 +0,0 @@ -*** TEST SMPFATAL 6 *** -*** END OF TEST SMPFATAL 6 *** diff --git a/testsuites/smptests/smpscheduler02/init.c b/testsuites/smptests/smpscheduler02/init.c index f958744415..1e6b6d5925 100644 --- a/testsuites/smptests/smpscheduler02/init.c +++ b/testsuites/smptests/smpscheduler02/init.c @@ -25,12 +25,12 @@ const char rtems_test_name[] = "SMPSCHEDULER 2"; #if defined(__RTEMS_HAVE_SYS_CPUSET_H__) -#define CPU_COUNT 2 - #define SCHED_A rtems_build_name(' ', ' ', ' ', 'A') #define SCHED_B rtems_build_name(' ', ' ', ' ', 'B') +#define SCHED_C rtems_build_name(' ', ' ', ' ', 'C') + static rtems_id main_task_id; static void task(rtems_task_argument arg) @@ -56,6 +56,7 @@ static void test(void) rtems_id scheduler_id; rtems_id scheduler_a_id; rtems_id scheduler_b_id; + rtems_id scheduler_c_id; cpu_set_t cpuset; cpu_set_t first_cpu; cpu_set_t second_cpu; @@ -82,6 +83,9 @@ static void test(void) rtems_test_assert(sc == RTEMS_SUCCESSFUL); rtems_test_assert(scheduler_a_id != scheduler_b_id); + sc = rtems_scheduler_ident(SCHED_C, &scheduler_c_id); + rtems_test_assert(sc == RTEMS_UNSATISFIED); + CPU_ZERO(&cpuset); sc = rtems_scheduler_get_processor_set( scheduler_a_id, @@ -122,6 +126,9 @@ static void test(void) sc = rtems_task_set_scheduler(task_id, scheduler_b_id); rtems_test_assert(sc == RTEMS_SUCCESSFUL); + sc = rtems_task_set_scheduler(task_id, scheduler_b_id + 1); + rtems_test_assert(sc == RTEMS_INVALID_ID); + sc = rtems_task_get_scheduler(task_id, &scheduler_id); rtems_test_assert(sc == RTEMS_SUCCESSFUL); rtems_test_assert(scheduler_id == scheduler_b_id); @@ -191,11 +198,13 @@ static void Init(rtems_task_argument arg) #define CONFIGURE_SMP_APPLICATION -#define CONFIGURE_SMP_MAXIMUM_PROCESSORS CPU_COUNT +/* Lets see when the first RTEMS system hits this limit */ +#define CONFIGURE_SMP_MAXIMUM_PROCESSORS 64 #define CONFIGURE_MAXIMUM_PRIORITY 255 #define CONFIGURE_SCHEDULER_PRIORITY_SMP +#define CONFIGURE_SCHEDULER_SIMPLE_SMP #include <rtems/scheduler.h> @@ -203,15 +212,50 @@ RTEMS_SCHEDULER_CONTEXT_PRIORITY_SMP(a, CONFIGURE_MAXIMUM_PRIORITY + 1); RTEMS_SCHEDULER_CONTEXT_PRIORITY_SMP(b, CONFIGURE_MAXIMUM_PRIORITY + 1); +RTEMS_SCHEDULER_CONTEXT_SIMPLE_SMP(c); + #define CONFIGURE_SCHEDULER_CONTROLS \ RTEMS_SCHEDULER_CONTROL_PRIORITY_SMP(a, SCHED_A), \ - RTEMS_SCHEDULER_CONTROL_PRIORITY_SMP(b, SCHED_B) + RTEMS_SCHEDULER_CONTROL_PRIORITY_SMP(b, SCHED_B), \ + RTEMS_SCHEDULER_CONTROL_SIMPLE_SMP(c, SCHED_C) #define CONFIGURE_SMP_SCHEDULER_ASSIGNMENTS \ RTEMS_SCHEDULER_ASSIGN(0, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_MANDATORY), \ - RTEMS_SCHEDULER_ASSIGN(1, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_MANDATORY) - -#define CONFIGURE_MAXIMUM_TASKS CPU_COUNT + RTEMS_SCHEDULER_ASSIGN(1, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_MANDATORY), \ + RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \ + RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \ + RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \ + RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \ + RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \ + RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \ + RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \ + RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \ + RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \ + RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \ + RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \ + RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \ + RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \ + RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \ + RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \ + RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \ + RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \ + RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \ + RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \ + RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \ + RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \ + RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \ + RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \ + RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \ + RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \ + RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \ + RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \ + RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \ + RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \ + RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \ + RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER, \ + RTEMS_SCHEDULER_ASSIGN(2, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL) + +#define CONFIGURE_MAXIMUM_TASKS 2 #define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION |