cgroup: Wrap subsystem selection macro

Before we are able to define all subsystem ids at compile time we need
a more fine grained control what gets defined when we include
cgroup_subsys.h. For example we define the enums for the subsystems or
to declare for struct cgroup_subsys (builtin subsystem) by including
cgroup_subsys.h and defining SUBSYS accordingly.

Currently, the decision if a subsys is used is defined inside the
header by testing if CONFIG_*=y is true. By moving this test outside
of cgroup_subsys.h we are able to control it on the include level.

This is done by introducing IS_SUBSYS_ENABLED which then is defined
according the task, e.g. is CONFIG_*=y or CONFIG_*=m.

Signed-off-by: Daniel Wagner <daniel.wagner@bmw-carit.de>
Signed-off-by: Tejun Heo <tj@kernel.org>
Acked-by: Li Zefan <lizefan@huawei.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
Cc: Gao feng <gaofeng@cn.fujitsu.com>
Cc: Jamal Hadi Salim <jhs@mojatatu.com>
Cc: John Fastabend <john.r.fastabend@intel.com>
Cc: netdev@vger.kernel.org
Cc: cgroups@vger.kernel.org
This commit is contained in:
Daniel Wagner 2012-09-12 16:12:05 +02:00 committed by Tejun Heo
parent be45c900fd
commit 5fc0b02544
3 changed files with 17 additions and 12 deletions

View file

@ -46,10 +46,12 @@ extern const struct file_operations proc_cgroup_operations;
/* Define the enumeration of all builtin cgroup subsystems */ /* Define the enumeration of all builtin cgroup subsystems */
#define SUBSYS(_x) _x ## _subsys_id, #define SUBSYS(_x) _x ## _subsys_id,
#define IS_SUBSYS_ENABLED(option) IS_BUILTIN(option)
enum cgroup_subsys_id { enum cgroup_subsys_id {
#include <linux/cgroup_subsys.h> #include <linux/cgroup_subsys.h>
__CGROUP_TEMPORARY_PLACEHOLDER __CGROUP_TEMPORARY_PLACEHOLDER
}; };
#undef IS_SUBSYS_ENABLED
#undef SUBSYS #undef SUBSYS
/* /*
* This define indicates the maximum number of subsystems that can be loaded * This define indicates the maximum number of subsystems that can be loaded
@ -528,7 +530,9 @@ struct cgroup_subsys {
}; };
#define SUBSYS(_x) extern struct cgroup_subsys _x ## _subsys; #define SUBSYS(_x) extern struct cgroup_subsys _x ## _subsys;
#define IS_SUBSYS_ENABLED(option) IS_BUILTIN(option)
#include <linux/cgroup_subsys.h> #include <linux/cgroup_subsys.h>
#undef IS_SUBSYS_ENABLED
#undef SUBSYS #undef SUBSYS
static inline struct cgroup_subsys_state *cgroup_subsys_state( static inline struct cgroup_subsys_state *cgroup_subsys_state(

View file

@ -7,73 +7,73 @@
/* */ /* */
#ifdef CONFIG_CPUSETS #if IS_SUBSYS_ENABLED(CONFIG_CPUSETS)
SUBSYS(cpuset) SUBSYS(cpuset)
#endif #endif
/* */ /* */
#ifdef CONFIG_CGROUP_DEBUG #if IS_SUBSYS_ENABLED(CONFIG_CGROUP_DEBUG)
SUBSYS(debug) SUBSYS(debug)
#endif #endif
/* */ /* */
#ifdef CONFIG_CGROUP_SCHED #if IS_SUBSYS_ENABLED(CONFIG_CGROUP_SCHED)
SUBSYS(cpu_cgroup) SUBSYS(cpu_cgroup)
#endif #endif
/* */ /* */
#ifdef CONFIG_CGROUP_CPUACCT #if IS_SUBSYS_ENABLED(CONFIG_CGROUP_CPUACCT)
SUBSYS(cpuacct) SUBSYS(cpuacct)
#endif #endif
/* */ /* */
#ifdef CONFIG_MEMCG #if IS_SUBSYS_ENABLED(CONFIG_MEMCG)
SUBSYS(mem_cgroup) SUBSYS(mem_cgroup)
#endif #endif
/* */ /* */
#ifdef CONFIG_CGROUP_DEVICE #if IS_SUBSYS_ENABLED(CONFIG_CGROUP_DEVICE)
SUBSYS(devices) SUBSYS(devices)
#endif #endif
/* */ /* */
#ifdef CONFIG_CGROUP_FREEZER #if IS_SUBSYS_ENABLED(CONFIG_CGROUP_FREEZER)
SUBSYS(freezer) SUBSYS(freezer)
#endif #endif
/* */ /* */
#ifdef CONFIG_NET_CLS_CGROUP #if IS_SUBSYS_ENABLED(CONFIG_NET_CLS_CGROUP)
SUBSYS(net_cls) SUBSYS(net_cls)
#endif #endif
/* */ /* */
#ifdef CONFIG_BLK_CGROUP #if IS_SUBSYS_ENABLED(CONFIG_BLK_CGROUP)
SUBSYS(blkio) SUBSYS(blkio)
#endif #endif
/* */ /* */
#ifdef CONFIG_CGROUP_PERF #if IS_SUBSYS_ENABLED(CONFIG_CGROUP_PERF)
SUBSYS(perf) SUBSYS(perf)
#endif #endif
/* */ /* */
#ifdef CONFIG_NETPRIO_CGROUP #if IS_SUBSYS_ENABLED(CONFIG_NETPRIO_CGROUP)
SUBSYS(net_prio) SUBSYS(net_prio)
#endif #endif
/* */ /* */
#ifdef CONFIG_CGROUP_HUGETLB #if IS_SUBSYS_ENABLED(CONFIG_CGROUP_HUGETLB)
SUBSYS(hugetlb) SUBSYS(hugetlb)
#endif #endif

View file

@ -93,6 +93,7 @@ static DEFINE_MUTEX(cgroup_root_mutex);
* cgroup_mutex. * cgroup_mutex.
*/ */
#define SUBSYS(_x) &_x ## _subsys, #define SUBSYS(_x) &_x ## _subsys,
#define IS_SUBSYS_ENABLED(option) IS_BUILTIN(option)
static struct cgroup_subsys *subsys[CGROUP_SUBSYS_COUNT] = { static struct cgroup_subsys *subsys[CGROUP_SUBSYS_COUNT] = {
#include <linux/cgroup_subsys.h> #include <linux/cgroup_subsys.h>
}; };