diff options
Diffstat (limited to 'cpukit/posix/src/semdestroy.c')
-rw-r--r-- | cpukit/posix/src/semdestroy.c | 32 |
1 files changed, 2 insertions, 30 deletions
diff --git a/cpukit/posix/src/semdestroy.c b/cpukit/posix/src/semdestroy.c index fc73a93ada..8f3d41cfa8 100644 --- a/cpukit/posix/src/semdestroy.c +++ b/cpukit/posix/src/semdestroy.c @@ -42,39 +42,11 @@ int sem_destroy( */ if ( the_semaphore->named == TRUE ) { + _Thread_Enable_dispatch(); set_errno_and_return_minus_one( EINVAL ); } - _Objects_Close( &_POSIX_Semaphore_Information, &the_semaphore->Object ); - - _CORE_semaphore_Flush( - &the_semaphore->Semaphore, -#if defined(RTEMS_MULTIPROCESSING) - _POSIX_Semaphore_MP_Send_object_was_deleted, -#else - NULL, -#endif - -1 /* XXX should also seterrno -> EINVAL */ - ); - - _POSIX_Semaphore_Free( the_semaphore ); - -#if defined(RTEMS_MULTIPROCESSING) - if ( the_semaphore->process_shared == PTHREAD_PROCESS_SHARED ) { - - _Objects_MP_Close( - &_POSIX_Semaphore_Information, - the_semaphore->Object.id - ); - - _POSIX_Semaphore_MP_Send_process_packet( - POSIX_SEMAPHORE_MP_ANNOUNCE_DELETE, - the_semaphore->Object.id, - 0, /* Not used */ - 0 /* Not used */ - ); - } -#endif + _POSIX_Semaphore_Delete( the_semaphore ); _Thread_Enable_dispatch(); return 0; } |