summaryrefslogtreecommitdiffstats
path: root/cpukit/score/src/threadqextractpriority.c
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@oarcorp.com>2014-07-15 12:37:36 -0500
committerJoel Sherrill <joel.sherrill@oarcorp.com>2014-07-15 13:42:30 -0500
commit32506647001a815e3c0daf25757d386104a07184 (patch)
tree8ab18c675b7617011d405e915e00d455d18ea334 /cpukit/score/src/threadqextractpriority.c
parentThread Queue Priority Discipline Reimplemented with RBTree (diff)
downloadrtems-32506647001a815e3c0daf25757d386104a07184.tar.bz2
Thread Queue: Merge discipline subroutines into main methods
There was a lot of duplication between the discipline subroutines. With the transition to RBTrees for priority discipline, there were only a few lines of source code manipulating the data structure for FIFO and priority. Thus is made sense to fold these back into the main methods. As part of doing this all of the tests for discipline were changed to be in the same order.
Diffstat (limited to 'cpukit/score/src/threadqextractpriority.c')
-rw-r--r--cpukit/score/src/threadqextractpriority.c73
1 files changed, 0 insertions, 73 deletions
diff --git a/cpukit/score/src/threadqextractpriority.c b/cpukit/score/src/threadqextractpriority.c
deleted file mode 100644
index dc793b3cb5..0000000000
--- a/cpukit/score/src/threadqextractpriority.c
+++ /dev/null
@@ -1,73 +0,0 @@
-/**
- * @file
- *
- * @brief Thread queue Extract priority Helper
- * @ingroup ScoreThreadQ
- */
-
-/*
- * COPYRIGHT (c) 1989-2014.
- * On-Line Applications Research Corporation (OAR).
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.org/license/LICENSE.
- */
-
-#if HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <rtems/score/threadqimpl.h>
-#include <rtems/score/rbtreeimpl.h>
-#include <rtems/score/isrlevel.h>
-#include <rtems/score/threadimpl.h>
-#include <rtems/score/watchdogimpl.h>
-
-void _Thread_queue_Extract_priority_helper(
- Thread_Control *the_thread,
- uint32_t return_code,
- bool requeuing
-)
-{
- ISR_Level level;
-
- _ISR_Disable( level );
- if ( !_States_Is_waiting_on_thread_queue( the_thread->current_state ) ) {
- _ISR_Enable( level );
- return;
- }
-
- /*
- * The thread was actually waiting on a thread queue so let's remove it.
- */
- _RBTree_Extract(
- &the_thread->Wait.queue->Queues.Priority,
- &the_thread->RBNode
- );
-
- /*
- * If we are not supposed to touch timers or the thread's state, return.
- */
- if ( requeuing ) {
- _ISR_Enable( level );
- return;
- }
-
- the_thread->Wait.queue = NULL;
- the_thread->Wait.return_code = return_code;
-
- if ( !_Watchdog_Is_active( &the_thread->Timer ) ) {
- _ISR_Enable( level );
- } else {
- _Watchdog_Deactivate( &the_thread->Timer );
- _ISR_Enable( level );
- (void) _Watchdog_Remove( &the_thread->Timer );
- }
- _Thread_Unblock( the_thread );
-
-#if defined(RTEMS_MULTIPROCESSING)
- if ( !_Objects_Is_local_id( the_thread->Object.id ) )
- _Thread_MP_Free_proxy( the_thread );
-#endif
-}