diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2016-05-27 09:41:18 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2016-05-30 16:16:22 +0200 |
commit | 3c1ad25768e2ecade380ee1a211b93fa4cb3ea22 (patch) | |
tree | d24376829e0587b908dce53875c69a6c7be199b2 /cpukit/rtems/src/semdelete.c | |
parent | rtems: Simplify rtems_semaphore_flush() (diff) | |
download | rtems-3c1ad25768e2ecade380ee1a211b93fa4cb3ea22.tar.bz2 |
rtems: Simplify rtems_semaphore_delete()
Due to the unified status codes, we can now use a common flush and
destroy method for semaphore and mutex variants.
Diffstat (limited to 'cpukit/rtems/src/semdelete.c')
-rw-r--r-- | cpukit/rtems/src/semdelete.c | 17 |
1 files changed, 6 insertions, 11 deletions
diff --git a/cpukit/rtems/src/semdelete.c b/cpukit/rtems/src/semdelete.c index 908c178593..34da496b8d 100644 --- a/cpukit/rtems/src/semdelete.c +++ b/cpukit/rtems/src/semdelete.c @@ -84,14 +84,6 @@ rtems_status_code rtems_semaphore_delete( _Objects_Close( &_Semaphore_Information, &the_semaphore->Object ); switch ( the_semaphore->variant ) { - case SEMAPHORE_VARIANT_MUTEX: - _CORE_mutex_Flush( - &the_semaphore->Core_control.mutex, - _Thread_queue_Flush_status_object_was_deleted, - &queue_context - ); - _CORE_mutex_Destroy( &the_semaphore->Core_control.mutex ); - break; #if defined(RTEMS_SMP) case SEMAPHORE_VARIANT_MRSP: _MRSP_Destroy( &the_semaphore->Core_control.mrsp, &queue_context ); @@ -99,14 +91,17 @@ rtems_status_code rtems_semaphore_delete( #endif default: _Assert( - the_semaphore->variant == SEMAPHORE_VARIANT_SIMPLE_BINARY + the_semaphore->variant == SEMAPHORE_VARIANT_MUTEX + || the_semaphore->variant == SEMAPHORE_VARIANT_SIMPLE_BINARY || the_semaphore->variant == SEMAPHORE_VARIANT_COUNTING ); - _CORE_semaphore_Destroy( - &the_semaphore->Core_control.semaphore, + _Thread_queue_Flush_critical( + &the_semaphore->Core_control.Wait_queue.Queue, _Semaphore_Get_operations( the_semaphore ), + _Thread_queue_Flush_status_object_was_deleted, &queue_context ); + _Thread_queue_Destroy( &the_semaphore->Core_control.Wait_queue ); break; } |