Il 22/02/2013 00:38, mdroth ha scritto: > On Thu, Feb 21, 2013 at 11:12:01PM +0100, Paolo Bonzini wrote: >> Il 21/02/2013 22:07, mdroth ha scritto: >>>>> >>>>> 100% agree. In particular hw/dataplane/event-poll.c should be the first >>>>> to go away, but AioContext provides the functionality that Ping Fan >>>>> needs. But hw/dataplane/vring.c will probably be here for a longer >>> Has there been any discussion around introducing something similar to >>> AioContexts for fd handlers? This would avoid the dataplane-specific hooks >>> needed for NetClients in this series. >> >> AioContext can include file descriptors on POSIX systems (used for NBD >> and other network backends), see aio_set_fd_handler. > > Sorry, was using "fd handlers" too generally. I mean specifically for > the qemu_set_fd_handler interfaces, where we currently rely on a single list > of IOHandlerRecords for registration and a single loop to drive them. Would > be nice if we could drive subsets of those via mini main loops, similar to the > way dataplane threads would with a particular AioContext via aio_poll (or > perhaps > the exact same way)
Yes, that's what I meant actually. You can already do it for POSIX, unfortunately Windows poses extra complication because sockets are not handles. Moving more of the os_host_main_loop_wait to AioContext would be possible (timers are on the todo list, in fact), but we should only do it as need arises. Paolo > Currently, Ping Fan's patches basically do this already by accessing a > global reference to the vnet worker thread and attaching events/handlers to > it's event loop via a new set of registration functions (PATCH 7). > > I think generalizing this by basing qemu_set_fd_handler() around > AioContext, or something similar, would help to extend support to other > NetClient implementations without requiring dataplane-specific hooks > throughout.