diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2016-02-17 11:33:27 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2016-02-17 11:53:27 +0100 |
commit | 10f28914f8bac5b8676ce1b9cc7efeccb2b33bb3 (patch) | |
tree | 3cbd8c189f723ed8c2d379bfc88861109d77eb34 | |
parent | score: Avoid SCORE_EXTERN (diff) | |
download | rtems-10f28914f8bac5b8676ce1b9cc7efeccb2b33bb3.tar.bz2 |
smptests/smpwakeafter01: Add scheduler config
Update #2554.
-rw-r--r-- | testsuites/smptests/smpwakeafter01/init.c | 64 | ||||
-rw-r--r-- | testsuites/smptests/smpwakeafter01/smpwakeafter01.doc | 3 |
2 files changed, 67 insertions, 0 deletions
diff --git a/testsuites/smptests/smpwakeafter01/init.c b/testsuites/smptests/smpwakeafter01/init.c index 8c6795efef..e5e0305283 100644 --- a/testsuites/smptests/smpwakeafter01/init.c +++ b/testsuites/smptests/smpwakeafter01/init.c @@ -30,6 +30,10 @@ const char rtems_test_name[] = "SMPWAKEAFTER 1"; #define INTERVAL_COUNT 8 +#define SCHED_A rtems_build_name(' ', ' ', ' ', 'A') + +#define SCHED_B rtems_build_name(' ', ' ', ' ', 'B') + static rtems_id task_ids[CPU_COUNT][INTERVAL_COUNT]; static const rtems_interval intervals[INTERVAL_COUNT] = @@ -75,8 +79,17 @@ static void test(void) uint32_t i; for (i = 0; i < cpu_count; ++i) { + rtems_id scheduler_id; uint32_t j; + if (i != 1) { + sc = rtems_scheduler_ident(SCHED_A, &scheduler_id); + rtems_test_assert(sc == RTEMS_SUCCESSFUL); + } else { + sc = rtems_scheduler_ident(SCHED_B, &scheduler_id); + rtems_test_assert(sc == RTEMS_SUCCESSFUL); + } + for (j = 0; j < INTERVAL_COUNT; ++j) { sc = rtems_task_create( rtems_build_name('T', 'A', 'S', 'K'), @@ -88,6 +101,9 @@ static void test(void) ); rtems_test_assert(sc == RTEMS_SUCCESSFUL); + sc = rtems_task_set_scheduler(task_ids[i][j], scheduler_id); + rtems_test_assert(sc == RTEMS_SUCCESSFUL); + sc = rtems_task_start(task_ids[i][j], task, make_arg(i, j)); rtems_test_assert(sc == RTEMS_SUCCESSFUL); } @@ -142,6 +158,54 @@ static void Init(rtems_task_argument arg) #define CONFIGURE_SMP_MAXIMUM_PROCESSORS CPU_COUNT +#define CONFIGURE_MAXIMUM_PRIORITY 255 + +#define CONFIGURE_SCHEDULER_PRIORITY_SMP + +#include <rtems/scheduler.h> + +RTEMS_SCHEDULER_CONTEXT_PRIORITY_SMP(a, CONFIGURE_MAXIMUM_PRIORITY + 1); + +RTEMS_SCHEDULER_CONTEXT_PRIORITY_SMP(b, CONFIGURE_MAXIMUM_PRIORITY + 1); + +#define CONFIGURE_SCHEDULER_CONTROLS \ + RTEMS_SCHEDULER_CONTROL_PRIORITY_SMP(a, SCHED_A), \ + RTEMS_SCHEDULER_CONTROL_PRIORITY_SMP(b, SCHED_B) + +#define CONFIGURE_SMP_SCHEDULER_ASSIGNMENTS \ + RTEMS_SCHEDULER_ASSIGN(0, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_MANDATORY), \ + RTEMS_SCHEDULER_ASSIGN(1, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL), \ + RTEMS_SCHEDULER_ASSIGN(0, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL), \ + RTEMS_SCHEDULER_ASSIGN(0, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL), \ + RTEMS_SCHEDULER_ASSIGN(0, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL), \ + RTEMS_SCHEDULER_ASSIGN(0, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL), \ + RTEMS_SCHEDULER_ASSIGN(0, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL), \ + RTEMS_SCHEDULER_ASSIGN(0, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL), \ + RTEMS_SCHEDULER_ASSIGN(0, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL), \ + RTEMS_SCHEDULER_ASSIGN(0, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL), \ + RTEMS_SCHEDULER_ASSIGN(0, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL), \ + RTEMS_SCHEDULER_ASSIGN(0, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL), \ + RTEMS_SCHEDULER_ASSIGN(0, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL), \ + RTEMS_SCHEDULER_ASSIGN(0, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL), \ + RTEMS_SCHEDULER_ASSIGN(0, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL), \ + RTEMS_SCHEDULER_ASSIGN(0, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL), \ + RTEMS_SCHEDULER_ASSIGN(0, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL), \ + RTEMS_SCHEDULER_ASSIGN(0, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL), \ + RTEMS_SCHEDULER_ASSIGN(0, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL), \ + RTEMS_SCHEDULER_ASSIGN(0, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL), \ + RTEMS_SCHEDULER_ASSIGN(0, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL), \ + RTEMS_SCHEDULER_ASSIGN(0, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL), \ + RTEMS_SCHEDULER_ASSIGN(0, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL), \ + RTEMS_SCHEDULER_ASSIGN(0, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL), \ + RTEMS_SCHEDULER_ASSIGN(0, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL), \ + RTEMS_SCHEDULER_ASSIGN(0, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL), \ + RTEMS_SCHEDULER_ASSIGN(0, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL), \ + RTEMS_SCHEDULER_ASSIGN(0, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL), \ + RTEMS_SCHEDULER_ASSIGN(0, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL), \ + RTEMS_SCHEDULER_ASSIGN(0, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL), \ + RTEMS_SCHEDULER_ASSIGN(0, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL), \ + RTEMS_SCHEDULER_ASSIGN(0, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL) + #define CONFIGURE_MAXIMUM_TASKS (1 + CPU_COUNT * INTERVAL_COUNT) #define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION diff --git a/testsuites/smptests/smpwakeafter01/smpwakeafter01.doc b/testsuites/smptests/smpwakeafter01/smpwakeafter01.doc index 64ee40c7a9..b02a92686c 100644 --- a/testsuites/smptests/smpwakeafter01/smpwakeafter01.doc +++ b/testsuites/smptests/smpwakeafter01/smpwakeafter01.doc @@ -10,3 +10,6 @@ concepts: - Ensure that rtems_task_wake_after() works on multiple processors with some tasks using different intervals. + - Use a scheduler partition for processor 1, assign all remaining processors + to a cluster. This highlights dependencies on the scheduler instance lock + in case this test is run with profiling enabled. |