Re: [tip: locking/urgent] locking/ww_mutex: Treat ww_mutex_lock() like a trylock

From: Peter Zijlstra
Date: Wed Mar 17 2021 - 15:59:40 EST


On Wed, Mar 17, 2021 at 02:32:27PM -0400, Waiman Long wrote:
> On 3/17/21 1:45 PM, Peter Zijlstra wrote:

> > > +# define __DEP_MAP_WW_MUTEX_INITIALIZER(lockname, class) \
> > > + , .dep_map = { \
> > > + .key = &(class).mutex_key, \
> > > + .name = (class).mutex_name, \
> > ,name = #class "_mutex", \
> >
> > and it 'works', but shees!
>
> The name string itself may be duplicated for multiple instances of
> DEFINE_WW_MUTEX(). Do you want to keep DEFINE_WW_MUTEX() or just use
> ww_mutex_init() for all?

So linkers can merge literals, but no guarantee. But yeah, lets just
kill the thing, less tricky macro crud to worry about.

> I notice that the problem with DEFINE_WW_MUTEX is that the ww_mutex
> themselves has null key instead of the same key from the ww_class as with
> ww_mutex_init().

Correct.