On Thu, 2007-07-05 at 10:58 +0200, Johannes Berg wrote: > On Thu, 2007-07-05 at 10:53 +0200, Ingo Molnar wrote: > > > > +#ifdef CONFIG_LOCKDEP > > > +/* > > > + * HACK! This really should call lockdep_init_map() but can't > > > + * because there's no requirement to initialise work structs > > > + * at runtime. This works because subclass == 0. > > > + * > > > + * NB: because we have to copy the lockdep_map, setting .key > > > + * here is required! > > > + */ > > > > why do you consider this a hack? A static object is a static object, and > > its own address is its key. That's what we have for like 80% of all the > > spinlocks in the kernel. Static initialization is not as flexible as > > dynamic initialization, but the lockdep engine handles it. Am i missing > > something? > > Well, there's nothing in lockdep that guarantees that. I'd be much more > comfortable doing that when lockdep had a STATIC_LOCKDEP_MAP_INIT() > macro that looks like my __WORK_INIT_LOCKDEP_MAP() macro because then > people changing lockdep would see that they cannot rely on > lockdep_init_map() having been called (unless subclass != 0)
You could of course make this STATIC_LOCKDEP_MAP_INIT() and place it near lockdep_init_map() :-) That way it would be clear that changes to either ought to be reflected in the other. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/