summaryrefslogtreecommitdiffstats
path: root/testsuites/tmtests/tm26/task1.c
diff options
context:
space:
mode:
Diffstat (limited to 'testsuites/tmtests/tm26/task1.c')
-rw-r--r--testsuites/tmtests/tm26/task1.c36
1 files changed, 21 insertions, 15 deletions
diff --git a/testsuites/tmtests/tm26/task1.c b/testsuites/tmtests/tm26/task1.c
index 26785b2f84..fbe0d2f9e9 100644
--- a/testsuites/tmtests/tm26/task1.c
+++ b/testsuites/tmtests/tm26/task1.c
@@ -127,6 +127,24 @@ static void set_thread_executing( Thread_Control *thread )
#endif
}
+static void thread_disable_dispatch( void )
+{
+#if defined( RTEMS_SMP )
+ Per_CPU_Control *self_cpu;
+ rtems_interrupt_level level;
+
+ rtems_interrupt_disable( level );
+ ( void ) level;
+
+ self_cpu = _Per_CPU_Get();
+ self_cpu->thread_dispatch_disable_level = 1;
+
+ _Per_CPU_Acquire( self_cpu );
+#else
+ _Thread_Disable_dispatch();
+#endif
+}
+
rtems_task null_task(
rtems_task_argument argument
)
@@ -306,7 +324,7 @@ rtems_task Middle_task(
set_thread_dispatch_necessary( false );
- _Thread_Disable_dispatch();
+ thread_disable_dispatch();
benchmark_timer_initialize();
_Context_Switch(
@@ -350,7 +368,7 @@ rtems_task Low_task(
set_thread_dispatch_necessary( false );
- _Thread_Disable_dispatch();
+ thread_disable_dispatch();
benchmark_timer_initialize();
#if (CPU_HARDWARE_FP == 1) || (CPU_SOFTWARE_FP == 1)
@@ -383,7 +401,7 @@ rtems_task Floating_point_task_1(
set_thread_dispatch_necessary( false );
- _Thread_Disable_dispatch();
+ thread_disable_dispatch();
benchmark_timer_initialize();
#if (CPU_HARDWARE_FP == 1) || (CPU_SOFTWARE_FP == 1)
@@ -407,12 +425,6 @@ rtems_task Floating_point_task_1(
(Thread_Control *) _Chain_First(&ready_queues[FP2_PRIORITY])
);
- /* do not force context switch */
-
- set_thread_dispatch_necessary( false );
-
- _Thread_Disable_dispatch();
-
benchmark_timer_initialize();
#if (CPU_HARDWARE_FP == 1) || (CPU_SOFTWARE_FP == 1)
_Context_Save_fp( &executing->fp_context );
@@ -444,12 +456,6 @@ rtems_task Floating_point_task_2(
FP_LOAD( 1.0 );
- /* do not force context switch */
-
- set_thread_dispatch_necessary( false );
-
- _Thread_Disable_dispatch();
-
benchmark_timer_initialize();
#if (CPU_HARDWARE_FP == 1) || (CPU_SOFTWARE_FP == 1)
_Context_Save_fp( &executing->fp_context );