rtems_status_code rtems_extension_delete( rtems_id id ) { Extension_Control *the_extension; Objects_Locations location; the_extension = _Extension_Get( id, &location ); switch ( location ) { case OBJECTS_LOCAL: _User_extensions_Remove_set( &the_extension->Extension ); _Objects_Close( &_Extension_Information, &the_extension->Object ); _Extension_Free( the_extension ); _Thread_Enable_dispatch(); return RTEMS_SUCCESSFUL; #if defined(RTEMS_MULTIPROCESSING) case OBJECTS_REMOTE: /* should never return this */ #endif case OBJECTS_ERROR: break; } return RTEMS_INVALID_ID; }
rtems_status_code rtems_extension_delete( rtems_id id ) { rtems_status_code status; Extension_Control *the_extension; _Objects_Allocator_lock(); the_extension = _Extension_Get( id ); if ( the_extension != NULL ) { _Objects_Close( &_Extension_Information, &the_extension->Object ); _User_extensions_Remove_set( &the_extension->Extension ); _Extension_Free( the_extension ); status = RTEMS_SUCCESSFUL; } else { status = RTEMS_INVALID_ID; } _Objects_Allocator_unlock(); return status; }