summaryrefslogtreecommitdiffstats
path: root/cpukit/score
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2018-09-03 09:31:19 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2018-09-03 09:37:31 +0200
commit3aad9d9b08950f132e5fb285ef8e9cda2d1b3844 (patch)
treef8de36da9699904afb62250069bc1ffd56839157 /cpukit/score
parentbsps: BSP_INTERRUPT_STACK_AT_WORK_AREA_BEGIN (diff)
downloadrtems-3aad9d9b08950f132e5fb285ef8e9cda2d1b3844.tar.bz2
score: Generalize SMP scheduler block support
Add extract from scheduled function to the _Scheduler_SMP_Block() operation. This allows a scheduler implementation to do extra work in case a scheduled node is blocked.
Diffstat (limited to 'cpukit/score')
-rw-r--r--cpukit/score/src/scheduleredfsmp.c3
-rw-r--r--cpukit/score/src/schedulerpriorityaffinitysmp.c1
-rw-r--r--cpukit/score/src/schedulerprioritysmp.c1
-rw-r--r--cpukit/score/src/schedulersimplesmp.c1
-rw-r--r--cpukit/score/src/schedulerstrongapa.c1
5 files changed, 6 insertions, 1 deletions
diff --git a/cpukit/score/src/scheduleredfsmp.c b/cpukit/score/src/scheduleredfsmp.c
index 0980a336cc..66e9a8ef36 100644
--- a/cpukit/score/src/scheduleredfsmp.c
+++ b/cpukit/score/src/scheduleredfsmp.c
@@ -311,7 +311,7 @@ static inline void _Scheduler_EDF_SMP_Move_from_scheduled_to_ready(
{
Priority_Control insert_priority;
- _Chain_Extract_unprotected( &scheduled_to_ready->Node.Chain );
+ _Scheduler_SMP_Extract_from_scheduled( context, scheduled_to_ready );
insert_priority = _Scheduler_SMP_Node_priority( scheduled_to_ready );
_Scheduler_EDF_SMP_Insert_ready(
context,
@@ -403,6 +403,7 @@ void _Scheduler_EDF_SMP_Block(
context,
thread,
node,
+ _Scheduler_SMP_Extract_from_scheduled,
_Scheduler_EDF_SMP_Extract_from_ready,
_Scheduler_EDF_SMP_Get_highest_ready,
_Scheduler_EDF_SMP_Move_from_ready_to_scheduled,
diff --git a/cpukit/score/src/schedulerpriorityaffinitysmp.c b/cpukit/score/src/schedulerpriorityaffinitysmp.c
index 4808c84c3f..a82106566b 100644
--- a/cpukit/score/src/schedulerpriorityaffinitysmp.c
+++ b/cpukit/score/src/schedulerpriorityaffinitysmp.c
@@ -174,6 +174,7 @@ void _Scheduler_priority_affinity_SMP_Block(
context,
thread,
node,
+ _Scheduler_SMP_Extract_from_scheduled,
_Scheduler_priority_SMP_Extract_from_ready,
_Scheduler_priority_affinity_SMP_Get_highest_ready,
_Scheduler_priority_SMP_Move_from_ready_to_scheduled,
diff --git a/cpukit/score/src/schedulerprioritysmp.c b/cpukit/score/src/schedulerprioritysmp.c
index 205d3257ca..6479563eb0 100644
--- a/cpukit/score/src/schedulerprioritysmp.c
+++ b/cpukit/score/src/schedulerprioritysmp.c
@@ -102,6 +102,7 @@ void _Scheduler_priority_SMP_Block(
context,
thread,
node,
+ _Scheduler_SMP_Extract_from_scheduled,
_Scheduler_priority_SMP_Extract_from_ready,
_Scheduler_priority_SMP_Get_highest_ready,
_Scheduler_priority_SMP_Move_from_ready_to_scheduled,
diff --git a/cpukit/score/src/schedulersimplesmp.c b/cpukit/score/src/schedulersimplesmp.c
index 4ab4987c3a..e0f56ffe67 100644
--- a/cpukit/score/src/schedulersimplesmp.c
+++ b/cpukit/score/src/schedulersimplesmp.c
@@ -174,6 +174,7 @@ void _Scheduler_simple_SMP_Block(
context,
thread,
node,
+ _Scheduler_SMP_Extract_from_scheduled,
_Scheduler_simple_SMP_Extract_from_ready,
_Scheduler_simple_SMP_Get_highest_ready,
_Scheduler_simple_SMP_Move_from_ready_to_scheduled,
diff --git a/cpukit/score/src/schedulerstrongapa.c b/cpukit/score/src/schedulerstrongapa.c
index 19d4ebe348..865c11832e 100644
--- a/cpukit/score/src/schedulerstrongapa.c
+++ b/cpukit/score/src/schedulerstrongapa.c
@@ -234,6 +234,7 @@ void _Scheduler_strong_APA_Block(
context,
the_thread,
node,
+ _Scheduler_SMP_Extract_from_scheduled,
_Scheduler_strong_APA_Extract_from_ready,
_Scheduler_strong_APA_Get_highest_ready,
_Scheduler_strong_APA_Move_from_ready_to_scheduled,