summaryrefslogtreecommitdiffstats
path: root/cpukit/score/include/rtems/score/coremsgimpl.h
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2015-04-21 09:21:29 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2015-04-23 08:54:09 +0200
commitd349e8a439d022bda3f9637fff013cfc8e55743d (patch)
tree9c694fcb7e7d142045cf84df4d27f17e8cbcfa1c /cpukit/score/include/rtems/score/coremsgimpl.h
parentscore: Delete _CORE_RWLock_Timeout() (diff)
downloadrtems-d349e8a439d022bda3f9637fff013cfc8e55743d.tar.bz2
score: Fix priority message queue insert
Move the linear search into a critical section to avoid corruption due to higher priority interrupts. The interrupt disable time depends now on the count of pending messages. Close #2328.
Diffstat (limited to 'cpukit/score/include/rtems/score/coremsgimpl.h')
-rw-r--r--cpukit/score/include/rtems/score/coremsgimpl.h32
1 files changed, 1 insertions, 31 deletions
diff --git a/cpukit/score/include/rtems/score/coremsgimpl.h b/cpukit/score/include/rtems/score/coremsgimpl.h
index 52796ad885..cedf2760e8 100644
--- a/cpukit/score/include/rtems/score/coremsgimpl.h
+++ b/cpukit/score/include/rtems/score/coremsgimpl.h
@@ -443,7 +443,7 @@ RTEMS_INLINE_ROUTINE void _CORE_message_queue_Free_message_buffer (
* disabled if no API requires it.
*/
RTEMS_INLINE_ROUTINE int _CORE_message_queue_Get_message_priority (
- CORE_message_queue_Buffer_control *the_message
+ const CORE_message_queue_Buffer_control *the_message
)
{
#if defined(RTEMS_SCORE_COREMSG_ENABLE_MESSAGE_PRIORITY)
@@ -494,36 +494,6 @@ RTEMS_INLINE_ROUTINE bool _CORE_message_queue_Is_priority(
(the_attribute->discipline == CORE_MESSAGE_QUEUE_DISCIPLINES_PRIORITY);
}
-/**
- * This routine places the_message at the rear of the outstanding
- * messages on the_message_queue.
- */
-RTEMS_INLINE_ROUTINE void _CORE_message_queue_Append_unprotected (
- CORE_message_queue_Control *the_message_queue,
- CORE_message_queue_Buffer_control *the_message
-)
-{
- _Chain_Append_unprotected(
- &the_message_queue->Pending_messages,
- &the_message->Node
- );
-}
-
-/**
- * This routine places the_message at the front of the outstanding
- * messages on the_message_queue.
- */
-RTEMS_INLINE_ROUTINE void _CORE_message_queue_Prepend_unprotected (
- CORE_message_queue_Control *the_message_queue,
- CORE_message_queue_Buffer_control *the_message
-)
-{
- _Chain_Prepend_unprotected(
- &the_message_queue->Pending_messages,
- &the_message->Node
- );
-}
-
#if defined(RTEMS_SCORE_COREMSG_ENABLE_NOTIFICATION)
/**
* This function returns true if notification is enabled on this message