First of all, I apologize for the wrong subject.  It should be recvmmsg() not 
sendmmsg().

Based on the source code (in my previous email), it doesn't seem like MSG_ALL 
has any effect (I don't know MSG_ALL exists either).

Yes, I expect (or at least wish) recvmmsg() will return as many packet as 
possible before timeout, and if timeout is zero, it should keep trying to fill 
up the buffer until it is full or there is no more packet.

The reason I expect or wish such behavior is that the main idea behind 
recvmmsg() is that application can reduce the number system call, and so the 
throughput will go up and latency will go down.

Otherwise, the user could just simply use recvmsg() to mimic what recvmmsg() is 
doing.

I don't expect recvmsg() returns more than 1 message but I do expect and wish 
recvmmsg() returns more than 1 message.




On Friday, October 24, 2014 11:41 AM, "valdis.kletni...@vt.edu" 
<valdis.kletni...@vt.edu> wrote:
On Thu, 23 Oct 2014 19:43:07 -0700, Hei Chan said:




> Then, I found that recvmmsg() doesn't return all the packets that queued in 1
> single call.

You want to receive *all* of them?  Call recv() with a *buf and a len
big enough to get a *lot* of msgs, and pass MSG_ALL in the flags.

Why were you expecting recvmsg() to return more than one message?


_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@kernelnewbies.org
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies


_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@kernelnewbies.org
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

Reply via email to