diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2016-03-17 06:30:29 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2016-03-17 08:27:47 +0100 |
commit | f5bb299190750189e89849a178173a21d1afd104 (patch) | |
tree | 81e76ec2db693cd7c065e939357d3588329789fc | |
parent | posix: Avoid Giant lock in sched_yield() (diff) | |
download | rtems-f5bb299190750189e89849a178173a21d1afd104.tar.bz2 |
rtems: Avoid Giant lock in rtems_task_mode()
Update #2555.
-rw-r--r-- | cpukit/rtems/src/taskmode.c | 7 |
1 files 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; |