From 101e9b0af9993c6a856112cc221c9ad5fcf2fb36 Mon Sep 17 00:00:00 2001 From: Jennifer Averett Date: Mon, 22 Nov 1999 16:14:00 +0000 Subject: Fixed dispatching and cleaned up code. --- c/src/exec/posix/src/semaphoredeletesupp.c | 12 +++++++++++ c/src/exec/posix/src/semdestroy.c | 32 ++---------------------------- cpukit/posix/src/semaphoredeletesupp.c | 12 +++++++++++ cpukit/posix/src/semdestroy.c | 32 ++---------------------------- 4 files changed, 28 insertions(+), 60 deletions(-) diff --git a/c/src/exec/posix/src/semaphoredeletesupp.c b/c/src/exec/posix/src/semaphoredeletesupp.c index 04f0d1ad93..9e136b7f37 100644 --- a/c/src/exec/posix/src/semaphoredeletesupp.c +++ b/c/src/exec/posix/src/semaphoredeletesupp.c @@ -26,6 +26,18 @@ void _POSIX_Semaphore_Delete( ) { if ( !the_semaphore->linked && !the_semaphore->open_count ) { + _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) diff --git a/c/src/exec/posix/src/semdestroy.c b/c/src/exec/posix/src/semdestroy.c index fc73a93ada..8f3d41cfa8 100644 --- a/c/src/exec/posix/src/semdestroy.c +++ b/c/src/exec/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; } diff --git a/cpukit/posix/src/semaphoredeletesupp.c b/cpukit/posix/src/semaphoredeletesupp.c index 04f0d1ad93..9e136b7f37 100644 --- a/cpukit/posix/src/semaphoredeletesupp.c +++ b/cpukit/posix/src/semaphoredeletesupp.c @@ -26,6 +26,18 @@ void _POSIX_Semaphore_Delete( ) { if ( !the_semaphore->linked && !the_semaphore->open_count ) { + _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) 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; } -- cgit v1.2.3