----- Joel Sherrill <joel.sherr...@oarcorp.com> schrieb: > > > On 3/18/2015 3:20 PM, Sebastian Huber wrote: [...] > > diff --git a/cpukit/score/src/threadchangepriority.c > > b/cpukit/score/src/threadchangepriority.c > > index d61dfb8..6ee65f5 100644 > > --- a/cpukit/score/src/threadchangepriority.c > > +++ b/cpukit/score/src/threadchangepriority.c > > @@ -29,29 +29,36 @@ 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 ); > > + uint32_t my_generation = the_thread->priority_generation + 1; > > > > the_thread->current_priority = new_priority; > > + the_thread->priority_generation = my_generation; > > > > - if ( _States_Is_ready( the_thread->current_state ) ) { > > - _Scheduler_Change_priority( > > - the_thread, > > - new_priority, > > - prepend_it > > - ); > > - } else { > > - _Scheduler_Update_priority( the_thread, new_priority ); > > - } > > + _Thread_queue_Requeue( the_thread->Wait.queue, the_thread ); > Can we get a comment above this call that _Thread_queue_Requeue > checks that the thread is actually blocked on the specified queue so > we don't need to check the thread state?
I want to get rid of this _Thread_queue_Requeue() in a follow up patch. Things are getting much more compilicated on SMP since we now have to take the lock order into account to avoid deadlocks. _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel