Re: Is POLLHUP an input-only or bidirectional condition? (was: epoll reporting events when it hasn't been asked to)

Jamie Lokier
2004-04-04T02:09:07Z

Davide Libenzi wrote:
> > Btw, I notice epoll never reports POLLNVAL. Is that correct?
>
> Yep, epoll does not allow you to push an invalid/unopen file descriptor
> inside the set. So you get an EBADF from epoll_ctl().

A comment in eventpoll.c says:

* This semaphore is acquired by ep_free() during the epoll file
* cleanup path and it is also acquired by eventpoll_release()
* if a file has been pushed inside an epoll set and it is then
* close()d without a previous call toepoll_ctl(EPOLL_CTL_DEL).

I.e. implying that the final close() is possible while it's registered.
(Btw, a function called eventpoll_release() doesn't exist).

What happens when a file descriptor is closed while it is inside the set?

I guess it's simply dropped from the set, is that right?

-- Jamie