summaryrefslogtreecommitdiffstats
path: root/cpukit/score/include/rtems/score/corerwlockimpl.h
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2016-04-21 06:32:16 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2016-04-22 09:25:09 +0200
commit84a539885335c629100a6a12b57ead54bbbc0165 (patch)
treeff8d0acd9624e3888dc7fc6df9003a98a19b9b3d /cpukit/score/include/rtems/score/corerwlockimpl.h
parentscore: Avoid Giant lock for barriers (diff)
downloadrtems-84a539885335c629100a6a12b57ead54bbbc0165.tar.bz2
score: Avoid Giant lock for CORE rwlock
Update #2555.
Diffstat (limited to 'cpukit/score/include/rtems/score/corerwlockimpl.h')
-rw-r--r--cpukit/score/include/rtems/score/corerwlockimpl.h24
1 files changed, 21 insertions, 3 deletions
diff --git a/cpukit/score/include/rtems/score/corerwlockimpl.h b/cpukit/score/include/rtems/score/corerwlockimpl.h
index e727ad62c2..ed59d696b6 100644
--- a/cpukit/score/include/rtems/score/corerwlockimpl.h
+++ b/cpukit/score/include/rtems/score/corerwlockimpl.h
@@ -86,6 +86,22 @@ RTEMS_INLINE_ROUTINE void _CORE_RWLock_Destroy(
_Thread_queue_Destroy( &the_rwlock->Wait_queue );
}
+RTEMS_INLINE_ROUTINE void _CORE_RWLock_Acquire_critical(
+ CORE_RWLock_Control *the_rwlock,
+ ISR_lock_Context *lock_context
+)
+{
+ _Thread_queue_Acquire_critical( &the_rwlock->Wait_queue, lock_context );
+}
+
+RTEMS_INLINE_ROUTINE void _CORE_RWLock_Release(
+ CORE_RWLock_Control *the_rwlock,
+ ISR_lock_Context *lock_context
+)
+{
+ _Thread_queue_Release( &the_rwlock->Wait_queue, lock_context );
+}
+
/**
* @brief Obtain RWLock for reading.
*
@@ -103,7 +119,8 @@ void _CORE_RWLock_Seize_for_reading(
CORE_RWLock_Control *the_rwlock,
Thread_Control *executing,
bool wait,
- Watchdog_Interval timeout
+ Watchdog_Interval timeout,
+ ISR_lock_Context *lock_context
);
/**
@@ -122,7 +139,8 @@ void _CORE_RWLock_Seize_for_writing(
CORE_RWLock_Control *the_rwlock,
Thread_Control *executing,
bool wait,
- Watchdog_Interval timeout
+ Watchdog_Interval timeout,
+ ISR_lock_Context *lock_context
);
/**
@@ -137,7 +155,7 @@ void _CORE_RWLock_Seize_for_writing(
*/
CORE_RWLock_Status _CORE_RWLock_Surrender(
CORE_RWLock_Control *the_rwlock,
- Thread_Control *executing
+ ISR_lock_Context *lock_context
);
/** @} */