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_queue_Context_clear_priority_updates( &queue_context );
_Thread_Wait_acquire( the_thread, &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( _Thread_Priority_add(
the_thread, the_thread,
&the_thread->Real_priority, &the_thread->Real_priority,
@@ -359,7 +359,6 @@ void _POSIX_Threads_Sporadic_timer( Watchdog_Control *watchdog )
&api->Sporadic.Low_priority, &api->Sporadic.Low_priority,
&queue_context &queue_context
); );
_Priority_Node_set_inactive( &api->Sporadic.Low_priority );
} }
_Watchdog_Per_CPU_remove_ticks( &api->Sporadic.Timer ); _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; 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( _Thread_Priority_add(
the_thread, the_thread,
&api->Sporadic.Low_priority, &api->Sporadic.Low_priority,
@@ -399,6 +398,7 @@ static void _POSIX_Threads_Sporadic_budget_callout(
&the_thread->Real_priority, &the_thread->Real_priority,
&queue_context &queue_context
); );
_Priority_Node_set_inactive( &the_thread->Real_priority );
} }
_Thread_Wait_release( the_thread, &queue_context ); _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 ); _Priority_Node_set_priority( &the_thread->Real_priority, core_normal_prio );
#if defined(RTEMS_POSIX_API) #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( _Thread_Priority_add(
the_thread, the_thread,
&the_thread->Real_priority, &the_thread->Real_priority,
@@ -109,7 +109,6 @@ static int _POSIX_Set_sched_param(
&api->Sporadic.Low_priority, &api->Sporadic.Low_priority,
queue_context queue_context
); );
_Priority_Node_set_inactive( &api->Sporadic.Low_priority );
} else { } else {
#endif #endif
_Thread_Priority_changed( _Thread_Priority_changed(