win/vchan: remove outstanding evtchn events on libvchan_wait
Windows evtchn driver can double fire on one event (details in xenpci/evtchn_device_interface.c:EvtChn_EvtIoWrite). Less intrusive way of fixing it is just remove all events from queue on libvchan_wait (to prevent queue fill). This won't hurt because we are interested in events only sent after xc_evtchn_unmask call which is one line below.
This commit is contained in:
parent
c0455ac641
commit
ab52153ab2
@ -77,7 +77,7 @@ int libvchan_wait(struct libvchan *ctrl)
|
|||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
ret = xc_evtchn_pending(ctrl->evfd);
|
ret = xc_evtchn_pending_with_flush(ctrl->evfd);
|
||||||
if (ret!=-1 && xc_evtchn_unmask(ctrl->evfd, ctrl->evport))
|
if (ret!=-1 && xc_evtchn_unmask(ctrl->evfd, ctrl->evport))
|
||||||
return -1;
|
return -1;
|
||||||
if (ret!=-1 && libvchan_is_eof(ctrl))
|
if (ret!=-1 && libvchan_is_eof(ctrl))
|
||||||
|
Loading…
Reference in New Issue
Block a user