I could find anywhere in the doc the maximum size of a message, MsgSend()
Is there a difference if message is local or goes across network.
I know at one point there was a maximum of 4Megs for operation like
write(), I was told this limit would be removed, was it?
- Mario
max msg size
Re: max msg size
Mario Charest <mcz@videotron.ca> wrote:
will only return the first 8K of a message, no matter how big the original
message was. The remainder of the message can be obtained by using the
MsgRead*() functions (all in one fell swoop if you want). The rationale
for this is to prevent the OS from having to buffer a multi-megabyte
message until the server does a receive. It shouldn't cause too much
grief for people since most servers just do a MsgReceive*() to get the
message header and then a MsgRead*() to get any big data portion of
the message.
--
Brian Stecher (bstecher@qnx.com) QNX Software Systems, Ltd.
phone: +1 (613) 591-0931 (voice) 175 Terence Matthews Cr.
+1 (613) 591-3579 (fax) Kanata, Ontario, Canada K2M 1W8
There's no max size per say, but a MsgReceive*() from a remote clientI could find anywhere in the doc the maximum size of a message, MsgSend()
Is there a difference if message is local or goes across network.
will only return the first 8K of a message, no matter how big the original
message was. The remainder of the message can be obtained by using the
MsgRead*() functions (all in one fell swoop if you want). The rationale
for this is to prevent the OS from having to buffer a multi-megabyte
message until the server does a receive. It shouldn't cause too much
grief for people since most servers just do a MsgReceive*() to get the
message header and then a MsgRead*() to get any big data portion of
the message.
Yes it has been.I know at one point there was a maximum of 4Megs for operation like
write(), I was told this limit would be removed, was it?
--
Brian Stecher (bstecher@qnx.com) QNX Software Systems, Ltd.
phone: +1 (613) 591-0931 (voice) 175 Terence Matthews Cr.
+1 (613) 591-3579 (fax) Kanata, Ontario, Canada K2M 1W8
Re: max msg size
Brian Stecher <bstecher@qnx.com> wrote:
manager library, provided you are writing a resource manager of course.
The library does MsgRead() to get at least the minimum of what the
sender is sending and what the receiver is asking for. You still
have to worry about your receive buffer being too small
for what the client is sending just as you do in the local case.
Note that this 8K thing is taken care of for you by the resourceMario Charest <mcz@videotron.ca> wrote:
I could find anywhere in the doc the maximum size of a message, MsgSend()
Is there a difference if message is local or goes across network.
There's no max size per say, but a MsgReceive*() from a remote client
will only return the first 8K of a message, no matter how big the original
message was.
manager library, provided you are writing a resource manager of course.
The library does MsgRead() to get at least the minimum of what the
sender is sending and what the receiver is asking for. You still
have to worry about your receive buffer being too small
for what the client is sending just as you do in the local case.
The remainder of the message can be obtained by using the
MsgRead*() functions (all in one fell swoop if you want). The rationale
for this is to prevent the OS from having to buffer a multi-megabyte
message until the server does a receive. It shouldn't cause too much
grief for people since most servers just do a MsgReceive*() to get the
message header and then a MsgRead*() to get any big data portion of
the message.
I know at one point there was a maximum of 4Megs for operation like
write(), I was told this limit would be removed, was it?
Yes it has been.
--
Brian Stecher (bstecher@qnx.com) QNX Software Systems, Ltd.
phone: +1 (613) 591-0931 (voice) 175 Terence Matthews Cr.
+1 (613) 591-3579 (fax) Kanata, Ontario, Canada K2M 1W8
Re: max msg size
"Brian Stecher" <bstecher@qnx.com> wrote in message
news:8qsvju$j5m$1@nntp.qnx.com...
One think isn't clear in my mind Brian, why would the OS need to buffer?
news:8qsvju$j5m$1@nntp.qnx.com...
Ok, Mr documentation, are ya listeningMario Charest <mcz@videotron.ca> wrote:
I could find anywhere in the doc the maximum size of a message,
MsgSend()
Is there a difference if message is local or goes across network.
There's no max size per say, but a MsgReceive*() from a remote client
will only return the first 8K of a message, no matter how big the original
message was. The remainder of the message can be obtained by using the
MsgRead*() functions (all in one fell swoop if you want). The rationale
for this is to prevent the OS from having to buffer a multi-megabyte
message until the server does a receive. It shouldn't cause too much
grief for people since most servers just do a MsgReceive*() to get the
message header and then a MsgRead*() to get any big data portion of
the message.

One think isn't clear in my mind Brian, why would the OS need to buffer?
I know at one point there was a maximum of 4Megs for operation like
write(), I was told this limit would be removed, was it?
Yes it has been.
--
Brian Stecher (bstecher@qnx.com) QNX Software Systems, Ltd.
phone: +1 (613) 591-0931 (voice) 175 Terence Matthews Cr.
+1 (613) 591-3579 (fax) Kanata, Ontario, Canada K2M
1W8
Re: max msg size
Mario Charest <mcz@videotron.ca> wrote:

Yep. Just reading it now (there seems to be a higher
volume of news to read through today!)
-Donna
Actually, it's Mrs., Ms. whatever"Brian Stecher" <bstecher@qnx.com> wrote in message
news:8qsvju$j5m$1@nntp.qnx.com...
Mario Charest <mcz@videotron.ca> wrote:
I could find anywhere in the doc the maximum size of a message,
MsgSend()
Is there a difference if message is local or goes across network.
There's no max size per say, but a MsgReceive*() from a remote client
will only return the first 8K of a message, no matter how big the original
message was. The remainder of the message can be obtained by using the
MsgRead*() functions (all in one fell swoop if you want). The rationale
for this is to prevent the OS from having to buffer a multi-megabyte
message until the server does a receive. It shouldn't cause too much
grief for people since most servers just do a MsgReceive*() to get the
message header and then a MsgRead*() to get any big data portion of
the message.
Ok, Mr documentation, are ya listening![]()

Yep. Just reading it now (there seems to be a higher
volume of news to read through today!)
-Donna
One think isn't clear in my mind Brian, why would the OS need to buffer?
I know at one point there was a maximum of 4Megs for operation like
write(), I was told this limit would be removed, was it?
Yes it has been.
--
Brian Stecher (bstecher@qnx.com) QNX Software Systems, Ltd.
phone: +1 (613) 591-0931 (voice) 175 Terence Matthews Cr.
+1 (613) 591-3579 (fax) Kanata, Ontario, Canada K2M
1W8
Re: max msg size
"Donna Kinsman" <dkinsman@qnx.com> wrote in message
news:8qt80n$n91$1@nntp.qnx.com...
news:8qt80n$n91$1@nntp.qnx.com...
Mario Charest <mcz@videotron.ca> wrote:
"Brian Stecher" <bstecher@qnx.com> wrote in message
news:8qsvju$j5m$1@nntp.qnx.com...
Mario Charest <mcz@videotron.ca> wrote:
I could find anywhere in the doc the maximum size of a message,
MsgSend()
Is there a difference if message is local or goes across network.
There's no max size per say, but a MsgReceive*() from a remote client
will only return the first 8K of a message, no matter how big the
original
message was. The remainder of the message can be obtained by using the
MsgRead*() functions (all in one fell swoop if you want). The rationale
for this is to prevent the OS from having to buffer a multi-megabyte
message until the server does a receive. It shouldn't cause too much
grief for people since most servers just do a MsgReceive*() to get the
message header and then a MsgRead*() to get any big data portion of
the message.
Ok, Mr documentation, are ya listening
Actually, it's Mrs., Ms. whatever
French brain cells are trying to resurface
Notice that to, lol!Yep. Just reading it now (there seems to be a higher
volume of news to read through today!)
-Donna
One think isn't clear in my mind Brian, why would the OS need to buffer?
I know at one point there was a maximum of 4Megs for operation like
write(), I was told this limit would be removed, was it?
Yes it has been.
--
Brian Stecher (bstecher@qnx.com) QNX Software Systems, Ltd.
phone: +1 (613) 591-0931 (voice) 175 Terence Matthews Cr.
+1 (613) 591-3579 (fax) Kanata, Ontario, Canada K2M
1W8
Re: max msg size
Mario Charest <mcz@videotron.ca> wrote:
and size of the buffers involved -- and a memory to memory copy is cheap
and fast.
But, accross the network, moving data is slow. Often someone will do
a MsgSend() before the receiving side has done a MsgReceive(). So,
we have a few choices:
-- only send notification that a status has changed, then wait until
receiver calls MsgReceive() and start copying the data accross the
network
-- starting sending the whole message at the time of the MsgSend() and
buffer it on the receiving side (the OS doing the buffering, or, well,
qnet in io-net)... of course, the data requirements for qnet could
very big. (This is what QNX4 does -- but the message is limitted to
(just under) 64k in size, limiting the amount of buffer that needs
to be created.)
-- starting sending the message immediately, but only send the first
(limitted amount) of the message. This limits the latency -- if
you pick your buffer size right, most messages will fit in it. It
limits your buffering overhead -- no message will take more than
a certain size.
-David
Locally, of course, the kernel doesn't need to -- it can know the state"Brian Stecher" <bstecher@qnx.com> wrote in message
news:8qsvju$j5m$1@nntp.qnx.com...
Mario Charest <mcz@videotron.ca> wrote:
I could find anywhere in the doc the maximum size of a message,
MsgSend()
Is there a difference if message is local or goes across network.
There's no max size per say, but a MsgReceive*() from a remote client
will only return the first 8K of a message, no matter how big the original
message was. The remainder of the message can be obtained by using the
MsgRead*() functions (all in one fell swoop if you want). The rationale
for this is to prevent the OS from having to buffer a multi-megabyte
message until the server does a receive. It shouldn't cause too much
grief for people since most servers just do a MsgReceive*() to get the
message header and then a MsgRead*() to get any big data portion of
the message.
Ok, Mr documentation, are ya listening
One think isn't clear in my mind Brian, why would the OS need to buffer?
and size of the buffers involved -- and a memory to memory copy is cheap
and fast.
But, accross the network, moving data is slow. Often someone will do
a MsgSend() before the receiving side has done a MsgReceive(). So,
we have a few choices:
-- only send notification that a status has changed, then wait until
receiver calls MsgReceive() and start copying the data accross the
network
-- starting sending the whole message at the time of the MsgSend() and
buffer it on the receiving side (the OS doing the buffering, or, well,
qnet in io-net)... of course, the data requirements for qnet could
very big. (This is what QNX4 does -- but the message is limitted to
(just under) 64k in size, limiting the amount of buffer that needs
to be created.)
-- starting sending the message immediately, but only send the first
(limitted amount) of the message. This limits the latency -- if
you pick your buffer size right, most messages will fit in it. It
limits your buffering overhead -- no message will take more than
a certain size.
-David