From f5bb299190750189e89849a178173a21d1afd104 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Thu, 17 Mar 2016 06:30:29 +0100 Subject: [PATCH] rtems: Avoid Giant lock in rtems_task_mode() Update #2555. --- cpukit/rtems/src/taskmode.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/cpukit/rtems/src/taskmode.c b/cpukit/rtems/src/taskmode.c index fadca68225..0fc0924993 100644 --- a/cpukit/rtems/src/taskmode.c +++ b/cpukit/rtems/src/taskmode.c @@ -112,13 +112,14 @@ rtems_status_code rtems_task_mode( } if ( preempt_enabled || needs_asr_dispatching ) { - ISR_lock_Context lock_context; + Per_CPU_Control *cpu_self; + ISR_lock_Context lock_context; - _Thread_Disable_dispatch(); + cpu_self = _Thread_Dispatch_disable(); _Scheduler_Acquire( executing, &lock_context ); _Scheduler_Schedule( executing ); _Scheduler_Release( executing, &lock_context ); - _Thread_Enable_dispatch(); + _Thread_Dispatch_enable( cpu_self ); } return RTEMS_SUCCESSFUL;