Hi Tycho, Ping on the question below! Thanks, Michael On 10/1/20 9:45 AM, Michael Kerrisk (man-pages) wrote: > On 10/1/20 1:03 AM, Tycho Andersen wrote: >> On Wed, Sep 30, 2020 at 10:34:51PM +0200, Michael Kerrisk (man-pages) wrote: >>> Hi Tycho, >>> >>> Thanks for taking time to look at the page! >>> >>> On 9/30/20 5:03 PM, Tycho Andersen wrote: >>>> On Wed, Sep 30, 2020 at 01:07:38PM +0200, Michael Kerrisk (man-pages) wrote: > > [...] > >>>>> ┌─────────────────────────────────────────────────────┐ >>>>> │FIXME │ >>>>> ├─────────────────────────────────────────────────────┤ >>>>> │Interestingly, after the event had been received, │ >>>>> │the file descriptor indicates as writable (verified │ >>>>> │from the source code and by experiment). How is this │ >>>>> │useful? │ >>>> >>>> You're saying it should just do EPOLLOUT and not EPOLLWRNORM? Seems >>>> reasonable. >>> >>> No, I'm saying something more fundamental: why is the FD indicating as >>> writable? Can you write something to it? If yes, what? If not, then >>> why do these APIs want to say that the FD is writable? >> >> You can't via read(2) or write(2), but conceptually NOTIFY_RECV and >> NOTIFY_SEND are reading and writing events from the fd. I don't know >> that much about the poll interface though -- is it possible to >> indicate "here's a pseudo-read event"? It didn't look like it, so I >> just (ab-)used POLLIN and POLLOUT, but probably that's wrong. > > I think the POLLIN thing is fine. > > So, I think maybe I now understand what you intended with setting > POLLOUT: the notification has been received ("read") and now the > FD can be used to NOTIFY_SEND ("write") a response. Right? > > If that's correct, I don't have a problem with it. I just wonder: > is it useful? IOW: are there situations where the process doing the > NOTIFY_SEND might want to test for POLLOUT because the it doesn't > know whether a NOTIFY_RECV has occurred? > > Thanks, > > Michael > -- Michael Kerrisk Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/ Linux/UNIX System Programming Training: http://man7.org/training/