Messages in this thread | | | Date | Fri, 26 May 2023 12:27:51 -0400 | Subject | Re: [RFC][PATCH 2/2] sched: Use fancy new guards | From | Mathieu Desnoyers <> |
| |
On 5/26/23 12:25, Greg KH wrote: > On Fri, May 26, 2023 at 05:05:51PM +0200, Peter Zijlstra wrote: >> Convert kernel/sched/core.c to use the fancy new guards to simplify >> the error paths. > > That's slightly crazy... > > I like the idea, but is this really correct: > > >> >> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> >> --- >> kernel/sched/core.c | 1223 +++++++++++++++++++++++---------------------------- >> kernel/sched/sched.h | 39 + >> 2 files changed, 595 insertions(+), 667 deletions(-) >> >> --- a/kernel/sched/core.c >> +++ b/kernel/sched/core.c >> @@ -1097,24 +1097,21 @@ int get_nohz_timer_target(void) >> >> hk_mask = housekeeping_cpumask(HK_TYPE_TIMER); >> >> - rcu_read_lock(); >> - for_each_domain(cpu, sd) { >> - for_each_cpu_and(i, sched_domain_span(sd), hk_mask) { >> - if (cpu == i) >> - continue; >> + void_scope(rcu) { >> + for_each_domain(cpu, sd) { >> + for_each_cpu_and(i, sched_domain_span(sd), hk_mask) { >> + if (cpu == i) >> + continue; >> >> - if (!idle_cpu(i)) { >> - cpu = i; >> - goto unlock; >> + if (!idle_cpu(i)) >> + return i; > > You can call return from within a "scope" and it will clean up properly? > > I tried to read the cpp "mess" but couldn't figure out how to validate > this at all, have a set of tests for this somewhere? > > Anyway, the naming is whack, but I don't have a proposed better name, > except you might want to put "scope_" as the prefix not the suffix, but > then that might look odd to, so who knows.
FWIW C++ has std::scoped_lock. So perhaps using a similar wording may help ?
Thanks,
Mathieu
> > But again, the idea is good, it might save us lots of "you forgot to > clean this up on the error path" mess that we are getting constant churn > for these days... > > thanks, > > greg k-h
-- Mathieu Desnoyers EfficiOS Inc. https://www.efficios.com
| |