Messages in this thread |  | | Subject | Re: [PATCH v2 4/5] locking/lockdep: Make class->ops a percpu counter | From | Waiman Long <> | Date | Wed, 3 Oct 2018 09:57:24 -0400 |
| |
On 10/03/2018 03:48 AM, Peter Zijlstra wrote: > On Tue, Oct 02, 2018 at 04:19:19PM -0400, Waiman Long wrote: >> +DEFINE_PER_CPU(unsigned long [MAX_LOCKDEP_KEYS], lock_class_ops); >> @@ -179,9 +181,30 @@ DECLARE_PER_CPU(struct lockdep_stats, lockdep_stats); >> } \ >> __total; \ >> }) >> + >> +static inline void debug_class_ops_inc(struct lock_class *class) >> +{ >> + int idx; >> + >> + idx = class - lock_classes; >> + __this_cpu_inc(lock_class_ops[idx]); >> +} >> + >> +static inline unsigned long debug_class_ops_read(struct lock_class *class) >> +{ >> + int idx, cpu; >> + unsigned long ops = 0; >> + >> + idx = class - lock_classes; >> + for_each_possible_cpu(cpu) >> + ops += per_cpu(lock_class_ops[idx], cpu); >> + return ops; >> +} > Would it make sense to stick that in struct lockdep_stats ? > > A little something like: > > struct lockdep_stats { > /* ... */ > int lock_class_ops[MAX_LOCKDEP_KEYS]; > }; > > and then use: > > debug_atomic_inc(lock_class_ops[idx]); > Yes, I can certainly do that. Thanks for pointing this out. Will post an updated patch just for this one.
Cheers, Longman
|  |