[ltt-dev] [rp] [PATCH urcu 4/4] Provide cleanup interfaces for per-CPU and per-thread call_rcu threads

Paul E. McKenney paulmck at linux.vnet.ibm.com
Wed Mar 9 19:42:11 EST 2011


On Wed, Mar 09, 2011 at 12:51:17PM -0500, Mathieu Desnoyers wrote:
> * Paolo Bonzini (pbonzini at redhat.com) wrote:
> > On 03/09/2011 05:54 PM, Mathieu Desnoyers wrote:
> > > I'm just concerned about the execution order of the atfork callbacks. If
> > > we provide the callbacks directly, then the application can take care to
> > > call the various callbacks in a known order (e.g. first execute the
> > > call_rcu functions, and then the RCU lib functions).
> > > 
> > > If we use atfork, the order will be pretty much random, and I'm not sure
> > > I like that.
> > 
> > From the man page:
> > 
> >        The  order  of calls to pthread_atfork() is significant. The parent and
> >        child fork handlers shall be called in the order  in  which  they  were
> >        established  by  calls  to pthread_atfork().  The prepare fork handlers
> >        shall be called in the opposite order.
> > 
> > It looks like call_rcu's atfork should be done first.
> 
> And we would have to guarantee the order by numbering the call_rcu and
> urcu constructors with reverse priority order, am I correct ? It sounds
> like a recipe for an hidden bug, and I would rather prefer to let the
> application deal with this.
> 
> Moreover, in the case of URCU-bp, the application does not have to use
> pthreads (only the UST user-space tracer library does): we are relying
> on direct override of the fork() symbol. So if we ever want to use
> call_rcu in libust, having direct access to the before/after fork
> symbols gives us more control on the call order.

OK, fair enough, I will provide the three functions and document how
they can be used.

							Thanx, Paul




More information about the lttng-dev mailing list