Fixed dispatching and cleaned up code.

This commit is contained in:
Jennifer Averett
1999-11-22 16:14:00 +00:00
parent cb3c171847
commit 101e9b0af9
4 changed files with 28 additions and 60 deletions

View File

@@ -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)

View File

@@ -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;
}