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-04-08 11:51:46 -07:00
2009-02-10 00:41:58 +01:00
2009-09-20 20:25:03 +02:00
2009-01-29 14:16:51 +01:00
2009-01-29 14:17:01 +01:00
2009-08-08 17:44:11 +02:00
2009-04-07 13:36:36 +02:00
2009-08-27 17:12:52 +02:00
2009-06-11 23:31:52 +02:00
2009-06-11 23:31:52 +02:00
2009-03-27 14:43:57 -04:00
2009-04-10 20:27:13 +02:00
2009-04-29 06:54:34 +01:00
2009-01-21 17:26:06 +09:00
2009-08-31 09:35:45 +02:00
2009-06-13 15:37:30 +02:00
2009-09-10 10:46:49 +03:00
2009-09-10 08:33:12 +03:00
2009-07-30 16:03:46 +09:30
2009-05-18 09:21:04 +02:00
2009-02-05 22:30:14 +01:00
2009-02-02 23:27:09 +05:30
2009-08-31 11:09:40 +02:00
2009-09-20 20:18:57 +02:00
2009-06-15 12:40:02 +02:00
2009-04-01 08:59:16 -07:00
2009-01-31 00:19:32 +05:30
2009-03-27 14:43:57 -04:00
2009-09-22 19:57:51 -07:00
2009-07-19 18:27:52 +02:00
2009-09-20 20:19:34 +02:00
2009-08-21 21:43:46 +02:00
2009-06-15 12:40:02 +02:00