summaryrefslogtreecommitdiffstats
path: root/cpukit/score/src/threadqflush.c
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2016-08-01 11:03:16 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2016-09-08 09:55:27 +0200
commit15b5678dcd72a11909a54b63ddc8e57869d63244 (patch)
tree52c2f9c120d1e7fefc954837e32f7b1038d052ab /cpukit/score/src/threadqflush.c
parentscore: Move scheduler node to own header file (diff)
downloadrtems-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.c10
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;