Re: [PATCH v10 1/4] cgroups: use bitmask to filter for_each_subsys

Peter Zijlstra
2015-04-22T15:42:12Z

On Wed, Apr 22, 2015 at 11:25:51AM -0400, Tejun Heo wrote:
> Hello, Aleksa.
>
> On Sun, Apr 19, 2015 at 10:22:31PM +1000, Aleksa Sarai wrote:
> > -static int need_forkexit_callback __read_mostly;
> > +static int need_fork_callback __read_mostly;
> > +static int need_exit_callback __read_mostly;
>
> These are bitmasks now, right? Let's make them unsigned int.

If, as per the below you want to use the bitmap ops; it needs be
unsigned long.

> > static struct cftype cgroup_dfl_base_files[];
> > +#define for_each_subsys_which(ss_mask, ss, ssid) \
> > + for_each_subsys((ss), (ssid)) \
> > + if ((ss_mask) & (1 << (ssid)))
>
> Maybe using for_each_set_bit() is better?
>
> #define for_each_subsys_which(ss_mask, ss, ssid) \
> for_each_set_bit(ssid, &(ss_mask), CGROUP_SUBSYS_COUNT) \
> if ((ss) = group_subsys[ssid] && false) \
> ; \
> else

Clever that ;-)