score: More robust _SMP_Multicast_action()

If the caller already disabled interrupts, then do not disable thread
dispatching.  Calling _SMP_Multicast_action() with interrupts disabled
is a questionable use case.
This commit is contained in:
Sebastian Huber
2019-04-12 11:13:32 +02:00
parent 5cc313bf08
commit ef9d20f691
3 changed files with 13 additions and 9 deletions

View File

@@ -126,15 +126,12 @@ static void call_tests_isr_disabled( SMP_barrier_State *bs )
broadcast_test_init();
for (i = 0; i < RTEMS_ARRAY_SIZE( test_cases ); ++i) {
Per_CPU_Control *cpu_self;
ISR_Level isr_level;
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 );
}

View File

@@ -59,14 +59,11 @@ 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(