[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v2 3/6] net: make netclient re-entrant with refc
From: |
Stefan Hajnoczi |
Subject: |
Re: [Qemu-devel] [PATCH v2 3/6] net: make netclient re-entrant with refcnt |
Date: |
Wed, 3 Jul 2013 14:01:05 +0200 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
On Wed, Jul 03, 2013 at 03:54:44PM +0800, liu ping fan wrote:
> On Wed, Jul 3, 2013 at 3:49 PM, Stefan Hajnoczi <address@hidden> wrote:
> > On Wed, Jul 03, 2013 at 11:41:19AM +0800, liu ping fan wrote:
> >> On Mon, Jul 1, 2013 at 7:50 PM, Stefan Hajnoczi <address@hidden> wrote:
> >> > On Thu, Jun 20, 2013 at 05:14:56PM +0800, liu ping fan wrote:
> >> >> On Tue, Jun 18, 2013 at 8:41 PM, Stefan Hajnoczi <address@hidden> wrote:
> >> >> > On Thu, Jun 13, 2013 at 05:03:03PM +0800, Liu Ping Fan wrote:
> >> >> >> @@ -1109,6 +1146,7 @@ void net_cleanup(void)
> >> >> >> qemu_del_net_client(nc);
> >> >> >> }
> >> >> >> }
> >> >> >> + qemu_mutex_destroy(&net_clients_lock);
> >> >> >
> >> >> > Why is it okay to iterate over net_clients here without the lock?
> >> >>
> >> >> atexit(&net_cleanup); So no other racers exist.
> >> >
> >> > What about dataplane? The device may not be reset when net_cleanup runs.
> >> >
> >> Does the func registered by atexit run after all of the other threads
> >> terminate?
> >
> > I imagine that atexit(3) runs while detached threads are still alive,
> > but I'm not sure about the exact rules. The pthread specification links
> > I found online didn't state the rules.
> >
> Haha, finally, got some hint for this. pthread_exit(3) says:
> After the last thread in a process terminates, the
> process terminates as by calling exit(3) with an exit status of zero;
> thus, process-shared
> resources are released and functions registered using atexit(3)
> are called.
That's only true for non-detached threads. A program can exit while
detached threads are running.
Stefan