posix: Use real priority for sporadic server state

This allows to other areas to use the real priority node state.

Update #5168.
This commit is contained in:
Sebastian Huber
2024-11-26 04:30:39 +01:00
committed by Gedare Bloom
parent b2a0819175
commit 5d1041d897
2 changed files with 4 additions and 5 deletions

View File

@@ -348,7 +348,7 @@ void _POSIX_Threads_Sporadic_timer( Watchdog_Control *watchdog )
_Thread_queue_Context_clear_priority_updates( &queue_context );
_Thread_Wait_acquire( the_thread, &queue_context );
if ( _Priority_Node_is_active( &api->Sporadic.Low_priority ) ) {
if ( !_Priority_Node_is_active( &the_thread->Real_priority ) ) {
_Thread_Priority_add(
the_thread,
&the_thread->Real_priority,
@@ -359,7 +359,6 @@ void _POSIX_Threads_Sporadic_timer( Watchdog_Control *watchdog )
&api->Sporadic.Low_priority,
&queue_context
);
_Priority_Node_set_inactive( &api->Sporadic.Low_priority );
}
_Watchdog_Per_CPU_remove_ticks( &api->Sporadic.Timer );
@@ -388,7 +387,7 @@ static void _POSIX_Threads_Sporadic_budget_callout(
*/
the_thread->CPU_budget.available = UINT32_MAX;
if ( !_Priority_Node_is_active( &api->Sporadic.Low_priority ) ) {
if ( _Priority_Node_is_active( &the_thread->Real_priority ) ) {
_Thread_Priority_add(
the_thread,
&api->Sporadic.Low_priority,
@@ -399,6 +398,7 @@ static void _POSIX_Threads_Sporadic_budget_callout(
&the_thread->Real_priority,
&queue_context
);
_Priority_Node_set_inactive( &the_thread->Real_priority );
}
_Thread_Wait_release( the_thread, &queue_context );

View File

@@ -98,7 +98,7 @@ static int _POSIX_Set_sched_param(
_Priority_Node_set_priority( &the_thread->Real_priority, core_normal_prio );
#if defined(RTEMS_POSIX_API)
if ( _Priority_Node_is_active( &api->Sporadic.Low_priority ) ) {
if ( !_Priority_Node_is_active( &the_thread->Real_priority ) ) {
_Thread_Priority_add(
the_thread,
&the_thread->Real_priority,
@@ -109,7 +109,6 @@ static int _POSIX_Set_sched_param(
&api->Sporadic.Low_priority,
queue_context
);
_Priority_Node_set_inactive( &api->Sporadic.Low_priority );
} else {
#endif
_Thread_Priority_changed(