From 50ccf988c2a6116aef41885366141e0f8f96a95b Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Thu, 18 Jul 2013 11:34:29 +0200 Subject: rtems: Error for task delete on SMP Task deletion is currently not implemented on SMP configurations. --- cpukit/rtems/src/taskdelete.c | 11 +++++++---- testsuites/smptests/smp08/init.c | 3 ++- testsuites/smptests/smpunsupported01/init.c | 5 +++++ 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/cpukit/rtems/src/taskdelete.c b/cpukit/rtems/src/taskdelete.c index 492f3e73f4..47ee2d156f 100644 --- a/cpukit/rtems/src/taskdelete.c +++ b/cpukit/rtems/src/taskdelete.c @@ -19,6 +19,7 @@ #endif #include +#include #include #include #include @@ -38,13 +39,16 @@ rtems_status_code rtems_task_delete( rtems_id id ) { -#ifdef RTEMS_SMP - return rtems_task_suspend( id ); -#else /* RTEMS_SMP */ register Thread_Control *the_thread; Objects_Locations location; Objects_Information *the_information; +#if defined( RTEMS_SMP ) + if ( rtems_configuration_is_smp_enabled() ) { + return RTEMS_NOT_IMPLEMENTED; + } +#endif + _RTEMS_Lock_allocator(); the_thread = _Thread_Get( id, &location ); @@ -94,5 +98,4 @@ rtems_status_code rtems_task_delete( _RTEMS_Unlock_allocator(); return RTEMS_INVALID_ID; -#endif /* RTEMS_SMP */ } diff --git a/testsuites/smptests/smp08/init.c b/testsuites/smptests/smp08/init.c index 897fe98a36..9da1b4238d 100644 --- a/testsuites/smptests/smp08/init.c +++ b/testsuites/smptests/smp08/init.c @@ -90,5 +90,6 @@ rtems_task Init( directive_failed( status, "task start" ); } - status = rtems_task_delete( RTEMS_SELF ); + /* FIXME: Task deletion currently not supported */ + (void) rtems_task_suspend( RTEMS_SELF ); } diff --git a/testsuites/smptests/smpunsupported01/init.c b/testsuites/smptests/smpunsupported01/init.c index 0f1a1023a0..3724cd4058 100644 --- a/testsuites/smptests/smpunsupported01/init.c +++ b/testsuites/smptests/smpunsupported01/init.c @@ -20,7 +20,12 @@ static void test(void) { + rtems_status_code sc; + rtems_test_assert(rtems_configuration_is_smp_enabled()); + + sc = rtems_task_delete(RTEMS_SELF); + rtems_test_assert(sc == RTEMS_NOT_IMPLEMENTED); } static void Init(rtems_task_argument arg) -- cgit v1.2.3