smptests: Do not use Giant directly

This ensures that thread dispatching is disabled.  A Giant
acquire/release pair must take place in the same processor.
This commit is contained in:
Sebastian Huber
2015-02-26 10:26:49 +01:00
parent 396ce49604
commit 0324410836
2 changed files with 6 additions and 6 deletions

View File

@@ -95,14 +95,14 @@ static void standard_funcs_giant_taken_test( size_t set_size,
cpu_set_t *cpu_set, SMP_barrier_State *bs )
{
if ( rtems_get_current_processor() == 0)
_Giant_Acquire();
_Thread_Disable_dispatch();
_SMP_barrier_Wait( &ctx.barrier, bs, rtems_get_processor_count() );
cache_manager_smp_functions( set_size, cpu_set );
if ( rtems_get_current_processor() == 0)
_Giant_Release();
_Thread_Enable_dispatch();
}
static void test_func_test( size_t set_size, cpu_set_t *cpu_set,
@@ -145,7 +145,7 @@ static void test_func_giant_taken_test( size_t set_size, cpu_set_t *cpu_set,
ctx.count[rtems_get_current_processor()] = 0;
if ( rtems_get_current_processor() == 0)
_Giant_Acquire();
_Thread_Disable_dispatch();
_SMP_barrier_Wait( &ctx.barrier, bs, rtems_get_processor_count() );
@@ -157,7 +157,7 @@ static void test_func_giant_taken_test( size_t set_size, cpu_set_t *cpu_set,
rtems_get_processor_count() );
if ( rtems_get_current_processor() == 0)
_Giant_Release();
_Thread_Enable_dispatch();
}
static void cmlog( const char* str )

View File

@@ -42,7 +42,7 @@ static void acquire_giant_and_fatal_task(rtems_task_argument arg)
int i;
for (i = 0; i < 13; ++i) {
_Giant_Acquire();
_Thread_Disable_dispatch();
}
_SMP_barrier_Wait(&giant_barrier, &state, CPU_COUNT);
@@ -62,7 +62,7 @@ static void wait_for_giant(void)
_SMP_barrier_Wait(&giant_barrier, &state, CPU_COUNT);
_Giant_Acquire();
_Thread_Disable_dispatch();
}
static void Init(rtems_task_argument arg)