From 53fb837afc4285486e318bcb614c911bbe9b1348 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Thu, 13 Jan 2000 19:25:15 +0000 Subject: 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. --- cpukit/score/macros/rtems/score/coremsg.inl | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'cpukit/score/macros/rtems') diff --git a/cpukit/score/macros/rtems/score/coremsg.inl b/cpukit/score/macros/rtems/score/coremsg.inl index bc45a51ac3..0717b3eea3 100644 --- a/cpukit/score/macros/rtems/score/coremsg.inl +++ b/cpukit/score/macros/rtems/score/coremsg.inl @@ -23,9 +23,10 @@ */ #define _CORE_message_queue_Send( _the_message_queue, _buffer, _size, \ -_id, _api_message_queue_mp_support ) \ + _id, _api_message_queue_mp_support, _wait, _timeout ) \ _CORE_message_queue_Submit( (_the_message_queue), (_buffer), (_size), \ - (_id), (_api_message_queue_mp_support), CORE_MESSAGE_QUEUE_SEND_REQUEST ) + (_id), (_api_message_queue_mp_support), \ + CORE_MESSAGE_QUEUE_SEND_REQUEST, (_wait), (_timeout) /*PAGE * @@ -34,9 +35,10 @@ _id, _api_message_queue_mp_support ) \ */ #define _CORE_message_queue_Urgent( _the_message_queue, _buffer, _size, \ -_id, _api_message_queue_mp_support ) \ + _id, _api_message_queue_mp_support, _wait, _timeout ) \ _CORE_message_queue_Submit( (_the_message_queue), (_buffer), (_size), \ - (_id), (_api_message_queue_mp_support), CORE_MESSAGE_QUEUE_URGENT_REQUEST ) + (_id), (_api_message_queue_mp_support), \ + CORE_MESSAGE_QUEUE_URGENT_REQUEST, (_wait), (_timeout) /*PAGE * -- cgit v1.2.3