On Fri, Jun 22, 2018 at 01:17:22PM +0100, Al Viro wrote:
> > The problem is that call to sk_busy_loop(), which is going to be indirect
> > no matter what.
> 
>       if ->f_poll_head is NULL {
>               use ->poll
>       } else {
>               if can ll_poll (checked in ->f_mode)
>                       call ->ll_poll(), if it returns what we want - we are 
> done
>               add to ->f_poll_head
>               call ->poll_mask()

What I have for now is slightly different:

        if ((events & POLL_BUSY_LOOP) && file->f_op->poll_busy_loop)
                file->f_op->poll_busy_loop(file, events);

        if (file->f_op->poll) {
                return file->f_op->poll(file, pt);
        } else if (file_has_poll_mask(file)) {
                ...
        }

returns whatever we want part is something I want to look into
once the basics are done as it probably is non entirely trivial due to
structure of polling in the low-level network protocol.

Reply via email to