Re: tip: demise of tsk_cpus_allowed() and tsk_nr_cpus_allowed()

From: Thomas Gleixner
Date: Thu Feb 09 2017 - 04:36:17 EST


On Thu, 9 Feb 2017, Ingo Molnar wrote:
> And -rt would do something like this in migration_disable()/enable():
>
> t->cpus_ptr = &cpumask_of(task_cpu(p));
> t->nr_cpus = 1;
>
> ...
>
> t->cpus_ptr = &t->cpus_mask;
> t->nr_cpus = cpumask_weight(t->cpus_mask);
>
> In addition to that we could cache the weight of the cpumask as an additional
> optimization:
>
> t->cpus_ptr = &t->cpus_mask;
> t->nr_cpus = t->cpus_mask_weight;
>
> It all looks like a pretty natural construct to me. The migration_disabled() flag
> spreads almost a hundred branches all across the scheduler.

I'm fine with that. Making the pointer const is clever and prevents people
from manipulating the wrong thing. If would be great if you could rework it
that way instead of just ripping all out.

Thanks,

tglx