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
..
2008-08-12 19:54:09 +01:00
2009-08-13 20:34:36 +02:00
2008-05-17 22:55:16 +01:00
2008-04-29 08:06:29 -07:00
2008-05-30 10:33:49 +02:00
2008-02-04 13:21:03 +00:00
2009-01-07 11:13:13 -08:00
2009-10-12 23:40:10 -07:00
2006-06-30 19:25:36 +02:00
2006-03-15 23:17:30 +00:00
2008-08-07 09:55:48 +01:00
2009-07-09 16:10:51 +01:00
2009-02-27 20:57:46 +00:00
2009-01-02 12:18:53 +00:00
2009-01-02 12:34:55 +00:00
2009-01-06 10:44:43 -08:00
2008-07-03 14:25:58 +01:00
2009-05-23 11:36:20 +01:00
2009-10-02 22:34:32 +01:00
2009-10-02 22:34:32 +01:00
2009-09-26 10:06:53 -07:00
2009-03-12 21:33:03 +00:00
2008-12-12 11:15:45 +01:00
2009-10-02 22:32:34 +01:00
2009-07-24 12:34:59 +01:00
2009-07-24 12:32:54 +01:00
2009-09-21 06:27:08 +02:00
2008-09-06 12:10:45 +01:00
2009-08-17 00:00:41 +01:00
2009-01-08 15:53:08 +00:00
2006-07-01 19:56:48 +01:00
2008-09-26 10:36:41 -05:00
2008-09-01 12:06:33 +01:00
2009-09-21 16:39:12 +01:00
2009-02-10 09:59:19 +00:00
2009-09-24 21:22:33 +01:00
2009-07-24 12:32:59 +01:00
2009-07-24 12:32:54 +01:00
2009-07-24 12:34:58 +01:00
2007-04-21 20:34:58 +01:00
2008-02-04 13:21:03 +00:00
2009-07-21 17:21:28 +01:00
2009-09-15 22:11:05 +01:00
2009-09-14 17:48:14 -07:00
2006-03-27 15:18:50 +01:00
2009-05-28 13:52:05 +01:00
2009-09-28 18:06:21 +01:00
2009-09-28 18:06:21 +01:00
2009-07-21 17:21:28 +01:00
2009-09-23 18:13:10 -07:00
2009-04-20 23:02:51 -04:00
2009-09-15 22:11:05 +01:00
2009-09-15 22:11:05 +01:00
2008-11-10 14:14:11 +00:00
2009-02-12 13:21:17 +00:00
2009-09-28 18:06:21 +01:00
2009-07-24 12:32:54 +01:00
2009-09-22 21:01:40 +01:00
2008-09-06 12:10:45 +01:00