[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