Messages in this thread | | | Date | Fri, 14 May 2004 06:40:12 -0400 | From | Jakub Jelinek <> | Subject | Re: POSIX message queues should not allocate memory on send |
| |
On Fri, May 14, 2004 at 12:09:46PM +0100, Martijn Sipkema wrote: > You are correct; defaults are indeed needed. The current default value > for mq_msgsize seems rather large considering that mq_msgsize*mq_maxmsg > bytes will have to be allocated on queue creation. If variable sized large > payload messages are needed one might consider using shared memory in > combination with a message queue. > > My main point was that mq_send()/mq_timedsend() may not return ENOMEM > and I am positive I did not misread the standard on that.
Even that is not clear. http://www.opengroup.org/onlinepubs/009695399/functions/xsh_chap02_03.html#tag_02_03 " Implementations may support additional errors not included in this list, may generate errors included in this list under circumstances other than those described here, or may contain extensions or limitations that prevent some errors from occurring. The ERRORS section on each reference page specifies whether an error shall be returned, or whether it may be returned. Implementations shall not generate a different error number from the ones described here for error conditions described in this volume of IEEE Std 1003.1-2001, but may generate additional errors unless explicitly disallowed for a particular function."
Explicitely disallowed in the general section is only EINTR for the THR option functions unless explitely listed for that function and nothing else.
I don't see ENOMEM explicitly forbidden for mq_send/mq_timedsend nor any wording in mq_open description which would require the buffers to be preallocated.
Jakub - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |