Messages in this thread | | | Date | Fri, 6 Oct 2017 16:39:42 -0700 (PDT) | From | Stefano Stabellini <> | Subject | Re: [PATCH v4 11/13] xen/pvcalls: implement poll command |
| |
On Fri, 22 Sep 2017, Boris Ostrovsky wrote: > > +static unsigned int pvcalls_front_poll_passive(struct file *file, > > + struct pvcalls_bedata *bedata, > > + struct sock_mapping *map, > > + poll_table *wait) > > +{ > > + int notify, req_id, ret; > > + struct xen_pvcalls_request *req; > > + > > + if (test_bit(PVCALLS_FLAG_ACCEPT_INFLIGHT, > > + (void *)&map->passive.flags)) { > > + uint32_t req_id = READ_ONCE(map->passive.inflight_req_id); > > + > > + if (req_id != PVCALLS_INVALID_ID && > > + READ_ONCE(bedata->rsp[req_id].req_id) == req_id) > > + return POLLIN | POLLRDNORM; > > > Do we need to clear PVCALLS_FLAG_ACCEPT_INFLIGHT? Or do we expect a > (subsequent?) accept() to do that?
No need to clear, here we only need to say whether there is data to read or not. Subsequent accept calls will clear PVCALLS_FLAG_ACCEPT_INFLIGHT.
> > + > > + poll_wait(file, &map->passive.inflight_accept_req, wait); > > + return 0; > > + } > > + >
| |