From 5b6c290ed0fae8f9afd343c891e6d3650ef22492 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Thu, 1 Dec 2016 20:42:48 +0100 Subject: score: Initialize thread queue context early Initialize thread queue context early preferably outside the critical section. Remove implicit _Thread_queue_Context_initialize() from _Thread_Wait_acquire(). --- cpukit/score/src/threadrestart.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'cpukit/score/src/threadrestart.c') diff --git a/cpukit/score/src/threadrestart.c b/cpukit/score/src/threadrestart.c index ac1427b090..54491d86f2 100644 --- a/cpukit/score/src/threadrestart.c +++ b/cpukit/score/src/threadrestart.c @@ -57,8 +57,9 @@ static void _Thread_Raise_real_priority( { Thread_queue_Context queue_context; - _Thread_Wait_acquire( the_thread, &queue_context ); + _Thread_queue_Context_initialize( &queue_context ); _Thread_queue_Context_clear_priority_updates( &queue_context ); + _Thread_Wait_acquire( the_thread, &queue_context ); if ( priority < the_thread->Real_priority.priority ) { _Thread_Priority_change( @@ -637,6 +638,8 @@ void _Thread_Restart_self( || executing->current_state == STATES_SUSPENDED ); + _Thread_queue_Context_initialize( &queue_context ); + _Thread_queue_Context_clear_priority_updates( &queue_context ); _Thread_State_acquire_critical( executing, lock_context ); executing->Start.Entry = *entry; @@ -650,7 +653,6 @@ void _Thread_Restart_self( cpu_self = _Thread_Dispatch_disable_critical( lock_context ); _Thread_State_release( executing, lock_context ); - _Thread_queue_Context_clear_priority_updates( &queue_context ); _Thread_Wait_acquire_default( executing, lock_context ); _Thread_Priority_change( executing, -- cgit v1.2.3