summaryrefslogtreecommitdiffstats
path: root/cpukit
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2013-06-11 09:29:45 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2013-06-12 16:12:53 +0200
commita8ef3bf053db66abdbb24b3e1ac95ca1be254b95 (patch)
treee0ed894014b370dcf2bc5f96a374215847e69217 /cpukit
parentscore: Avoid cyclic include dependency (diff)
downloadrtems-a8ef3bf053db66abdbb24b3e1ac95ca1be254b95.tar.bz2
smp: Add and use _Per_CPU_Lock_acquire()
Add and use _Per_CPU_Lock_release().
Diffstat (limited to 'cpukit')
-rw-r--r--cpukit/score/include/rtems/score/percpu.h6
-rw-r--r--cpukit/score/src/smp.c12
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 a91e6dc682..bb565d92c0 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 21b39d3bb2..a8d8f4986f 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 );
}
}