On Tue, Apr 15, 2008 at 08:40:09AM -0500, Anthony Liguori wrote: > Avi Kivity wrote: > >Anthony Liguori wrote: > >> > >>BTW, when we set O_ASYNC on the tap fd, we're eliminating > >>O_NONBLOCK. This means that we have to poll loop select() when > >>readv()'ing packets instead of just reading until hitting AGAIN. > >>This means at least an extra syscall per packet.
Yeah, I noticed that problem too. > > > >I didn't know that O_ASYNC and O_NONBLOCK were mutually exclusive. > >Can you point me at the relevant documentation? > > I don't know that they are, but we're doing an: > > fcntl(fd, F_SETFL, O_ASYNC); > > F_SETFL is not additive so the previous O_NONBLOCK gets dropped. Fortunately read() will only be issued for the tap fd when select() returns with its fd set. And when that happens there is always a packet available for reading... ------------------------------------------------------------------------- This SF.net email is sponsored by the 2008 JavaOne(SM) Conference Don't miss this year's exciting event. There's still time to save $100. Use priority code J8TL2D2. http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone _______________________________________________ kvm-devel mailing list kvm-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/kvm-devel