Messages in this thread | | | Date | Sat, 12 Jul 2003 14:41:25 -0700 (PDT) | From | Davide Libenzi <> | Subject | Re: [Patch][RFC] epoll and half closed TCP connections |
| |
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/
| |