From 8c25e0460631f899a5cd41d125efa7dcae84705c Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Wed, 2 Sep 2015 15:02:27 +0200 Subject: score: Optimize thread queue first operation In case the thread queue heads exist, then the queue is not empty. See _Thread_queue_First_locked(). --- cpukit/score/src/threadqops.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) (limited to 'cpukit') diff --git a/cpukit/score/src/threadqops.c b/cpukit/score/src/threadqops.c index c9e2b5d9ba..d9dc94440e 100644 --- a/cpukit/score/src/threadqops.c +++ b/cpukit/score/src/threadqops.c @@ -142,9 +142,12 @@ static Thread_Control *_Thread_queue_FIFO_first( ) { Chain_Control *fifo = &heads->Heads.Fifo; + Chain_Node *first; - return _Chain_Is_empty( fifo ) ? - NULL : THREAD_CHAIN_NODE_TO_THREAD( _Chain_First( fifo ) ); + _Assert( !_Chain_Is_empty( fifo ) ); + first = _Chain_First( fifo ); + + return THREAD_CHAIN_NODE_TO_THREAD( first ); } static void _Thread_queue_Priority_priority_change( @@ -229,11 +232,13 @@ static Thread_Control *_Thread_queue_Priority_first( Thread_queue_Heads *heads ) { - RBTree_Node *first; + RBTree_Control *priority_queue = &heads->Heads.Priority; + RBTree_Node *first; - first = _RBTree_Minimum( &heads->Heads.Priority ); + _Assert( !_RBTree_Is_empty( priority_queue ) ); + first = _RBTree_Minimum( priority_queue ); - return first != NULL ? THREAD_RBTREE_NODE_TO_THREAD( first ) : NULL; + return THREAD_RBTREE_NODE_TO_THREAD( first ); } const Thread_queue_Operations _Thread_queue_Operations_default = { -- cgit v1.2.3