score: Add _Scheduler_Change_priority_if_higher()

Add _Scheduler_Set_priority_if_higher().
This commit is contained in:
Sebastian Huber
2014-03-28 09:24:28 +01:00
parent 298d0fda9d
commit c2225d7356
2 changed files with 38 additions and 9 deletions

View File

@@ -304,6 +304,39 @@ RTEMS_INLINE_ROUTINE Priority_Control _Scheduler_Highest_priority_of_two(
return _Scheduler_Is_priority_higher_than( p1, p2 ) ? p1 : p2;
}
/**
* @brief Sets the thread priority to @a priority if it is higher than the
* current priority of the thread in the intuitive sense of priority.
*/
RTEMS_INLINE_ROUTINE void _Scheduler_Set_priority_if_higher(
Thread_Control *the_thread,
Priority_Control priority
)
{
Priority_Control current = the_thread->current_priority;
if ( _Scheduler_Is_priority_higher_than( priority, current ) ) {
_Thread_Set_priority( the_thread, priority );
}
}
/**
* @brief Changes the thread priority to @a priority if it is higher than the
* current priority of the thread in the intuitive sense of priority.
*/
RTEMS_INLINE_ROUTINE void _Scheduler_Change_priority_if_higher(
Thread_Control *the_thread,
Priority_Control priority,
bool prepend_it
)
{
Priority_Control current = the_thread->current_priority;
if ( _Scheduler_Is_priority_higher_than( priority, current ) ) {
_Thread_Change_priority( the_thread, priority, prepend_it );
}
}
/** @} */
#ifdef __cplusplus

View File

@@ -53,15 +53,11 @@ void _CORE_mutex_Seize_interrupt_blocking(
{
if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) ) {
if ( _Scheduler_Is_priority_higher_than(
executing->current_priority,
the_mutex->holder->current_priority)) {
_Thread_Change_priority(
the_mutex->holder,
executing->current_priority,
false
);
}
_Scheduler_Change_priority_if_higher(
the_mutex->holder,
executing->current_priority,
false
);
}
the_mutex->blocked_count++;