From 15b5678dcd72a11909a54b63ddc8e57869d63244 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Mon, 1 Aug 2016 11:03:16 +0200 Subject: score: Move thread wait node to scheduler node Update #2556. --- cpukit/score/src/threadqflush.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'cpukit/score/src/threadqflush.c') diff --git a/cpukit/score/src/threadqflush.c b/cpukit/score/src/threadqflush.c index 835858dd5a..fb1323073d 100644 --- a/cpukit/score/src/threadqflush.c +++ b/cpukit/score/src/threadqflush.c @@ -19,6 +19,7 @@ #endif #include +#include #include Thread_Control *_Thread_queue_Flush_default_filter( @@ -96,7 +97,10 @@ size_t _Thread_queue_Flush_critical( queue_context ); if ( do_unblock ) { - _Chain_Append_unprotected( &unblock, &first->Wait.Node.Chain ); + Scheduler_Node *scheduler_node; + + scheduler_node = _Scheduler_Thread_get_own_node( first ); + _Chain_Append_unprotected( &unblock, &scheduler_node->Wait.Node.Chain ); } ++flushed; @@ -114,11 +118,13 @@ size_t _Thread_queue_Flush_critical( _Thread_queue_Queue_release( queue, &queue_context->Lock_context.Lock_context ); do { + Scheduler_Node *scheduler_node; Thread_Control *the_thread; Chain_Node *next; next = _Chain_Next( node ); - the_thread = THREAD_CHAIN_NODE_TO_THREAD( node ); + scheduler_node = SCHEDULER_NODE_OF_WAIT_CHAIN_NODE( node ); + the_thread = _Scheduler_Node_get_owner( scheduler_node ); _Thread_Remove_timer_and_unblock( the_thread, queue ); node = next; -- cgit v1.2.3