<div dir="ltr">Thanks. I have pushed this along with a patch to add this as another error cause in the POSIX Users Guide</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, Jan 19, 2020 at 9:11 AM Martin Erik Werner <<a href="mailto:martinerikwerner@gmail.com">martinerikwerner@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Modify the status code returned by _CORE_message_queue_Submit() when it<br>
detects a wait bout to happen in an ISR (which would be deadly) to<br>
return a status which translated to EAGAIN instead of ENOMEM.<br>
<br>
(This is only relevant for POSIX message queues, since classic message<br>
queues cannot block on send.)<br>
<br>
The motivation is to match the "most related" errno value returned from<br>
mq_send() and mq_timedsend() according to POSIX, via opengroup<br>
<br>
  [EAGAIN]<br>
      The O_NONBLOCK flag is set in the message queue description<br>
      associated with mqdes, and the specified message queue is full.<br>
<br>
or via the RTEMS POSIX users documentation<br>
<br>
  EAGAIN<br>
    The message queue is non-blocking, and there is no room on the queue<br>
    for another message as specified by the mq_maxmsg.<br>
<br>
Neither of these matches the case ofi avoided ISR wait perfectly, but<br>
they seem to be the closest equivalent, unless it is desirable to keep a<br>
new non-standard error for this case. It is presumed that this is not<br>
desirable.<br>
<br>
The previously returned ENOMEM error value is not documented in either<br>
the opengroup or the RTEMS POSIX uses documentation.<br>
<br>
Based on the discussion in:<br>
<a href="https://lists.rtems.org/pipermail/devel/2020-January/056891.html" rel="noreferrer" target="_blank">https://lists.rtems.org/pipermail/devel/2020-January/056891.html</a><br>
Message-Id: <<a href="mailto:CAF9ehCW5P12ZkZja4UPYTbdBFUyC1VKVL-tU7nyUtvK1Lz2Z3g@mail.gmail.com" target="_blank">CAF9ehCW5P12ZkZja4UPYTbdBFUyC1VKVL-tU7nyUtvK1Lz2Z3g@mail.gmail.com</a>><br>
---<br>
 cpukit/include/rtems/score/status.h | 2 +-<br>
 1 file changed, 1 insertion(+), 1 deletion(-)<br>
<br>
diff --git a/cpukit/include/rtems/score/status.h b/cpukit/include/rtems/score/status.h<br>
index 34002559aa..fe1f0e87e6 100644<br>
--- a/cpukit/include/rtems/score/status.h<br>
+++ b/cpukit/include/rtems/score/status.h<br>
@@ -90,7 +90,7 @@ typedef enum {<br>
   STATUS_MESSAGE_INVALID_SIZE =<br>
     STATUS_BUILD( STATUS_CLASSIC_INVALID_SIZE, EMSGSIZE ),<br>
   STATUS_MESSAGE_QUEUE_WAIT_IN_ISR =<br>
-    STATUS_BUILD( STATUS_CLASSIC_INTERNAL_ERROR, ENOMEM ),<br>
+    STATUS_BUILD( STATUS_CLASSIC_INTERNAL_ERROR, EAGAIN ),<br>
   STATUS_MESSAGE_QUEUE_WAS_DELETED =<br>
     STATUS_BUILD( STATUS_CLASSIC_OBJECT_WAS_DELETED, EBADF ),<br>
   STATUS_MINUS_ONE =<br>
-- <br>
2.20.1<br>
<br>
</blockquote></div>