[PATCH 2/2] score: Rename _Scheduler_Update()
Gedare Bloom
gedare at rtems.org
Tue Jun 3 15:13:13 UTC 2014
Both patches look good to me.
On Tue, Jun 3, 2014 at 10:31 AM, Sebastian Huber
<sebastian.huber at embedded-brains.de> wrote:
> Rename _Scheduler_Update() to _Scheduler_Update_priority(). Add
> parameter for the new thread priority to avoid direct usage of
> Thread_Control::current_priority in the scheduler operation.
> ---
> cpukit/score/include/rtems/score/scheduler.h | 14 ++++++++++----
> cpukit/score/include/rtems/score/schedulercbs.h | 2 +-
> cpukit/score/include/rtems/score/scheduleredf.h | 7 ++++---
> cpukit/score/include/rtems/score/schedulerimpl.h | 20 +++++++++++++++-----
> .../score/include/rtems/score/schedulerpriority.h | 15 ++++++---------
> .../rtems/score/schedulerpriorityaffinitysmp.h | 2 +-
> .../include/rtems/score/schedulerprioritysmp.h | 7 ++++---
> cpukit/score/include/rtems/score/schedulersimple.h | 2 +-
> .../score/include/rtems/score/schedulersimplesmp.h | 2 +-
> cpukit/score/src/schedulerdefaultupdate.c | 10 ++++++----
> cpukit/score/src/scheduleredfupdate.c | 6 ++++--
> cpukit/score/src/schedulerprioritysmp.c | 7 ++++---
> cpukit/score/src/schedulerpriorityupdate.c | 7 ++++---
> cpukit/score/src/threadchangepriority.c | 2 +-
> cpukit/score/src/threadsetpriority.c | 6 +++++-
> 15 files changed, 67 insertions(+), 42 deletions(-)
>
> diff --git a/cpukit/score/include/rtems/score/scheduler.h b/cpukit/score/include/rtems/score/scheduler.h
> index 7ca2133..542e4ae 100644
> --- a/cpukit/score/include/rtems/score/scheduler.h
> +++ b/cpukit/score/include/rtems/score/scheduler.h
> @@ -77,8 +77,12 @@ typedef struct {
> /** @see _Scheduler_Node_destroy() */
> void ( *node_destroy )( const Scheduler_Control *, Thread_Control * );
>
> - /** @see _Scheduler_Update() */
> - void ( *update )( const Scheduler_Control *, Thread_Control * );
> + /** @see _Scheduler_Update_priority() */
> + void ( *update_priority )(
> + const Scheduler_Control *,
> + Thread_Control *,
> + Priority_Control
> + );
>
> /** @see _Scheduler_Priority_compare() */
> int ( *priority_compare )(
> @@ -277,10 +281,12 @@ void _Scheduler_default_Node_destroy(
> *
> * @param[in] scheduler Unused.
> * @param[in] the_thread Unused.
> + * @param[in] new_priority Unused.
> */
> -void _Scheduler_default_Update(
> +void _Scheduler_default_Update_priority(
> const Scheduler_Control *scheduler,
> - Thread_Control *the_thread
> + Thread_Control *the_thread,
> + Priority_Control new_priority
> );
>
> /**
> diff --git a/cpukit/score/include/rtems/score/schedulercbs.h b/cpukit/score/include/rtems/score/schedulercbs.h
> index 23e528d..473d6fe 100644
> --- a/cpukit/score/include/rtems/score/schedulercbs.h
> +++ b/cpukit/score/include/rtems/score/schedulercbs.h
> @@ -55,7 +55,7 @@ extern "C" {
> _Scheduler_EDF_Change_priority, /* change priority entry point */ \
> _Scheduler_CBS_Node_initialize, /* node initialize entry point */ \
> _Scheduler_default_Node_destroy, /* node destroy entry point */ \
> - _Scheduler_EDF_Update, /* update entry point */ \
> + _Scheduler_EDF_Update_priority, /* update priority entry point */ \
> _Scheduler_EDF_Priority_compare, /* compares two priorities */ \
> _Scheduler_CBS_Release_job, /* new period of task */ \
> _Scheduler_default_Tick, /* tick entry point */ \
> diff --git a/cpukit/score/include/rtems/score/scheduleredf.h b/cpukit/score/include/rtems/score/scheduleredf.h
> index a7ed88d..7a20b5b 100644
> --- a/cpukit/score/include/rtems/score/scheduleredf.h
> +++ b/cpukit/score/include/rtems/score/scheduleredf.h
> @@ -48,7 +48,7 @@ extern "C" {
> _Scheduler_EDF_Change_priority, /* change priority entry point */ \
> _Scheduler_EDF_Node_initialize, /* node initialize entry point */ \
> _Scheduler_default_Node_destroy, /* node destroy entry point */ \
> - _Scheduler_EDF_Update, /* update entry point */ \
> + _Scheduler_EDF_Update_priority, /* update priority entry point */ \
> _Scheduler_EDF_Priority_compare, /* compares two priorities */ \
> _Scheduler_EDF_Release_job, /* new period of task */ \
> _Scheduler_default_Tick, /* tick entry point */ \
> @@ -161,9 +161,10 @@ void _Scheduler_EDF_Node_initialize(
> * @param[in] the_thread will have its scheduler specific information
> * structure updated.
> */
> -void _Scheduler_EDF_Update(
> +void _Scheduler_EDF_Update_priority(
> const Scheduler_Control *scheduler,
> - Thread_Control *the_thread
> + Thread_Control *the_thread,
> + Priority_Control new_priority
> );
>
> /**
> diff --git a/cpukit/score/include/rtems/score/schedulerimpl.h b/cpukit/score/include/rtems/score/schedulerimpl.h
> index 5e7c928..1216f6c 100644
> --- a/cpukit/score/include/rtems/score/schedulerimpl.h
> +++ b/cpukit/score/include/rtems/score/schedulerimpl.h
> @@ -209,16 +209,22 @@ RTEMS_INLINE_ROUTINE void _Scheduler_Node_destroy(
> }
>
> /**
> - * @brief Scheduler update.
> + * @brief Updates the scheduler about a priority change of a not ready thread.
> *
> - * This routine updates @a the_thread->scheduler
> + * @param[in] the_thread The thread.
> + * @param[in] new_priority The new priority of the thread.
> */
> -RTEMS_INLINE_ROUTINE void _Scheduler_Update(
> +RTEMS_INLINE_ROUTINE void _Scheduler_Update_priority(
> const Scheduler_Control *scheduler,
> Thread_Control *the_thread
> + Priority_Control new_priority
> )
> {
> - ( *scheduler->Operations.update )( scheduler, the_thread );
> + ( *scheduler->Operations.update_priority )(
> + scheduler,
> + the_thread,
> + new_priority
> + );
> }
>
> /**
> @@ -367,7 +373,11 @@ RTEMS_INLINE_ROUTINE void _Scheduler_Set(
> _Scheduler_Node_destroy( current_scheduler, the_thread );
> the_thread->scheduler = scheduler;
> _Scheduler_Node_initialize( scheduler, the_thread );
> - _Scheduler_Update( scheduler, the_thread );
> + _Scheduler_Update_priority(
> + scheduler,
> + the_thread,
> + the_thread->current_priority
> + );
> _Thread_Clear_state( the_thread, STATES_MIGRATING );
> }
> #else
> diff --git a/cpukit/score/include/rtems/score/schedulerpriority.h b/cpukit/score/include/rtems/score/schedulerpriority.h
> index 3f18f54..2e4f3ab 100644
> --- a/cpukit/score/include/rtems/score/schedulerpriority.h
> +++ b/cpukit/score/include/rtems/score/schedulerpriority.h
> @@ -55,7 +55,7 @@ extern "C" {
> _Scheduler_priority_Change_priority, /* change priority entry point */ \
> _Scheduler_default_Node_initialize, /* node initialize entry point */ \
> _Scheduler_default_Node_destroy, /* node destroy entry point */ \
> - _Scheduler_priority_Update, /* update entry point */ \
> + _Scheduler_priority_Update_priority, /* update priority entry point */ \
> _Scheduler_priority_Priority_compare, /* compares two priorities */ \
> _Scheduler_default_Release_job, /* new period of task */ \
> _Scheduler_default_Tick, /* tick entry point */ \
> @@ -139,16 +139,13 @@ void _Scheduler_priority_Schedule(
> );
>
> /**
> - * @brief Update the scheduler priority.
> - * This routine updates @a the_thread->scheduler based on @a the_scheduler
> - * structures and thread state.
> - *
> - * @param[in] the_thread will have its scheduler specific information
> - * structure updated.
> + * @brief Updates the scheduler node to reflect the new priority of the
> + * thread.
> */
> -void _Scheduler_priority_Update(
> +void _Scheduler_priority_Update_priority(
> const Scheduler_Control *scheduler,
> - Thread_Control *the_thread
> + Thread_Control *the_thread,
> + Priority_Control new_priority
> );
>
> /**
> diff --git a/cpukit/score/include/rtems/score/schedulerpriorityaffinitysmp.h b/cpukit/score/include/rtems/score/schedulerpriorityaffinitysmp.h
> index ab35704..0ba8191 100644
> --- a/cpukit/score/include/rtems/score/schedulerpriorityaffinitysmp.h
> +++ b/cpukit/score/include/rtems/score/schedulerpriorityaffinitysmp.h
> @@ -57,7 +57,7 @@ extern "C" {
> _Scheduler_priority_SMP_Change_priority, \
> _Scheduler_priority_affinity_SMP_Node_initialize, \
> _Scheduler_default_Node_destroy, \
> - _Scheduler_priority_SMP_Update, \
> + _Scheduler_priority_SMP_Update_priority, \
> _Scheduler_priority_Priority_compare, \
> _Scheduler_default_Release_job, \
> _Scheduler_default_Tick, \
> diff --git a/cpukit/score/include/rtems/score/schedulerprioritysmp.h b/cpukit/score/include/rtems/score/schedulerprioritysmp.h
> index c17fcf4..cbb8a58 100644
> --- a/cpukit/score/include/rtems/score/schedulerprioritysmp.h
> +++ b/cpukit/score/include/rtems/score/schedulerprioritysmp.h
> @@ -86,7 +86,7 @@ typedef struct {
> _Scheduler_priority_SMP_Change_priority, \
> _Scheduler_priority_SMP_Node_initialize, \
> _Scheduler_default_Node_destroy, \
> - _Scheduler_priority_SMP_Update, \
> + _Scheduler_priority_SMP_Update_priority, \
> _Scheduler_priority_Priority_compare, \
> _Scheduler_default_Release_job, \
> _Scheduler_default_Tick, \
> @@ -119,9 +119,10 @@ void _Scheduler_priority_SMP_Change_priority(
> bool prepend_it
> );
>
> -void _Scheduler_priority_SMP_Update(
> +void _Scheduler_priority_SMP_Update_priority(
> const Scheduler_Control *scheduler,
> - Thread_Control *thread
> + Thread_Control *thread,
> + Priority_Control new_priority
> );
>
> void _Scheduler_priority_SMP_Yield(
> diff --git a/cpukit/score/include/rtems/score/schedulersimple.h b/cpukit/score/include/rtems/score/schedulersimple.h
> index 9fc2d31..68ed527 100644
> --- a/cpukit/score/include/rtems/score/schedulersimple.h
> +++ b/cpukit/score/include/rtems/score/schedulersimple.h
> @@ -45,7 +45,7 @@ extern "C" {
> _Scheduler_simple_Change_priority, /* change priority entry point */ \
> _Scheduler_default_Node_initialize, /* node initialize entry point */ \
> _Scheduler_default_Node_destroy, /* node destroy entry point */ \
> - _Scheduler_default_Update, /* update entry point */ \
> + _Scheduler_default_Update_priority, /* update priority entry point */ \
> _Scheduler_priority_Priority_compare, /* compares two priorities */ \
> _Scheduler_default_Release_job, /* new period of task */ \
> _Scheduler_default_Tick, /* tick entry point */ \
> diff --git a/cpukit/score/include/rtems/score/schedulersimplesmp.h b/cpukit/score/include/rtems/score/schedulersimplesmp.h
> index 6ab1dd2..c0195e0 100644
> --- a/cpukit/score/include/rtems/score/schedulersimplesmp.h
> +++ b/cpukit/score/include/rtems/score/schedulersimplesmp.h
> @@ -67,7 +67,7 @@ typedef struct {
> _Scheduler_simple_SMP_Change_priority, \
> _Scheduler_simple_SMP_Node_initialize, \
> _Scheduler_default_Node_destroy, \
> - _Scheduler_default_Update, \
> + _Scheduler_default_Update_priority, \
> _Scheduler_priority_Priority_compare, \
> _Scheduler_default_Release_job, \
> _Scheduler_default_Tick, \
> diff --git a/cpukit/score/src/schedulerdefaultupdate.c b/cpukit/score/src/schedulerdefaultupdate.c
> index 28d7e1d..fcdc838 100644
> --- a/cpukit/score/src/schedulerdefaultupdate.c
> +++ b/cpukit/score/src/schedulerdefaultupdate.c
> @@ -21,11 +21,13 @@
>
> #include <rtems/score/scheduler.h>
>
> -void _Scheduler_default_Update(
> +void _Scheduler_default_Update_priority(
> const Scheduler_Control *scheduler,
> - Thread_Control *the_thread
> + Thread_Control *the_thread,
> + Priority_Control new_priority
> )
> {
> - ( void ) scheduler;
> - ( void ) the_thread;
> + (void) scheduler;
> + (void) the_thread;
> + (void) new_priority;
> }
> diff --git a/cpukit/score/src/scheduleredfupdate.c b/cpukit/score/src/scheduleredfupdate.c
> index 99a3e0e..47e3a70 100644
> --- a/cpukit/score/src/scheduleredfupdate.c
> +++ b/cpukit/score/src/scheduleredfupdate.c
> @@ -20,14 +20,16 @@
>
> #include <rtems/score/scheduleredfimpl.h>
>
> -void _Scheduler_EDF_Update(
> +void _Scheduler_EDF_Update_priority(
> const Scheduler_Control *scheduler,
> - Thread_Control *the_thread
> + Thread_Control *the_thread,
> + Priority_Control new_priority
> )
> {
> Scheduler_EDF_Node *node = _Scheduler_EDF_Node_get( the_thread );
>
> (void) scheduler;
> + (void) new_priority;
>
> if (node->queue_state == SCHEDULER_EDF_QUEUE_STATE_NEVER_HAS_BEEN) {
> /* Shifts the priority to the region of background tasks. */
> diff --git a/cpukit/score/src/schedulerprioritysmp.c b/cpukit/score/src/schedulerprioritysmp.c
> index e0ed75c..7915ce6 100644
> --- a/cpukit/score/src/schedulerprioritysmp.c
> +++ b/cpukit/score/src/schedulerprioritysmp.c
> @@ -93,15 +93,16 @@ static void _Scheduler_priority_SMP_Do_update(
> );
> }
>
> -void _Scheduler_priority_SMP_Update(
> +void _Scheduler_priority_SMP_Update_priority(
> const Scheduler_Control *scheduler,
> - Thread_Control *thread
> + Thread_Control *thread,
> + Priority_Control new_priority
> )
> {
> Scheduler_Context *context = _Scheduler_Get_context( scheduler );
> Scheduler_Node *node = _Scheduler_Node_get( thread );
>
> - _Scheduler_priority_SMP_Do_update( context, node, thread->current_priority );
> + _Scheduler_priority_SMP_Do_update( context, node, new_priority );
> }
>
> static Thread_Control *_Scheduler_priority_SMP_Get_highest_ready(
> diff --git a/cpukit/score/src/schedulerpriorityupdate.c b/cpukit/score/src/schedulerpriorityupdate.c
> index e58a609..3f05439 100644
> --- a/cpukit/score/src/schedulerpriorityupdate.c
> +++ b/cpukit/score/src/schedulerpriorityupdate.c
> @@ -20,9 +20,10 @@
>
> #include <rtems/score/schedulerpriorityimpl.h>
>
> -void _Scheduler_priority_Update(
> +void _Scheduler_priority_Update_priority(
> const Scheduler_Control *scheduler,
> - Thread_Control *the_thread
> + Thread_Control *the_thread,
> + Priority_Control new_priority
> )
> {
> Scheduler_priority_Context *context =
> @@ -31,7 +32,7 @@ void _Scheduler_priority_Update(
>
> _Scheduler_priority_Ready_queue_update(
> &node->Ready_queue,
> - the_thread->current_priority,
> + new_priority,
> &context->Bit_map,
> &context->Ready[ 0 ]
> );
> diff --git a/cpukit/score/src/threadchangepriority.c b/cpukit/score/src/threadchangepriority.c
> index 8059ab1..8de6325 100644
> --- a/cpukit/score/src/threadchangepriority.c
> +++ b/cpukit/score/src/threadchangepriority.c
> @@ -106,7 +106,7 @@ void _Thread_Change_priority(
> scheduler = _Scheduler_Get( the_thread );
> _Scheduler_Schedule( scheduler, the_thread );
> } else {
> - _Scheduler_Update( scheduler, the_thread );
> + _Scheduler_Update_priority( the_thread, new_priority );
> }
> _ISR_Enable( level );
>
> diff --git a/cpukit/score/src/threadsetpriority.c b/cpukit/score/src/threadsetpriority.c
> index e128648..455cf20 100644
> --- a/cpukit/score/src/threadsetpriority.c
> +++ b/cpukit/score/src/threadsetpriority.c
> @@ -28,5 +28,9 @@ void _Thread_Set_priority(
> {
> the_thread->current_priority = new_priority;
>
> - _Scheduler_Update( _Scheduler_Get( the_thread ), the_thread );
> + _Scheduler_Update_priority(
> + _Scheduler_Get( the_thread),
> + the_thread,
> + new_priority
> + );
> }
> --
> 1.7.7
>
> _______________________________________________
> rtems-devel mailing list
> rtems-devel at rtems.org
> http://www.rtems.org/mailman/listinfo/rtems-devel
More information about the devel
mailing list