[rtems commit] score: Pass scheduler nodes to processor allocator
Sebastian Huber
sebh at rtems.org
Mon Jul 10 07:39:22 UTC 2017
Module: rtems
Branch: master
Commit: d19dc071a206789498629747bdf7e433cd05f42c
Changeset: http://git.rtems.org/rtems/commit/?id=d19dc071a206789498629747bdf7e433cd05f42c
Author: Sebastian Huber <sebastian.huber at embedded-brains.de>
Date: Fri Jul 7 09:40:06 2017 +0200
score: Pass scheduler nodes to processor allocator
This allows scheduler implementations to easily access
scheduler-specific data.
Update #3059.
---
.../score/include/rtems/score/schedulersmpimpl.h | 32 ++++++++++------------
1 file changed, 14 insertions(+), 18 deletions(-)
diff --git a/cpukit/score/include/rtems/score/schedulersmpimpl.h b/cpukit/score/include/rtems/score/schedulersmpimpl.h
index b90c359..620a42f 100644
--- a/cpukit/score/include/rtems/score/schedulersmpimpl.h
+++ b/cpukit/score/include/rtems/score/schedulersmpimpl.h
@@ -324,8 +324,8 @@ typedef bool ( *Scheduler_SMP_Enqueue )(
typedef void ( *Scheduler_SMP_Allocate_processor )(
Scheduler_Context *context,
- Thread_Control *scheduled_thread,
- Thread_Control *victim_thread,
+ Scheduler_Node *scheduled,
+ Scheduler_Node *victim,
Per_CPU_Control *victim_cpu
);
@@ -476,11 +476,13 @@ static inline void _Scheduler_SMP_Exctract_idle_thread(
static inline void _Scheduler_SMP_Allocate_processor_lazy(
Scheduler_Context *context,
- Thread_Control *scheduled_thread,
- Thread_Control *victim_thread,
+ Scheduler_Node *scheduled,
+ Scheduler_Node *victim,
Per_CPU_Control *victim_cpu
)
{
+ Thread_Control *scheduled_thread = _Scheduler_Node_get_user( scheduled );
+ Thread_Control *victim_thread = _Scheduler_Node_get_user( victim );
Per_CPU_Control *scheduled_cpu = _Thread_Get_CPU( scheduled_thread );
Per_CPU_Control *cpu_self = _Per_CPU_Get();
Thread_Control *heir;
@@ -517,14 +519,16 @@ static inline void _Scheduler_SMP_Allocate_processor_lazy(
*/
static inline void _Scheduler_SMP_Allocate_processor_exact(
Scheduler_Context *context,
- Thread_Control *scheduled_thread,
- Thread_Control *victim_thread,
+ Scheduler_Node *scheduled,
+ Scheduler_Node *victim,
Per_CPU_Control *victim_cpu
)
{
+ Thread_Control *scheduled_thread = _Scheduler_Node_get_user( scheduled );
Per_CPU_Control *cpu_self = _Per_CPU_Get();
(void) context;
+ (void) victim;
_Thread_Set_CPU( scheduled_thread, victim_cpu );
_Thread_Dispatch_update_heir( cpu_self, victim_cpu, scheduled_thread );
@@ -533,21 +537,13 @@ static inline void _Scheduler_SMP_Allocate_processor_exact(
static inline void _Scheduler_SMP_Allocate_processor(
Scheduler_Context *context,
Scheduler_Node *scheduled,
- Thread_Control *victim_thread,
+ Scheduler_Node *victim,
Per_CPU_Control *victim_cpu,
Scheduler_SMP_Allocate_processor allocate_processor
)
{
- Thread_Control *scheduled_thread = _Scheduler_Node_get_user( scheduled );
-
_Scheduler_SMP_Node_change_state( scheduled, SCHEDULER_SMP_NODE_SCHEDULED );
-
- ( *allocate_processor )(
- context,
- scheduled_thread,
- victim_thread,
- victim_cpu
- );
+ ( *allocate_processor )( context, scheduled, victim, victim_cpu );
}
static inline Thread_Control *_Scheduler_SMP_Preempt(
@@ -586,7 +582,7 @@ static inline Thread_Control *_Scheduler_SMP_Preempt(
_Scheduler_SMP_Allocate_processor(
context,
scheduled,
- victim_thread,
+ victim,
victim_cpu,
allocate_processor
);
@@ -888,7 +884,7 @@ static inline void _Scheduler_SMP_Schedule_highest_ready(
_Scheduler_SMP_Allocate_processor(
context,
highest_ready,
- _Scheduler_Node_get_user( victim ),
+ victim,
victim_cpu,
allocate_processor
);
More information about the vc
mailing list