diff options
author | Jennifer Averett <Jennifer.Averett@OARcorp.com> | 1999-11-22 16:14:00 +0000 |
---|---|---|
committer | Jennifer Averett <Jennifer.Averett@OARcorp.com> | 1999-11-22 16:14:00 +0000 |
commit | 101e9b0af9993c6a856112cc221c9ad5fcf2fb36 (patch) | |
tree | ab2c6a6eeb90b6f426a461994ffa9a2efdc6b9ba /cpukit/posix/src | |
parent | + Corrected enable/disable of dispatch. (diff) | |
download | rtems-101e9b0af9993c6a856112cc221c9ad5fcf2fb36.tar.bz2 |
Fixed dispatching and cleaned up code.
Diffstat (limited to 'cpukit/posix/src')
-rw-r--r-- | cpukit/posix/src/semaphoredeletesupp.c | 12 | ||||
-rw-r--r-- | cpukit/posix/src/semdestroy.c | 32 |
2 files changed, 14 insertions, 30 deletions
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; } |