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

Davide Libenzi
2004-04-04T02:49:08Z

On Sun, 4 Apr 2004, Jamie Lokier wrote:

> 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).

Woops, you're right. The function is inside include/linux/eventpoll.h
because it has been split into an inline to handle the fast path, plus the
slow path eventpoll_release_file(). I'll send a patch to Andrew to fix
comments.

> 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?

Yes, it is automatically removed from the epoll set, iif the underlying
file* count goes to zero.

- Davide