Re: [Patch][RFC] epoll and half closed TCP connections

Davide Libenzi (davidel@xmailserver.org)
Sat, 12 Jul 2003 14:41:25 -0700 (PDT)


On Sat, 12 Jul 2003, Eric Varsanyi wrote:

> I guess my only argument would be that edge triggered mode isn't really
> workable with TCP connections if there's no way to solve the ambiguity
> between EOF and no data in buffer (at least w/o an extra syscall). I just
> realized that the race you mention in the man page (reading data from
> the 'next' event that hasn't been polled into user mode yet) will lead to
> the same issue: how do you know if you got this event because you consumed
> the data on the previous interrupt or if this is an EOF condition.

(Sorry, I missed this)
You can work that out very easily. When your read/write returns a lower
number of bytes, it means that it is time to stop processing this fd. If
events happened meanwhile, you will get them at the next epoll_wait(). If
not, the next time they'll happen. There's no blind spot if you follow
this simple rule, and you do not even have the extra syscall with EAGAIN.

- Davide

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