diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2014-04-09 10:09:57 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2014-04-15 09:29:35 +0200 |
commit | 1b67535d86c6a92cda1b08759293c20b7fab6978 (patch) | |
tree | c89b843dce778cdbfd1559285d690af859c36675 /testsuites/sptests/spscheduler01 | |
parent | rtems: Add scheduler identification (diff) | |
download | rtems-1b67535d86c6a92cda1b08759293c20b7fab6978.tar.bz2 |
rtems: Add scheduler get processors
Diffstat (limited to 'testsuites/sptests/spscheduler01')
-rw-r--r-- | testsuites/sptests/spscheduler01/init.c | 53 |
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)); |