Atomically update the current priority of a thread and all related data
structures.
Close #2310.
---
cpukit/score/src/threadchangepriority.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/cpukit/score/src/threadchangepriority.c
b/cpukit/score/src/threadchangepriority.c
index d61dfb8..34a5a14 100644
--- a/cpukit/score/src/threadchangepriority.c
+++ b/cpukit/score/src/threadchangepriority.c
@@ -29,15 +29,15 @@ void _Thread_Change_priority(
bool prepend_it
)
{
+ ISR_Level level;
+
+ _ISR_Disable( level );
+
/*
* Do not bother recomputing all the priority related information if
* we are not REALLY changing priority.
*/
if ( the_thread->current_priority != new_priority ) {
- ISR_Level level;
-
- _ISR_Disable( level );
-
the_thread->current_priority = new_priority;
if ( _States_Is_ready( the_thread->current_state ) ) {
@@ -50,8 +50,8 @@ void _Thread_Change_priority(
_Scheduler_Update_priority( the_thread, new_priority );
}
- _ISR_Enable( level );
-
_Thread_queue_Requeue( the_thread->Wait.queue, the_thread );
}
+
+ _ISR_Enable( level );
}
--
2.1.4
_______________________________________________
devel mailing list
[email protected]
http://lists.rtems.org/mailman/listinfo/devel