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;
|
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
|
#ifdef __cplusplus
|
||||||
|
|||||||
@@ -53,15 +53,11 @@ void _CORE_mutex_Seize_interrupt_blocking(
|
|||||||
{
|
{
|
||||||
|
|
||||||
if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) ) {
|
if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) ) {
|
||||||
if ( _Scheduler_Is_priority_higher_than(
|
_Scheduler_Change_priority_if_higher(
|
||||||
executing->current_priority,
|
the_mutex->holder,
|
||||||
the_mutex->holder->current_priority)) {
|
executing->current_priority,
|
||||||
_Thread_Change_priority(
|
false
|
||||||
the_mutex->holder,
|
);
|
||||||
executing->current_priority,
|
|
||||||
false
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
the_mutex->blocked_count++;
|
the_mutex->blocked_count++;
|
||||||
|
|||||||
Reference in New Issue
Block a user