diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2016-03-17 06:16:23 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2016-03-17 08:27:47 +0100 |
commit | 75aef54d16baab507134a5011e955151b990dcf6 (patch) | |
tree | d0ece8bb3ea8822691f02eebcb00414b8b3efc4b | |
parent | score: Fix CPU time used by executing threads (diff) | |
download | rtems-75aef54d16baab507134a5011e955151b990dcf6.tar.bz2 |
posix: Avoid Giant lock in sched_yield()
Update #2555.
-rw-r--r-- | cpukit/posix/src/sched_yield.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/cpukit/posix/src/sched_yield.c b/cpukit/posix/src/sched_yield.c index e398fbf06e..7e056cef27 100644 --- a/cpukit/posix/src/sched_yield.c +++ b/cpukit/posix/src/sched_yield.c @@ -26,8 +26,10 @@ int sched_yield( void ) { - _Thread_Disable_dispatch(); - _Thread_Yield( _Thread_Executing ); - _Thread_Enable_dispatch(); + Per_CPU_Control *cpu_self; + + cpu_self = _Thread_Dispatch_disable(); + _Thread_Yield( _Per_CPU_Get_executing( cpu_self ) ); + _Thread_Dispatch_enable( cpu_self ); return 0; } |