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