summaryrefslogtreecommitdiffstats
path: root/cpukit/score/include/rtems
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2016-08-22 13:17:05 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2016-09-08 09:55:26 +0200
commit114e40880bb56186d06fc81da29a889d9f2171a5 (patch)
tree65e8f132b4ebc8f9e5fa7668c9a6de9e26a33088 /cpukit/score/include/rtems
parentscore: Fix warning (diff)
downloadrtems-114e40880bb56186d06fc81da29a889d9f2171a5.tar.bz2
score: Simplify thread queue acquire/release
Diffstat (limited to 'cpukit/score/include/rtems')
-rw-r--r--cpukit/score/include/rtems/score/corebarrierimpl.h10
-rw-r--r--cpukit/score/include/rtems/score/coremsgimpl.h15
-rw-r--r--cpukit/score/include/rtems/score/coremuteximpl.h10
-rw-r--r--cpukit/score/include/rtems/score/corerwlockimpl.h10
-rw-r--r--cpukit/score/include/rtems/score/coresemimpl.h10
-rw-r--r--cpukit/score/include/rtems/score/mrspimpl.h7
-rw-r--r--cpukit/score/include/rtems/score/threadimpl.h10
-rw-r--r--cpukit/score/include/rtems/score/threadqimpl.h42
8 files changed, 51 insertions, 63 deletions
diff --git a/cpukit/score/include/rtems/score/corebarrierimpl.h b/cpukit/score/include/rtems/score/corebarrierimpl.h
index a7256b9d6d..d5d63659d0 100644
--- a/cpukit/score/include/rtems/score/corebarrierimpl.h
+++ b/cpukit/score/include/rtems/score/corebarrierimpl.h
@@ -59,10 +59,7 @@ RTEMS_INLINE_ROUTINE void _CORE_barrier_Acquire_critical(
Thread_queue_Context *queue_context
)
{
- _Thread_queue_Acquire_critical(
- &the_barrier->Wait_queue,
- &queue_context->Lock_context
- );
+ _Thread_queue_Acquire_critical( &the_barrier->Wait_queue, queue_context );
}
RTEMS_INLINE_ROUTINE void _CORE_barrier_Release(
@@ -70,10 +67,7 @@ RTEMS_INLINE_ROUTINE void _CORE_barrier_Release(
Thread_queue_Context *queue_context
)
{
- _Thread_queue_Release(
- &the_barrier->Wait_queue,
- &queue_context->Lock_context
- );
+ _Thread_queue_Release( &the_barrier->Wait_queue, queue_context );
}
/**
diff --git a/cpukit/score/include/rtems/score/coremsgimpl.h b/cpukit/score/include/rtems/score/coremsgimpl.h
index 3b811c920d..e33e3308b2 100644
--- a/cpukit/score/include/rtems/score/coremsgimpl.h
+++ b/cpukit/score/include/rtems/score/coremsgimpl.h
@@ -313,10 +313,7 @@ RTEMS_INLINE_ROUTINE void _CORE_message_queue_Acquire(
Thread_queue_Context *queue_context
)
{
- _Thread_queue_Acquire(
- &the_message_queue->Wait_queue,
- &queue_context->Lock_context
- );
+ _Thread_queue_Acquire( &the_message_queue->Wait_queue, queue_context );
}
RTEMS_INLINE_ROUTINE void _CORE_message_queue_Acquire_critical(
@@ -324,10 +321,7 @@ RTEMS_INLINE_ROUTINE void _CORE_message_queue_Acquire_critical(
Thread_queue_Context *queue_context
)
{
- _Thread_queue_Acquire_critical(
- &the_message_queue->Wait_queue,
- &queue_context->Lock_context
- );
+ _Thread_queue_Acquire_critical( &the_message_queue->Wait_queue, queue_context );
}
RTEMS_INLINE_ROUTINE void _CORE_message_queue_Release(
@@ -335,10 +329,7 @@ RTEMS_INLINE_ROUTINE void _CORE_message_queue_Release(
Thread_queue_Context *queue_context
)
{
- _Thread_queue_Release(
- &the_message_queue->Wait_queue,
- &queue_context->Lock_context
- );
+ _Thread_queue_Release( &the_message_queue->Wait_queue, queue_context );
}
/**
diff --git a/cpukit/score/include/rtems/score/coremuteximpl.h b/cpukit/score/include/rtems/score/coremuteximpl.h
index ce53b23bc7..680c6d5eaf 100644
--- a/cpukit/score/include/rtems/score/coremuteximpl.h
+++ b/cpukit/score/include/rtems/score/coremuteximpl.h
@@ -56,10 +56,7 @@ RTEMS_INLINE_ROUTINE void _CORE_mutex_Acquire_critical(
Thread_queue_Context *queue_context
)
{
- _Thread_queue_Acquire_critical(
- &the_mutex->Wait_queue,
- &queue_context->Lock_context
- );
+ _Thread_queue_Acquire_critical( &the_mutex->Wait_queue, queue_context );
}
RTEMS_INLINE_ROUTINE void _CORE_mutex_Release(
@@ -67,10 +64,7 @@ RTEMS_INLINE_ROUTINE void _CORE_mutex_Release(
Thread_queue_Context *queue_context
)
{
- _Thread_queue_Release(
- &the_mutex->Wait_queue,
- &queue_context->Lock_context
- );
+ _Thread_queue_Release( &the_mutex->Wait_queue, queue_context );
}
RTEMS_INLINE_ROUTINE Thread_Control *_CORE_mutex_Get_owner(
diff --git a/cpukit/score/include/rtems/score/corerwlockimpl.h b/cpukit/score/include/rtems/score/corerwlockimpl.h
index ff881fa186..330d9acc55 100644
--- a/cpukit/score/include/rtems/score/corerwlockimpl.h
+++ b/cpukit/score/include/rtems/score/corerwlockimpl.h
@@ -71,10 +71,7 @@ RTEMS_INLINE_ROUTINE void _CORE_RWLock_Acquire_critical(
Thread_queue_Context *queue_context
)
{
- _Thread_queue_Acquire_critical(
- &the_rwlock->Wait_queue,
- &queue_context->Lock_context
- );
+ _Thread_queue_Acquire_critical( &the_rwlock->Wait_queue, queue_context );
}
RTEMS_INLINE_ROUTINE void _CORE_RWLock_Release(
@@ -82,10 +79,7 @@ RTEMS_INLINE_ROUTINE void _CORE_RWLock_Release(
Thread_queue_Context *queue_context
)
{
- _Thread_queue_Release(
- &the_rwlock->Wait_queue,
- &queue_context->Lock_context
- );
+ _Thread_queue_Release( &the_rwlock->Wait_queue, queue_context );
}
/**
diff --git a/cpukit/score/include/rtems/score/coresemimpl.h b/cpukit/score/include/rtems/score/coresemimpl.h
index 5a287263aa..44e1672570 100644
--- a/cpukit/score/include/rtems/score/coresemimpl.h
+++ b/cpukit/score/include/rtems/score/coresemimpl.h
@@ -58,10 +58,7 @@ RTEMS_INLINE_ROUTINE void _CORE_semaphore_Acquire_critical(
Thread_queue_Context *queue_context
)
{
- _Thread_queue_Acquire_critical(
- &the_semaphore->Wait_queue,
- &queue_context->Lock_context
- );
+ _Thread_queue_Acquire_critical( &the_semaphore->Wait_queue, queue_context );
}
RTEMS_INLINE_ROUTINE void _CORE_semaphore_Release(
@@ -69,10 +66,7 @@ RTEMS_INLINE_ROUTINE void _CORE_semaphore_Release(
Thread_queue_Context *queue_context
)
{
- _Thread_queue_Release(
- &the_semaphore->Wait_queue,
- &queue_context->Lock_context
- );
+ _Thread_queue_Release( &the_semaphore->Wait_queue, queue_context );
}
RTEMS_INLINE_ROUTINE void _CORE_semaphore_Destroy(
diff --git a/cpukit/score/include/rtems/score/mrspimpl.h b/cpukit/score/include/rtems/score/mrspimpl.h
index 7b859f3c9b..593d846b9c 100644
--- a/cpukit/score/include/rtems/score/mrspimpl.h
+++ b/cpukit/score/include/rtems/score/mrspimpl.h
@@ -66,10 +66,7 @@ RTEMS_INLINE_ROUTINE void _MRSP_Acquire_critical(
Thread_queue_Context *queue_context
)
{
- _Thread_queue_Acquire_critical(
- &mrsp->Wait_queue,
- &queue_context->Lock_context
- );
+ _Thread_queue_Acquire_critical( &mrsp->Wait_queue, queue_context );
}
RTEMS_INLINE_ROUTINE void _MRSP_Release(
@@ -77,7 +74,7 @@ RTEMS_INLINE_ROUTINE void _MRSP_Release(
Thread_queue_Context *queue_context
)
{
- _Thread_queue_Release( &mrsp->Wait_queue, &queue_context->Lock_context );
+ _Thread_queue_Release( &mrsp->Wait_queue, queue_context );
}
RTEMS_INLINE_ROUTINE bool _MRSP_Restore_priority_filter(
diff --git a/cpukit/score/include/rtems/score/threadimpl.h b/cpukit/score/include/rtems/score/threadimpl.h
index 2e335396bb..72e0ba3655 100644
--- a/cpukit/score/include/rtems/score/threadimpl.h
+++ b/cpukit/score/include/rtems/score/threadimpl.h
@@ -368,7 +368,7 @@ RTEMS_INLINE_ROUTINE void _Thread_State_acquire_critical(
ISR_lock_Context *lock_context
)
{
- _Thread_queue_Acquire_critical( &the_thread->Join_queue, lock_context );
+ _Thread_queue_Do_acquire_critical( &the_thread->Join_queue, lock_context );
}
RTEMS_INLINE_ROUTINE void _Thread_State_acquire(
@@ -376,7 +376,8 @@ RTEMS_INLINE_ROUTINE void _Thread_State_acquire(
ISR_lock_Context *lock_context
)
{
- _Thread_queue_Acquire( &the_thread->Join_queue, lock_context );
+ _ISR_lock_ISR_disable( lock_context );
+ _Thread_State_acquire_critical( the_thread, lock_context );
}
RTEMS_INLINE_ROUTINE Thread_Control *_Thread_State_acquire_for_executing(
@@ -397,7 +398,7 @@ RTEMS_INLINE_ROUTINE void _Thread_State_release_critical(
ISR_lock_Context *lock_context
)
{
- _Thread_queue_Release_critical( &the_thread->Join_queue, lock_context );
+ _Thread_queue_Do_release_critical( &the_thread->Join_queue, lock_context );
}
RTEMS_INLINE_ROUTINE void _Thread_State_release(
@@ -405,7 +406,8 @@ RTEMS_INLINE_ROUTINE void _Thread_State_release(
ISR_lock_Context *lock_context
)
{
- _Thread_queue_Release( &the_thread->Join_queue, lock_context );
+ _Thread_State_release_critical( the_thread, lock_context );
+ _ISR_lock_ISR_enable( lock_context );
}
#if defined(RTEMS_DEBUG)
diff --git a/cpukit/score/include/rtems/score/threadqimpl.h b/cpukit/score/include/rtems/score/threadqimpl.h
index 8a3b991516..641c618b1d 100644
--- a/cpukit/score/include/rtems/score/threadqimpl.h
+++ b/cpukit/score/include/rtems/score/threadqimpl.h
@@ -350,7 +350,7 @@ RTEMS_INLINE_ROUTINE void _Thread_queue_Queue_release(
_ISR_lock_ISR_enable( lock_context );
}
-RTEMS_INLINE_ROUTINE void _Thread_queue_Acquire_critical(
+RTEMS_INLINE_ROUTINE void _Thread_queue_Do_acquire_critical(
Thread_queue_Control *the_thread_queue,
ISR_lock_Context *lock_context
)
@@ -365,13 +365,24 @@ RTEMS_INLINE_ROUTINE void _Thread_queue_Acquire_critical(
#endif
}
+RTEMS_INLINE_ROUTINE void _Thread_queue_Acquire_critical(
+ Thread_queue_Control *the_thread_queue,
+ Thread_queue_Context *queue_context
+)
+{
+ _Thread_queue_Do_acquire_critical(
+ the_thread_queue,
+ &queue_context->Lock_context
+ );
+}
+
RTEMS_INLINE_ROUTINE void _Thread_queue_Acquire(
Thread_queue_Control *the_thread_queue,
- ISR_lock_Context *lock_context
+ Thread_queue_Context *queue_context
)
{
- _ISR_lock_ISR_disable( lock_context );
- _Thread_queue_Acquire_critical( the_thread_queue, lock_context );
+ _ISR_lock_ISR_disable( &queue_context->Lock_context );
+ _Thread_queue_Acquire_critical( the_thread_queue, queue_context );
}
#if defined(RTEMS_DEBUG)
@@ -387,7 +398,7 @@ RTEMS_INLINE_ROUTINE bool _Thread_queue_Is_lock_owner(
}
#endif
-RTEMS_INLINE_ROUTINE void _Thread_queue_Release_critical(
+RTEMS_INLINE_ROUTINE void _Thread_queue_Do_release_critical(
Thread_queue_Control *the_thread_queue,
ISR_lock_Context *lock_context
)
@@ -404,13 +415,24 @@ RTEMS_INLINE_ROUTINE void _Thread_queue_Release_critical(
);
}
+RTEMS_INLINE_ROUTINE void _Thread_queue_Release_critical(
+ Thread_queue_Control *the_thread_queue,
+ Thread_queue_Context *queue_context
+)
+{
+ _Thread_queue_Do_release_critical(
+ the_thread_queue,
+ &queue_context->Lock_context
+ );
+}
+
RTEMS_INLINE_ROUTINE void _Thread_queue_Release(
Thread_queue_Control *the_thread_queue,
- ISR_lock_Context *lock_context
+ Thread_queue_Context *queue_context
)
{
- _Thread_queue_Release_critical( the_thread_queue, lock_context );
- _ISR_lock_ISR_enable( lock_context );
+ _Thread_queue_Release_critical( the_thread_queue, queue_context );
+ _ISR_lock_ISR_enable( &queue_context->Lock_context );
}
Thread_Control *_Thread_queue_Do_dequeue(
@@ -541,7 +563,7 @@ RTEMS_INLINE_ROUTINE void _Thread_queue_Enqueue(
Thread_queue_Context queue_context;
_Thread_queue_Context_initialize( &queue_context );
- _Thread_queue_Acquire( the_thread_queue, &queue_context.Lock_context );
+ _Thread_queue_Acquire( the_thread_queue, &queue_context );
_Thread_queue_Context_set_expected_level( &queue_context, expected_level );
if ( discipline == WATCHDOG_ABSOLUTE ) {
_Thread_queue_Context_set_absolute_timeout( &queue_context, timeout );
@@ -662,7 +684,7 @@ void _Thread_queue_Unblock_critical(
* Thread_Control *first;
*
* _Thread_queue_Context_initialize( &queue_context, NULL );
- * _Thread_queue_Acquire( &mutex->Queue, &queue_context.Lock_context );
+ * _Thread_queue_Acquire( &mutex->Queue, queue_context );
*
* first = _Thread_queue_First_locked( &mutex->Queue );
* mutex->owner = first;