forked from Imagelibrary/rtems
score: Simplify _CORE_mutex_Seize_interrupt_try*
This commit is contained in:
@@ -281,7 +281,7 @@ CORE_mutex_Status _CORE_mutex_Initialize(
|
||||
* available.
|
||||
*
|
||||
* @param[in] the_mutex is the mutex to attempt to lock
|
||||
* @param[in] level_p is the interrupt level holder
|
||||
* @param[in] level is the interrupt level
|
||||
*
|
||||
* @retval This routine returns 0 if "trylock" can resolve whether or not
|
||||
* the mutex is immediately obtained or there was an error attempting to
|
||||
@@ -294,7 +294,7 @@ CORE_mutex_Status _CORE_mutex_Initialize(
|
||||
|
||||
RTEMS_INLINE_ROUTINE int _CORE_mutex_Seize_interrupt_trylock_body(
|
||||
CORE_mutex_Control *the_mutex,
|
||||
ISR_Level *level_p
|
||||
ISR_Level level
|
||||
);
|
||||
|
||||
#if defined(__RTEMS_DO_NOT_INLINE_CORE_MUTEX_SEIZE__)
|
||||
@@ -307,11 +307,11 @@ RTEMS_INLINE_ROUTINE int _CORE_mutex_Seize_interrupt_trylock_body(
|
||||
* which makes it harder to get full binary test coverage.
|
||||
*
|
||||
* @param[in] the_mutex will attempt to lock
|
||||
* @param[in] level_p is the interrupt level holder
|
||||
* @param[in] level_p is the interrupt level
|
||||
*/
|
||||
int _CORE_mutex_Seize_interrupt_trylock(
|
||||
CORE_mutex_Control *the_mutex,
|
||||
ISR_Level *level_p
|
||||
ISR_Level level
|
||||
);
|
||||
#else
|
||||
/**
|
||||
@@ -319,10 +319,10 @@ RTEMS_INLINE_ROUTINE int _CORE_mutex_Seize_interrupt_trylock_body(
|
||||
* a few instructions. This is very important for mutex performance.
|
||||
*
|
||||
* @param[in] _mutex will attempt to lock
|
||||
* @param[in] _level_p is the interrupt level holder
|
||||
* @param[in] _level is the interrupt level
|
||||
*/
|
||||
#define _CORE_mutex_Seize_interrupt_trylock( _mutex, _level_p ) \
|
||||
_CORE_mutex_Seize_interrupt_trylock_body( _mutex, _level_p )
|
||||
#define _CORE_mutex_Seize_interrupt_trylock( _mutex, _level ) \
|
||||
_CORE_mutex_Seize_interrupt_trylock_body( _mutex, _level )
|
||||
#endif
|
||||
|
||||
/**
|
||||
@@ -394,7 +394,7 @@ void _CORE_mutex_Seize_interrupt_blocking(
|
||||
INTERNAL_ERROR_MUTEX_OBTAIN_FROM_BAD_STATE \
|
||||
); \
|
||||
} \
|
||||
if ( _CORE_mutex_Seize_interrupt_trylock( _the_mutex, &(_level) ) ) { \
|
||||
if ( _CORE_mutex_Seize_interrupt_trylock( _the_mutex, _level ) ) { \
|
||||
if ( !(_wait) ) { \
|
||||
_ISR_Enable( _level ); \
|
||||
_Thread_Executing->Wait.return_code = \
|
||||
|
||||
@@ -130,7 +130,7 @@ RTEMS_INLINE_ROUTINE bool _CORE_mutex_Is_priority_ceiling(
|
||||
|
||||
RTEMS_INLINE_ROUTINE int _CORE_mutex_Seize_interrupt_trylock_body(
|
||||
CORE_mutex_Control *the_mutex,
|
||||
ISR_Level *level_p
|
||||
ISR_Level level
|
||||
)
|
||||
{
|
||||
Thread_Control *executing;
|
||||
@@ -157,7 +157,7 @@ RTEMS_INLINE_ROUTINE int _CORE_mutex_Seize_interrupt_trylock_body(
|
||||
}
|
||||
|
||||
if ( !_CORE_mutex_Is_priority_ceiling( &the_mutex->Attributes ) ) {
|
||||
_ISR_Enable( *level_p );
|
||||
_ISR_Enable( level );
|
||||
return 0;
|
||||
} /* else must be CORE_MUTEX_DISCIPLINES_PRIORITY_CEILING
|
||||
*
|
||||
@@ -171,13 +171,13 @@ RTEMS_INLINE_ROUTINE int _CORE_mutex_Seize_interrupt_trylock_body(
|
||||
ceiling = the_mutex->Attributes.priority_ceiling;
|
||||
current = executing->current_priority;
|
||||
if ( current == ceiling ) {
|
||||
_ISR_Enable( *level_p );
|
||||
_ISR_Enable( level );
|
||||
return 0;
|
||||
}
|
||||
|
||||
if ( current > ceiling ) {
|
||||
_Thread_Disable_dispatch();
|
||||
_ISR_Enable( *level_p );
|
||||
_ISR_Enable( level );
|
||||
_Thread_Change_priority(
|
||||
the_mutex->holder,
|
||||
the_mutex->Attributes.priority_ceiling,
|
||||
@@ -191,7 +191,7 @@ RTEMS_INLINE_ROUTINE int _CORE_mutex_Seize_interrupt_trylock_body(
|
||||
the_mutex->lock = CORE_MUTEX_UNLOCKED;
|
||||
the_mutex->nest_count = 0; /* undo locking above */
|
||||
executing->resource_count--; /* undo locking above */
|
||||
_ISR_Enable( *level_p );
|
||||
_ISR_Enable( level );
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
@@ -207,12 +207,12 @@ RTEMS_INLINE_ROUTINE int _CORE_mutex_Seize_interrupt_trylock_body(
|
||||
switch ( the_mutex->Attributes.lock_nesting_behavior ) {
|
||||
case CORE_MUTEX_NESTING_ACQUIRES:
|
||||
the_mutex->nest_count++;
|
||||
_ISR_Enable( *level_p );
|
||||
_ISR_Enable( level );
|
||||
return 0;
|
||||
#if defined(RTEMS_POSIX_API)
|
||||
case CORE_MUTEX_NESTING_IS_ERROR:
|
||||
executing->Wait.return_code = CORE_MUTEX_STATUS_NESTING_NOT_ALLOWED;
|
||||
_ISR_Enable( *level_p );
|
||||
_ISR_Enable( level );
|
||||
return 0;
|
||||
#endif
|
||||
case CORE_MUTEX_NESTING_BLOCKS:
|
||||
|
||||
@@ -28,9 +28,9 @@
|
||||
#if defined(__RTEMS_DO_NOT_INLINE_CORE_MUTEX_SEIZE__)
|
||||
int _CORE_mutex_Seize_interrupt_trylock(
|
||||
CORE_mutex_Control *the_mutex,
|
||||
ISR_Level *level_p
|
||||
ISR_Level level
|
||||
)
|
||||
{
|
||||
return _CORE_mutex_Seize_interrupt_trylock_body( the_mutex, level_p );
|
||||
return _CORE_mutex_Seize_interrupt_trylock_body( the_mutex, level );
|
||||
}
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user