Arnaldo Carvalho de Melo
a2e2725541
net: Introduce recvmmsg socket syscall
Meaning receive multiple messages, reducing the number of syscalls and
net stack entry/exit operations.
Next patches will introduce mechanisms where protocols that want to
optimize this operation will provide an unlocked_recvmsg operation.
This takes into account comments made by:
. Paul Moore: sock_recvmsg is called only for the first datagram,
sock_recvmsg_nosec is used for the rest.
. Caitlin Bestler: recvmmsg now has a struct timespec timeout, that
works in the same fashion as the ppoll one.
If the underlying protocol returns a datagram with MSG_OOB set, this
will make recvmmsg return right away with as many datagrams (+ the OOB
one) it has received so far.
. Rémi Denis-Courmont & Steven Whitehouse: If we receive N < vlen
datagrams and then recvmsg returns an error, recvmmsg will return
the successfully received datagrams, store the error and return it
in the next call.
This paves the way for a subsequent optimization, sk_prot->unlocked_recvmsg,
where we will be able to acquire the lock only at batch start and end, not at
every underlying recvmsg call.
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2009-10-12 23:40:10 -07:00
..
2009-01-15 16:39:40 -08:00
2008-04-17 10:42:34 -04:00
2008-11-14 10:39:16 +11:00
2009-05-02 15:36:10 -07:00
2007-06-01 08:18:29 -07:00
2006-10-08 12:32:36 -07:00
2006-10-08 12:32:36 -07:00
2008-02-07 08:42:25 -08:00
2006-10-08 12:32:36 -07:00
2009-09-24 07:21:06 -07:00
2007-04-17 16:36:27 -07:00
2006-10-08 12:32:36 -07:00
2008-06-20 16:46:10 -07:00
2009-09-24 07:21:06 -07:00
2008-04-28 08:58:27 -07:00
2006-10-08 12:32:36 -07:00
2009-03-27 14:43:58 -04:00
2007-05-02 19:02:35 -07:00
2009-05-02 15:36:10 -07:00
2009-05-02 15:36:10 -07:00
2009-05-02 15:36:10 -07:00
2009-05-02 15:36:10 -07:00
2009-05-02 15:36:10 -07:00
2005-04-16 15:20:36 -07:00
2006-06-30 19:25:36 +02:00
2009-04-26 09:20:38 -07:00
2009-09-24 17:16:22 -07:00
2005-04-16 15:20:36 -07:00
2009-06-16 19:47:46 -07:00
2009-06-16 19:47:46 -07:00
2009-06-16 19:47:46 -07:00
2009-06-16 19:47:46 -07:00
2009-06-16 19:47:46 -07:00
2009-03-27 17:28:43 +01:00
2009-01-15 16:39:40 -08:00
2009-05-02 15:36:10 -07:00
2008-04-28 08:58:27 -07:00
2005-04-16 15:20:36 -07:00
2009-06-11 21:36:08 -04:00
2009-09-24 07:21:06 -07:00
2009-09-24 07:21:06 -07:00
2009-01-29 18:04:44 -08:00
2009-03-19 19:29:36 -07:00
2009-04-01 08:59:16 -07:00
2009-09-23 18:13:10 -07:00
2009-05-02 15:36:10 -07:00
2009-07-12 12:22:34 -07:00
2009-06-16 19:47:46 -07:00
2009-09-09 18:30:02 +10:00
2006-06-30 19:25:36 +02:00
2009-04-01 08:59:16 -07:00
2009-09-24 09:34:43 +09:30
2009-03-31 01:14:44 +04:00
2007-07-16 09:05:37 -07:00
2009-06-16 19:47:46 -07:00
2009-06-16 19:47:46 -07:00
2009-06-16 19:47:46 -07:00
2009-06-16 19:47:46 -07:00
2009-06-16 19:47:46 -07:00
2009-06-16 19:47:46 -07:00
2009-06-16 19:47:46 -07:00
2009-01-07 11:12:53 -08:00
2009-06-16 19:47:46 -07:00
2009-01-15 16:39:40 -08:00
2009-06-16 19:47:46 -07:00
2009-06-16 19:47:46 -07:00
2009-06-16 19:47:27 -07:00
2009-06-16 19:47:46 -07:00
2009-06-16 19:47:46 -07:00
2008-04-28 08:58:27 -07:00
2007-04-17 16:36:27 -07:00
2009-06-16 19:47:46 -07:00
2009-06-16 19:47:46 -07:00
2009-06-16 19:47:46 -07:00
2009-10-12 23:40:10 -07:00
2009-09-22 07:17:43 -07:00
2009-04-01 08:59:16 -07:00
2009-09-27 14:46:05 -07:00