summaryrefslogtreecommitdiffstats
path: root/testsuites
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2014-04-09 10:09:57 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2014-04-15 09:29:35 +0200
commit1b67535d86c6a92cda1b08759293c20b7fab6978 (patch)
treec89b843dce778cdbfd1559285d690af859c36675 /testsuites
parentrtems: Add scheduler identification (diff)
downloadrtems-1b67535d86c6a92cda1b08759293c20b7fab6978.tar.bz2
rtems: Add scheduler get processors
Diffstat (limited to 'testsuites')
-rw-r--r--testsuites/sptests/spscheduler01/init.c53
1 files changed, 53 insertions, 0 deletions
diff --git a/testsuites/sptests/spscheduler01/init.c b/testsuites/sptests/spscheduler01/init.c
index 80bdddf133..655568da15 100644
--- a/testsuites/sptests/spscheduler01/init.c
+++ b/testsuites/sptests/spscheduler01/init.c
@@ -123,6 +123,58 @@ static void test_scheduler_ident(void)
rtems_test_assert(scheduler_id == expected_id);
}
+static void test_scheduler_get_processors(void)
+{
+#if defined(__RTEMS_HAVE_SYS_CPUSET_H__)
+ rtems_status_code sc;
+ rtems_name name = BLUE;
+ rtems_id scheduler_id;
+ cpu_set_t cpusetone;
+ cpu_set_t cpuset;
+ size_t big = 2 * CHAR_BIT * sizeof(cpu_set_t);
+ size_t cpusetbigsize = CPU_ALLOC_SIZE(big);
+ cpu_set_t *cpusetbigone;
+ cpu_set_t *cpusetbig;
+
+ CPU_ZERO(&cpusetone);
+ CPU_SET(0, &cpusetone);
+
+ sc = rtems_scheduler_ident(name, &scheduler_id);
+ rtems_test_assert(sc == RTEMS_SUCCESSFUL);
+
+ sc = rtems_scheduler_get_processor_set(scheduler_id, sizeof(cpuset), NULL);
+ rtems_test_assert(sc == RTEMS_INVALID_ADDRESS);
+
+ sc = rtems_scheduler_get_processor_set(invalid_id, sizeof(cpuset), &cpuset);
+ rtems_test_assert(sc == RTEMS_INVALID_ID);
+
+ sc = rtems_scheduler_get_processor_set(scheduler_id, 0, &cpuset);
+ rtems_test_assert(sc == RTEMS_INVALID_NUMBER);
+
+ sc = rtems_scheduler_get_processor_set(scheduler_id, sizeof(cpuset), &cpuset);
+ rtems_test_assert(sc == RTEMS_SUCCESSFUL);
+
+ rtems_test_assert(CPU_EQUAL(&cpuset, &cpusetone));
+
+ cpusetbigone = CPU_ALLOC(big);
+ rtems_test_assert(cpusetbigone != NULL);
+
+ cpusetbig = CPU_ALLOC(big);
+ rtems_test_assert(cpusetbig != NULL);
+
+ CPU_ZERO_S(cpusetbigsize, cpusetbigone);
+ CPU_SET_S(0, cpusetbigsize, cpusetbigone);
+
+ sc = rtems_scheduler_get_processor_set(scheduler_id, cpusetbigsize, cpusetbig);
+ rtems_test_assert(sc == RTEMS_SUCCESSFUL);
+
+ rtems_test_assert(CPU_EQUAL_S(cpusetbigsize, cpusetbig, cpusetbigone));
+
+ CPU_FREE(cpusetbig);
+ CPU_FREE(cpusetbigone);
+#endif /* defined(__RTEMS_HAVE_SYS_CPUSET_H__) */
+}
+
static void Init(rtems_task_argument arg)
{
rtems_resource_snapshot snapshot;
@@ -133,6 +185,7 @@ static void Init(rtems_task_argument arg)
test_task_get_set_affinity();
test_scheduler_ident();
+ test_scheduler_get_processors();
rtems_test_assert(rtems_resource_snapshot_check(&snapshot));