[$] EPOLL_CTL_DISABLE, epoll, and API design

In an article last week, we saw that
the EPOLL_CTL_DISABLE operation provides a
way for multithreaded applications that cache information about file
descriptors to safely delete those file descriptors from an epoll interest
list. This week, we revisit the EPOLL_CTL_DISABLE story from a
different angle, with the aim of drawing some lessons about the design of
the APIs that the kernel presents to user space.