On Tue, May 07, 2013 at 01:46:48PM +0800, Liu Ping Fan wrote: > summary: > patch1: GSource event abstraction > patch2~6: port network backend to glib > patch7~10: make network core re-entrant > patch11~14: port the slirp backend onto glib > > The slirp->lock's deadlock problem has been eliminated and works fine. > And other components seems more stable, so I change from RFCv- to v- > > > > > rfcv5->v1: > 1. re-arrange logic for net/socket.c > > rfcv4->rfcv5: > 1.use GList to reimplement EventsGSource > 2.make readable()/writable() return events which the backend is interested > in > 3.fix the slirp->lock's potential deadlock issue > > rfcv3->rfcv4: > 1.separate GSource event to dedicated file > 2.integrated with net core re-entrant > 3.make slirp/ re-entrant > > rfcv2->rfcv3: > 1.drop hub and the frontend(virtio net) > 2.split the patch for NetClientSource > > rfcv1->rfcv2: > 1.NetClientState can associate with up to 2 GSource, for virtio net, one > for tx, one for rx, > so vq can run on different threads. > 2.make network front-end onto glib, currently virtio net dataplane > > > > Liu Ping Fan (14): > util: introduce gsource event abstraction > net: introduce bind_ctx to NetClientInfo > net: port vde onto GSource > net: port socket to GSource > net: port tap onto GSource > net: port tap-win32 onto GSource > net: hub use lock to protect ports list > net: introduce lock to protect NetQueue > net: introduce lock to protect NetClientState's peer's access > net: make netclient re-entrant with refcnt > slirp: make timeout local > slirp: make slirp event dispatch based on slirp instance, not global > slirp: handle race condition > slirp: use lock to protect the slirp_instances > > hw/qdev-properties-system.c | 14 + > include/net/net.h | 12 + > include/qemu/module.h | 2 + > main-loop.c | 4 - > net/hub.c | 28 ++- > net/net.c | 123 ++++++++- > net/queue.c | 15 +- > net/slirp.c | 35 +++- > net/socket.c | 194 +++++++++++--- > net/tap-win32.c | 31 ++- > net/tap.c | 64 ++++- > net/vde.c | 31 ++- > slirp/if.c | 57 +++- > slirp/libslirp.h | 7 +- > slirp/main.h | 3 +- > slirp/mbuf.h | 2 + > slirp/slirp.c | 670 > ++++++++++++++++++++++--------------------- > slirp/slirp.h | 11 +- > slirp/socket.c | 2 + > slirp/socket.h | 1 + > stubs/slirp.c | 8 - > util/Makefile.objs | 1 + > util/event_gsource.c | 157 ++++++++++ > util/event_gsource.h | 49 ++++ > 24 files changed, 1105 insertions(+), 416 deletions(-) > create mode 100644 util/event_gsource.c > create mode 100644 util/event_gsource.h
Hi Ping Fan, Sorry for the slow review, I'm focussing on QEMU 1.5 at the moment but will look at this series soon. Stefan