On Wed, Jul 1, 2009 at 8:16 PM, KAMEZAWA Hiroyuki<kamezawa.hiroyu@xxxxxxxxxxxxxx> wrote: > > Hm, then, moving SUBSYS() macro to linux/cgroup_subsys.h is a sane way, I think. > IMHO, it's not very good habit that cgroup_subsys.h is parsed in different ways in > cgroup.h and cgroup.c > > I think cgroup_subsys.h like following is much simpler even if it's not very > sophisticated. > == > #define SUBSYSID(_name) _name ## _subsys_id, > #define SUBSYSP(_name) &_name ## _subsys, You'd also need a macro for the extern declaration of each *_subsys variable. So it would be 8 lines of boilerplate for each subsystem, plus adding to the CGROUP_ALL_* macros below. Yes, it could be done that way, but I'm not convinced that it's hugely simpler. The state of things prior to this patch series is that to do something at compile time that involves all subsystems (currently we have three cases - defining the subsys_id enum, declaring the extern subsys structures, and defining the array of subsys structure pointers) you just define the macro SUBSYS to expand to the code fragment you want to repeat and include cgroup_subsys.h. This is very simple from the subsystem writer's PoV, and not too tricky in the core framework. I agree that this patch does increase the complexity in the framework code, since the framework code needs to deal with all the non-multi subsystems ahead of all multi-subsystems, and so has to do two passes through the file. OK, thinking more about this, your earlier suggestion of splitting cgroup_subsys.h and using a single SUBSYS macro would achieve this more simply after all. Let me try that and see how it looks. Paul _______________________________________________ Containers mailing list Containers@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/containers