|author||Joel Sherrill <joel.sherrill@OARcorp.com>||2000-01-13 19:25:15 +0000|
|committer||Joel Sherrill <joel.sherrill@OARcorp.com>||2000-01-13 19:25:15 +0000|
|parent||Missed removing this file in an earlier commit. This is removed (diff)|
POSIX message queues now include complete functionality including
blocking sends when the queue is full. The SuperCore was enhanced to support blocking on send. The existing POSIX API was debugged and numerous test cases were added to psxmsgq01 by Jennifer Averett. SuperCore enhancements and resulting modifications to other APIs were done by Joel. There is one significant point of interpretation for the POSIX API. What happens to threads already blocked on a message queue when the mode of that same message queue is changed from blocking to non-blocking? We decided to unblock all waiting tasks with an EAGAIN error just as if a non-blocking version of the same operation had returned unsatisfied. This case is not discussed in the POSIX standard and other implementations may have chosen differently.
Diffstat (limited to 'c/src/exec/score/include')
1 files changed, 36 insertions, 8 deletions
diff --git a/c/src/exec/score/include/rtems/score/coremsg.h b/c/src/exec/score/include/rtems/score/coremsg.h
index 6ffedee0af..818b1e8c18 100644
@@ -166,13 +166,12 @@ void _CORE_message_queue_Close(
- * This function flushes the message_queue's task wait queue. The number
- * messages flushed from the queue is returned.
+ * This function flushes the message_queue's pending message queue. The
+ * number of messages flushed from the queue is returned.
@@ -194,7 +193,20 @@ unsigned32 _CORE_message_queue_Flush_support(
+ * _CORE_message_queue_Flush_waiting_threads
+ * DESCRIPTION:
+ * This function flushes the threads which are blocked on this
+ * message_queue's pending message queue. They are unblocked whether
+ * blocked sending or receiving.
+ CORE_message_queue_Control *the_message_queue
@@ -214,7 +226,6 @@ CORE_message_queue_Status _CORE_message_queue_Broadcast(
@@ -228,17 +239,18 @@ CORE_message_queue_Status _CORE_message_queue_Broadcast(
- CORE_message_queue_Submit_types submit_type
+ CORE_message_queue_Submit_types submit_type,
+ boolean wait,
+ Watchdog_Interval timeout
@@ -248,6 +260,7 @@ CORE_message_queue_Status _CORE_message_queue_Submit(
* inactive message pool. The thread will be blocked if wait is TRUE,
* otherwise an error will be given to the thread if no messages are available.
+ * NOTE: Returns message priority via return are in TCB.
@@ -256,10 +269,25 @@ void _CORE_message_queue_Seize(
- CORE_message_queue_Submit_types *priority,
+ * _CORE_message_queue_Insert_message
+ * DESCRIPTION:
+ * This kernel routine inserts the specified message into the
+ * message queue. It is assumed that the message has been filled
+ * in before this routine is called.
+ CORE_message_queue_Control *the_message_queue,
+ CORE_message_queue_Buffer_control *the_message,
+ CORE_message_queue_Submit_types submit_type