[rtems commit] smp: Add and use _Per_CPU_Lock_acquire()

Sebastian Huber sebh at rtems.org
Wed Jun 12 14:08:10 UTC 2013


Module:    rtems
Branch:    master
Commit:    a8ef3bf053db66abdbb24b3e1ac95ca1be254b95
Changeset: http://git.rtems.org/rtems/commit/?id=a8ef3bf053db66abdbb24b3e1ac95ca1be254b95

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Tue Jun 11 09:29:45 2013 +0200

smp: Add and use _Per_CPU_Lock_acquire()

Add and use _Per_CPU_Lock_release().

---

 cpukit/score/include/rtems/score/percpu.h |    6 ++++++
 cpukit/score/src/smp.c                    |   12 ++++++------
 2 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/cpukit/score/include/rtems/score/percpu.h b/cpukit/score/include/rtems/score/percpu.h
index a91e6dc..bb565d9 100644
--- a/cpukit/score/include/rtems/score/percpu.h
+++ b/cpukit/score/include/rtems/score/percpu.h
@@ -268,6 +268,12 @@ void _Per_CPU_Wait_for_state(
   Per_CPU_State desired_state
 );
 
+#define _Per_CPU_Lock_acquire( per_cpu, isr_cookie ) \
+  _SMP_lock_ISR_disable_and_acquire( &( per_cpu )->lock, isr_cookie )
+
+#define _Per_CPU_Lock_release( per_cpu, isr_cookie ) \
+  _SMP_lock_Release_and_ISR_enable( &( per_cpu )->lock, isr_cookie )
+
 #endif
 
 /*
diff --git a/cpukit/score/src/smp.c b/cpukit/score/src/smp.c
index 21b39d3..a8d8f49 100644
--- a/cpukit/score/src/smp.c
+++ b/cpukit/score/src/smp.c
@@ -70,10 +70,10 @@ void rtems_smp_process_interrupt( void )
   ISR_Level        level;
 
 
-  _SMP_lock_ISR_disable_and_acquire( &per_cpu->lock, level );
+  _Per_CPU_Lock_acquire( per_cpu, level );
   message = per_cpu->message;
   per_cpu->message = 0;
-  _SMP_lock_Release_and_ISR_enable( &per_cpu->lock, level );
+  _Per_CPU_Lock_release( per_cpu, level );
 
   #if defined(RTEMS_DEBUG)
     {
@@ -116,9 +116,9 @@ void _SMP_Send_message( int cpu, uint32_t message )
       printk( "Send 0x%x to %d\n", message, cpu );
   #endif
 
-  _SMP_lock_ISR_disable_and_acquire( &per_cpu->lock, level );
+  _Per_CPU_Lock_acquire( per_cpu, level );
   per_cpu->message |= message;
-  _SMP_lock_Release_and_ISR_enable( &per_cpu->lock, level );
+  _Per_CPU_Lock_release( per_cpu, level );
 
   bsp_smp_interrupt_cpu( cpu );
 }
@@ -134,9 +134,9 @@ void _SMP_Broadcast_message( uint32_t message )
       Per_CPU_Control *per_cpu = &_Per_CPU_Information[ cpu ];
       ISR_Level level;
 
-      _SMP_lock_ISR_disable_and_acquire( &per_cpu->lock, level );
+      _Per_CPU_Lock_acquire( per_cpu, level );
       per_cpu->message |= message;
-      _SMP_lock_Release_and_ISR_enable( &per_cpu->lock, level );
+      _Per_CPU_Lock_release( per_cpu, level );
     }
   }
 




More information about the vc mailing list