diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2016-08-01 11:03:16 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2016-09-08 09:55:27 +0200 |
commit | 15b5678dcd72a11909a54b63ddc8e57869d63244 (patch) | |
tree | 52c2f9c120d1e7fefc954837e32f7b1038d052ab /cpukit/score/src/threadqflush.c | |
parent | score: Move scheduler node to own header file (diff) | |
download | rtems-15b5678dcd72a11909a54b63ddc8e57869d63244.tar.bz2 |
score: Move thread wait node to scheduler node
Update #2556.
Diffstat (limited to 'cpukit/score/src/threadqflush.c')
-rw-r--r-- | cpukit/score/src/threadqflush.c | 10 |
1 files changed, 8 insertions, 2 deletions
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 <rtems/score/threadimpl.h> +#include <rtems/score/schedulerimpl.h> #include <rtems/score/status.h> 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; |