mirror of
https://gitlab.rtems.org/rtems/rtos/rtems.git
synced 2025-12-25 22:07:15 +00:00
Fixed dispatching and cleaned up code.
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user