forked from Imagelibrary/rtems
score: Add _Scheduler_Change_priority_if_higher()
Add _Scheduler_Set_priority_if_higher().
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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++;
|
||||
|
||||
Reference in New Issue
Block a user