Help needed with System V message queues

christopher.l.kirby clk at cbnewsl.att.com
Wed Aug 8 01:52:26 AEST 1990


In article <1169 at compel.UUCP> her at compel.UUCP (Helge Egelund Rasmussen) writes:
>
[...]
>However, if I send a message with this length, I get return status -1 and 
>errno = EINVAL, indicating that the message size is too big.
>My program works with a max length of 2000 bytes.
>
>I've found a tunable parameter called MSGMAX (current value 2048), which may
>be the actual max message size.

It is.

>
>The funny thing is that the max value that I can give MSGMAX is 8192, which 
>is greater than 'msg_qbytes' (4096). Does this mean that it is possible to
>send messages that are bigger than the message queue???

The max value of MSGMAX, according to the AT&T SVR3.2 SysAdmin guide,
is "64 kilobytes - 1".  If you try to send a message which will
cause the queue length to be > msg_qbytes, one of the following
actions will be taken:

- If you have specified flag IPC_NOWAIT, msgsnd() will return
  EAGAIN.

- Otherwise, the call will block until one of a set of conditions
  is true.  See the man page for msgop(2).
>
>I'm using Interactive Unix v.3.2.
>
>Questions:

>   - Is MSGMAX the size of the biggest message I can send?
Yes.

>   - If so, what on earth do I use 'msg_qbytes' for?
You should use the tunable MSGMNB to get the desired queue size.
Or, you can run as super-user, and use msgctl() with IPC_SET
to raise msg_qbytes for your particular queue.

>   - How do I get the current value of MSGMAX in my program?

Not sure about that one.
>
>I've tried to RTFM, but it didn't help. So, PLEASE, help....
>
>Helge

=====================================================================
Chris Kirby		AT&T Bell Laboratories, Summit, NJ  07901
clk at attunix.att.com



More information about the Comp.unix.wizards mailing list