diff options
author | Joel Sherrill <joel.sherrill@oarcorp.com> | 2014-07-15 12:37:36 -0500 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@oarcorp.com> | 2014-07-15 13:42:30 -0500 |
commit | 32506647001a815e3c0daf25757d386104a07184 (patch) | |
tree | 8ab18c675b7617011d405e915e00d455d18ea334 /cpukit/score/src/threadchangepriority.c | |
parent | Thread Queue Priority Discipline Reimplemented with RBTree (diff) | |
download | rtems-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/threadchangepriority.c')
-rw-r--r-- | cpukit/score/src/threadchangepriority.c | 49 |
1 files changed, 1 insertions, 48 deletions
diff --git a/cpukit/score/src/threadchangepriority.c b/cpukit/score/src/threadchangepriority.c index 8ddaa0bdc7..ca2c5871af 100644 --- a/cpukit/score/src/threadchangepriority.c +++ b/cpukit/score/src/threadchangepriority.c @@ -7,7 +7,7 @@ */ /* - * COPYRIGHT (c) 1989-2011. + * COPYRIGHT (c) 1989-2014. * On-Line Applications Research Corporation (OAR). * * The license and distribution terms for this file may be @@ -23,53 +23,6 @@ #include <rtems/score/schedulerimpl.h> #include <rtems/score/threadqimpl.h> -/** - * @brief Invoked when a thread changes priority and is blocked. - * - * This routine is invoked when a thread changes priority and is - * blocked on a thread queue. If the queue is priority ordered, - * the_thread is removed from the_thread_queue and reinserted using - * its new priority. This method has no impact on the state of the_thread - * or of any timeouts associated with this blocking. - * - * @param[in] the_thread_queue pointer to a threadq header - * @param[in] the_thread pointer to a thread control block - */ -static void _Thread_queue_Requeue( - Thread_queue_Control *the_thread_queue, - Thread_Control *the_thread -) -{ - /* - * Just in case the thread really wasn't blocked on a thread queue - * when we get here. - */ - if ( !the_thread_queue ) - return; - - /* - * If queueing by FIFO, there is nothing to do. This only applies to - * priority blocking discipline. - */ - if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) { - Thread_queue_Control *tq = the_thread_queue; - ISR_Level level; - ISR_Level level_ignored; - - _ISR_Disable( level ); - if ( _States_Is_waiting_on_thread_queue( the_thread->current_state ) ) { - _Thread_queue_Enter_critical_section( tq ); - _Thread_queue_Extract_priority_helper( - the_thread, - the_thread->Wait.return_code, - true - ); - (void) _Thread_queue_Enqueue_priority( tq, the_thread, &level_ignored ); - } - _ISR_Enable( level ); - } -} - void _Thread_Change_priority( Thread_Control *the_thread, Priority_Control new_priority, |