[ovs-dev] [PATCH 02/11] netlink-socket: Use recvmmsg() with kernels since 2.6.32.

Jarno Rajahalme jarno.rajahalme at nsn.com
Mon Feb 11 14:46:18 UTC 2013


Signed-off-by: Jarno Rajahalme <jarno.rajahalme at nsn.com>
---
 lib/netlink-socket.c |    7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/lib/netlink-socket.c b/lib/netlink-socket.c
index 361cb87..606f50b 100644
--- a/lib/netlink-socket.c
+++ b/lib/netlink-socket.c
@@ -426,6 +426,12 @@ nl_sock_recvm__(struct nl_sock *sock, struct mmsghdr mmsg[], int *n_msgs,
 {
     ssize_t retval;
 
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,32)
+    do {
+        retval = recvmmsg(sock->fd, mmsg, *n_msgs,
+                          wait ? MSG_WAITFORONE : MSG_DONTWAIT, NULL);
+    } while (retval < 0 && errno == EINTR);
+#else
     int n = 0;
     retval = EAGAIN;
     for (n = 0; n < *n_msgs; ++n) {
@@ -440,6 +446,7 @@ nl_sock_recvm__(struct nl_sock *sock, struct mmsghdr mmsg[], int *n_msgs,
     if (n > 0) {
         retval = n;
     }
+#endif
 
     if (retval < 0) {
         int error = errno;
-- 
1.7.10.4




More information about the dev mailing list