[rtems commit] rtems: Fix _Rate_monotonic_Release_postponed_job()
    Sebastian Huber 
    sebh at rtems.org
       
    Tue Jan 24 14:04:51 UTC 2017
    
    
  
Module:    rtems
Branch:    master
Commit:    625bd6aca47268bc21cfa38662ebc17413475e82
Changeset: http://git.rtems.org/rtems/commit/?id=625bd6aca47268bc21cfa38662ebc17413475e82
Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Tue Jan 24 15:04:11 2017 +0100
rtems: Fix _Rate_monotonic_Release_postponed_job()
Use proper locking in SMP configurations.
Update #2795.
---
 cpukit/rtems/src/ratemonperiod.c | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)
diff --git a/cpukit/rtems/src/ratemonperiod.c b/cpukit/rtems/src/ratemonperiod.c
index a4d224f..d4746cb 100644
--- a/cpukit/rtems/src/ratemonperiod.c
+++ b/cpukit/rtems/src/ratemonperiod.c
@@ -71,13 +71,10 @@ static void _Rate_monotonic_Release_postponed_job(
   ISR_lock_Context       *lock_context
 )
 {
-  /* This function only releases the postponed jobs. */
-  Per_CPU_Control *cpu_self;
+  Per_CPU_Control      *cpu_self;
   Thread_queue_Context  queue_context;
-  cpu_self = _Thread_Dispatch_disable_critical( lock_context );
-  _Rate_monotonic_Release( owner, lock_context );
 
-  the_period->postponed_jobs -=1;
+  --the_period->postponed_jobs;
   _Scheduler_Release_job(
     owner,
     &the_period->Priority,
@@ -85,6 +82,7 @@ static void _Rate_monotonic_Release_postponed_job(
     &queue_context
   );
 
+  cpu_self = _Thread_Dispatch_disable_critical( lock_context );
   _Rate_monotonic_Release( the_period, lock_context );
   _Thread_Priority_update( &queue_context );
   _Thread_Dispatch_enable( cpu_self );
    
    
More information about the vc
mailing list