Re: [PATCH v8 net-next 5/7] net: simple poll/select low latency socketpoll

From: Eliezer Tamir
Date: Tue Jun 04 2013 - 04:53:29 EST


On 03/06/2013 16:59, Eliezer Tamir wrote:
On 03/06/2013 16:15, Eric Dumazet wrote:
On Mon, 2013-06-03 at 11:02 +0300, Eliezer Tamir wrote:
sock = file->private_data;
- return sock->ops->poll(file, sock, wait);
+
+ poll_result = sock->ops->poll(file, sock, wait);
+
+ if (!(poll_result & (POLLRDNORM | POLLERR | POLLRDHUP |
POLLHUP)) &&
+ sk_valid_ll(sock->sk) && sk_poll_ll(sock->sk, 1))
+ poll_result = sock->ops->poll(file, sock, NULL);
+
+ return poll_result;
}

static int sock_mmap(struct file *file, struct vm_area_struct *vma)



In fact, for TCP, POLLOUT event being ready can also be triggered by
incoming messages, as the ACK might allow the user application to push
more data in the write queue.

And you might check wait->_key to avoid testing flags that user is not
interested into.

yes, comparing to _key is more correct.
In any case this needs to be completely rewritten for support for
working well with a large number of sockets.


Is it possible for wait to be NULL? (do we need to check for that?)
I see that poll_does_not_wait() checks for that, but I could not find
anywhere this is actually done.

-Eliezer

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/