Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1307548
| From | Juri Lelli <juri.lelli@arm.com> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | Re: [RFC PATCH 04/19] cpufreq: bring data structures close to their locks |
| Date | 2016-01-12 16:30 +0100 |
| Message-ID | <qQ93t-2Pd-47@gated-at.bofh.it> (permalink) |
| References | (2 earlier) <qPSP1-7w-31@gated-at.bofh.it> <qQ3AJ-7rn-5@gated-at.bofh.it> <qQ5jb-cc-3@gated-at.bofh.it> <qQ5Mg-nk-43@gated-at.bofh.it> <qQ6oW-Sx-21@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
On 12/01/16 12:36, Juri Lelli wrote:
> On 12/01/16 12:58, Peter Zijlstra wrote:
> > On Tue, Jan 12, 2016 at 11:21:25AM +0000, Juri Lelli wrote:
> > > I tried to see if something like for_each_domain() can be done, but here
> > > we use list_for_each_entry() macro. Peter, do you mean something like
> > > the following?
> > >
> > > diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c
> > > index 78b1e2f..1a847a6 100644
> > > --- a/drivers/cpufreq/cpufreq.c
> > > +++ b/drivers/cpufreq/cpufreq.c
> > > @@ -39,6 +39,7 @@
> > > static LIST_HEAD(cpufreq_governor_list);
> > > static DEFINE_MUTEX(cpufreq_governor_mutex);
> > > #define for_each_governor(__governor) \
> > > + lockdep_assert_held(&cpufreq_governor_mutex); \
> > > list_for_each_entry(__governor, &cpufreq_governor_list, governor_list)
> >
> > That fails for things like:
> >
> > if (blah)
> > for_each_governor(...) {
> > }
> >
> > which looks like valid C -- even though our Coding Style says the if
> > should have { } on.
> >
> > I was thinking of either open coding the for statement and adding it to
> > the first statement like:
> >
> > #define for_each_governor(__g) \
> > for (_g = list_first_entry(&cpufreq_governor_list, typeof(*_g), governor_list, lockdep_assert_held(), \
> > ..... )
> >
> > Or use something like this:
> >
> > lkml.kernel.org/r/20150422154212.GE3007@worktop.Skamania.guest
> >
> > #define for_each_governor(_g) \
> > list_for_each_entry(_g, &cpufreq_governor_list, governor_list)
> > if (lockdep_assert_held(..), false)
> > ;
> > else
> >
> > Which should preserve C syntax rules.
> >
>
> Oh, nice this! I'll try it.
>
This second approach doesn't really play well with lockdep_assert_held
definition, right?
However, it seems I could make this work with
#ifdef CONFIG_LOCKDEP
#define for_each_governor(__gov) \
for (__gov = list_first_entry(&cpufreq_governor_list, \
typeof(*__gov), \
governor_list), \
WARN_ON(debug_locks && \
!lockdep_is_held(&cpufreq_governor_mutex)); \
&__gov->governor_list != (&cpufreq_governor_list); \
__gov = list_next_entry(__gov, governor_list))
#else /* !CONFIG_LOCKDEP */
#define for_each_governor(__gov) \
list_for_each_entry(__gov, &cpufreq_governor_list, governor_list)
#endif /* CONFIG_LOCKDEP */
Thanks,
- Juri
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
[RFC PATCH 04/19] cpufreq: bring data structures close to their locks Juri Lelli <juri.lelli@arm.com> - 2016-01-11 18:50 +0100
Re: [RFC PATCH 04/19] cpufreq: bring data structures close to their locks Peter Zijlstra <peterz@infradead.org> - 2016-01-11 23:10 +0100
Re: [RFC PATCH 04/19] cpufreq: bring data structures close to their locks "Rafael J. Wysocki" <rjw@rjwysocki.net> - 2016-01-12 00:10 +0100
Re: [RFC PATCH 04/19] cpufreq: bring data structures close to their locks Peter Zijlstra <peterz@infradead.org> - 2016-01-12 09:30 +0100
Re: [RFC PATCH 04/19] cpufreq: bring data structures close to their locks Juri Lelli <juri.lelli@arm.com> - 2016-01-12 11:50 +0100
Re: [RFC PATCH 04/19] cpufreq: bring data structures close to their locks "Rafael J. Wysocki" <rjw@rjwysocki.net> - 2016-01-12 17:50 +0100
Re: [RFC PATCH 04/19] cpufreq: bring data structures close to their locks Peter Zijlstra <peterz@infradead.org> - 2016-01-11 23:10 +0100
Re: [RFC PATCH 04/19] cpufreq: bring data structures close to their locks Viresh Kumar <viresh.kumar@linaro.org> - 2016-01-12 10:40 +0100
Re: [RFC PATCH 04/19] cpufreq: bring data structures close to their locks Juri Lelli <juri.lelli@arm.com> - 2016-01-12 12:30 +0100
Re: [RFC PATCH 04/19] cpufreq: bring data structures close to their locks Peter Zijlstra <peterz@infradead.org> - 2016-01-12 13:00 +0100
Re: [RFC PATCH 04/19] cpufreq: bring data structures close to their locks Juri Lelli <juri.lelli@arm.com> - 2016-01-12 13:40 +0100
Re: [RFC PATCH 04/19] cpufreq: bring data structures close to their locks Juri Lelli <juri.lelli@arm.com> - 2016-01-12 16:30 +0100
Re: [RFC PATCH 04/19] cpufreq: bring data structures close to their locks Peter Zijlstra <peterz@infradead.org> - 2016-01-12 17:00 +0100
csiph-web