From e50e3f7087cfe6fab4c3a49398e4bd40fe2a2e33 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Mon, 1 Oct 2018 09:25:06 +0200 Subject: rtems: Add rtems_task_exit() Update #3533. --- testsuites/sptests/spthreadlife01/init.c | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) (limited to 'testsuites') diff --git a/testsuites/sptests/spthreadlife01/init.c b/testsuites/sptests/spthreadlife01/init.c index 6f22a5b2a0..d01aff51af 100644 --- a/testsuites/sptests/spthreadlife01/init.c +++ b/testsuites/sptests/spthreadlife01/init.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, 2016 embedded brains GmbH. All rights reserved. + * Copyright (c) 2014, 2018 embedded brains GmbH. All rights reserved. * * embedded brains GmbH * Dornierstr. 4 @@ -61,6 +61,10 @@ typedef enum { DELETE_7, DELETE_8, DELETE_9, + EXIT_0, + EXIT_1, + EXIT_2, + EXIT_3, INVALID } test_state; @@ -182,6 +186,10 @@ static void delete_extension( assert_priority(PRIO_VERY_LOW); ctx->current = DELETE_9; break; + case EXIT_2: + assert_priority(PRIO_VERY_LOW); + ctx->current = EXIT_3; + break; default: rtems_test_assert(0); break; @@ -213,7 +221,10 @@ static void terminate_extension(Thread_Control *executing) case DELETE_7: assert_priority(PRIO_LOW); ctx->current = DELETE_8; - wake_up_main(ctx); + break; + case EXIT_1: + assert_priority(PRIO_LOW); + ctx->current = EXIT_2; break; default: rtems_test_assert(0); @@ -292,6 +303,10 @@ static void worker_task(rtems_task_argument arg) rtems_task_delete(RTEMS_SELF); rtems_test_assert(0); break; + case EXIT_0: + ctx->current = EXIT_1; + rtems_task_exit(); + break; default: rtems_test_assert(0); break; @@ -399,8 +414,17 @@ static void test(void) set_priority(PRIO_VERY_LOW); rtems_test_assert(rtems_resource_snapshot_check(&snapshot)); + set_priority(PRIO_INIT); + + create_and_start_worker(ctx); + + change_state(ctx, DELETE_9, EXIT_0, INVALID); + set_priority(PRIO_VERY_LOW); + + rtems_test_assert(rtems_resource_snapshot_check(&snapshot)); + set_priority(PRIO_INIT); - rtems_test_assert(ctx->current == DELETE_9); + rtems_test_assert(ctx->current == EXIT_3); } static void Init(rtems_task_argument arg) -- cgit v1.2.3