diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2014-04-09 10:09:39 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2014-04-15 09:29:35 +0200 |
commit | 27270b0d6c1ec6ff7bca2ffc5a8c25b45d260165 (patch) | |
tree | e507100afb97e822cf17795ddd7864c2306c351a /testsuites/sptests/spscheduler01 | |
parent | rtems: Add scheduler get processors (diff) | |
download | rtems-27270b0d6c1ec6ff7bca2ffc5a8c25b45d260165.tar.bz2 |
rtems: Add task get/set scheduler
Diffstat (limited to 'testsuites/sptests/spscheduler01')
-rw-r--r-- | testsuites/sptests/spscheduler01/init.c | 78 |
1 files changed, 77 insertions, 1 deletions
diff --git a/testsuites/sptests/spscheduler01/init.c b/testsuites/sptests/spscheduler01/init.c index 655568da15..6c19abcfd0 100644 --- a/testsuites/sptests/spscheduler01/init.c +++ b/testsuites/sptests/spscheduler01/init.c @@ -102,6 +102,81 @@ static void test_task_get_set_affinity(void) #endif /* defined(__RTEMS_HAVE_SYS_CPUSET_H__) */ } +static void task(rtems_task_argument arg) +{ + (void) arg; + + rtems_test_assert(0); +} + +static void test_task_get_set_scheduler(void) +{ + rtems_status_code sc; + rtems_id self_id = rtems_task_self(); + rtems_name name = BLUE; + rtems_id scheduler_id; + rtems_id scheduler_by_name; + rtems_id task_id; + + sc = rtems_scheduler_ident(name, &scheduler_by_name); + rtems_test_assert(sc == RTEMS_SUCCESSFUL); + + sc = rtems_task_get_scheduler(RTEMS_SELF, NULL); + rtems_test_assert(sc == RTEMS_INVALID_ADDRESS); + + sc = rtems_task_get_scheduler(invalid_id, &scheduler_id); + rtems_test_assert(sc == RTEMS_INVALID_ID); + + scheduler_id = 0; + sc = rtems_task_get_scheduler(RTEMS_SELF, &scheduler_id); + rtems_test_assert(sc == RTEMS_SUCCESSFUL); + + rtems_test_assert(scheduler_id == scheduler_by_name); + + scheduler_id = 0; + sc = rtems_task_get_scheduler(self_id, &scheduler_id); + rtems_test_assert(sc == RTEMS_SUCCESSFUL); + + rtems_test_assert(scheduler_id == scheduler_by_name); + + sc = rtems_task_set_scheduler(invalid_id, scheduler_id); + rtems_test_assert(sc == RTEMS_INVALID_ID); + + sc = rtems_task_set_scheduler(self_id, invalid_id); + rtems_test_assert(sc == RTEMS_INVALID_ID); + + sc = rtems_task_set_scheduler(self_id, scheduler_id); + rtems_test_assert(sc == RTEMS_INCORRECT_STATE); + + sc = rtems_task_create( + rtems_build_name('T', 'A', 'S', 'K'), + 2, + RTEMS_MINIMUM_STACK_SIZE, + RTEMS_DEFAULT_MODES, + RTEMS_DEFAULT_ATTRIBUTES, + &task_id + ); + rtems_test_assert(sc == RTEMS_SUCCESSFUL); + + scheduler_id = 0; + sc = rtems_task_get_scheduler(task_id, &scheduler_id); + rtems_test_assert(sc == RTEMS_SUCCESSFUL); + + rtems_test_assert(scheduler_id == scheduler_by_name); + + sc = rtems_task_set_scheduler(task_id, scheduler_id); + rtems_test_assert(sc == RTEMS_SUCCESSFUL); + + sc = rtems_task_start(task_id, task, 0); + rtems_test_assert(sc == RTEMS_SUCCESSFUL); + + sc = rtems_task_set_scheduler(task_id, scheduler_id); + rtems_test_assert(sc == RTEMS_INCORRECT_STATE); + + sc = rtems_task_delete(task_id); + rtems_test_assert(sc == RTEMS_SUCCESSFUL); +} + static void test_scheduler_ident(void) { rtems_status_code sc; @@ -184,6 +259,7 @@ static void Init(rtems_task_argument arg) rtems_resource_snapshot_take(&snapshot); test_task_get_set_affinity(); + test_task_get_set_scheduler(); test_scheduler_ident(); test_scheduler_get_processors(); @@ -198,7 +274,7 @@ static void Init(rtems_task_argument arg) #define CONFIGURE_USE_IMFS_AS_BASE_FILESYSTEM -#define CONFIGURE_MAXIMUM_TASKS 1 +#define CONFIGURE_MAXIMUM_TASKS 2 #define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION |