summaryrefslogtreecommitdiffstats
path: root/testsuites/smptests
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2019-04-11 15:16:40 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2019-04-12 09:44:48 +0200
commite90486ab41a4edf045a6153675b6be9dcd422b71 (patch)
treeea0ad25fd9d9324ca02f9a26556d6cc5e2e9a592 /testsuites/smptests
parentscore: Use processor mask in _SMP_Multicast_action (diff)
downloadrtems-e90486ab41a4edf045a6153675b6be9dcd422b71.tar.bz2
score: Rework SMP multicast action
Use a FIFO list of jobs per processor to carry out the SMP multicast action. Use a done indicator per job to reduce the bus traffic a bit.
Diffstat (limited to '')
-rw-r--r--testsuites/smptests/smpcache01/init.c5
-rw-r--r--testsuites/smptests/smpmulticast01/init.c3
2 files changed, 7 insertions, 1 deletions
diff --git a/testsuites/smptests/smpcache01/init.c b/testsuites/smptests/smpcache01/init.c
index 878a015bf1..e9cee1eec5 100644
--- a/testsuites/smptests/smpcache01/init.c
+++ b/testsuites/smptests/smpcache01/init.c
@@ -126,12 +126,15 @@ static void call_tests_isr_disabled( SMP_barrier_State *bs )
broadcast_test_init();
for (i = 0; i < RTEMS_ARRAY_SIZE( test_cases ); ++i) {
- ISR_Level isr_level;
+ Per_CPU_Control *cpu_self;
+ ISR_Level isr_level;
+ cpu_self = _Thread_Dispatch_disable();
_ISR_Local_disable( isr_level );
barrier( bs );
( *test_cases[ i ] )();
_ISR_Local_enable( isr_level );
+ _Thread_Dispatch_enable( cpu_self );
barrier( bs );
}
diff --git a/testsuites/smptests/smpmulticast01/init.c b/testsuites/smptests/smpmulticast01/init.c
index 2319582ab6..e599a78bde 100644
--- a/testsuites/smptests/smpmulticast01/init.c
+++ b/testsuites/smptests/smpmulticast01/init.c
@@ -59,11 +59,14 @@ static void multicast_action_irq_disabled(
void *arg
)
{
+ Per_CPU_Control *cpu_self;
rtems_interrupt_level level;
+ cpu_self = _Thread_Dispatch_disable();
rtems_interrupt_local_disable(level);
_SMP_Multicast_action(targets, handler, arg);
rtems_interrupt_local_enable(level);
+ _Thread_Dispatch_enable(cpu_self);
}
static void multicast_action_dispatch_disabled(