 073219e995
			
		
	
	
	073219e995
	
	
	
		
			
			cgroup_subsys is a bit messier than it needs to be.
* The name of a subsys can be different from its internal identifier
  defined in cgroup_subsys.h.  Most subsystems use the matching name
  but three - cpu, memory and perf_event - use different ones.
* cgroup_subsys_id enums are postfixed with _subsys_id and each
  cgroup_subsys is postfixed with _subsys.  cgroup.h is widely
  included throughout various subsystems, it doesn't and shouldn't
  have claim on such generic names which don't have any qualifier
  indicating that they belong to cgroup.
* cgroup_subsys->subsys_id should always equal the matching
  cgroup_subsys_id enum; however, we require each controller to
  initialize it and then BUG if they don't match, which is a bit
  silly.
This patch cleans up cgroup_subsys names and initialization by doing
the followings.
* cgroup_subsys_id enums are now postfixed with _cgrp_id, and each
  cgroup_subsys with _cgrp_subsys.
* With the above, renaming subsys identifiers to match the userland
  visible names doesn't cause any naming conflicts.  All non-matching
  identifiers are renamed to match the official names.
  cpu_cgroup -> cpu
  mem_cgroup -> memory
  perf -> perf_event
* controllers no longer need to initialize ->subsys_id and ->name.
  They're generated in cgroup core and set automatically during boot.
* Redundant cgroup_subsys declarations removed.
* While updating BUG_ON()s in cgroup_init_early(), convert them to
  WARN()s.  BUGging that early during boot is stupid - the kernel
  can't print anything, even through serial console and the trap
  handler doesn't even link stack frame properly for back-tracing.
This patch doesn't introduce any behavior changes.
v2: Rebased on top of fe1217c4f3 ("net: net_cls: move cgroupfs
    classid handling into core").
Signed-off-by: Tejun Heo <tj@kernel.org>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
Acked-by: "David S. Miller" <davem@davemloft.net>
Acked-by: "Rafael J. Wysocki" <rjw@rjwysocki.net>
Acked-by: Michal Hocko <mhocko@suse.cz>
Acked-by: Peter Zijlstra <peterz@infradead.org>
Acked-by: Aristeu Rozanski <aris@redhat.com>
Acked-by: Ingo Molnar <mingo@redhat.com>
Acked-by: Li Zefan <lizefan@huawei.com>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: Balbir Singh <bsingharora@gmail.com>
Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: Serge E. Hallyn <serue@us.ibm.com>
Cc: Vivek Goyal <vgoyal@redhat.com>
Cc: Thomas Graf <tgraf@suug.ch>
		
	
			
		
			
				
	
	
		
			50 lines
		
	
	
	
		
			1.1 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
	
		
			1.1 KiB
			
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * netprio_cgroup.h			Control Group Priority set
 | |
|  *
 | |
|  *
 | |
|  * Authors:	Neil Horman <nhorman@tuxdriver.com>
 | |
|  *
 | |
|  * This program is free software; you can redistribute it and/or modify it
 | |
|  * under the terms of the GNU General Public License as published by the Free
 | |
|  * Software Foundation; either version 2 of the License, or (at your option)
 | |
|  * any later version.
 | |
|  *
 | |
|  */
 | |
| 
 | |
| #ifndef _NETPRIO_CGROUP_H
 | |
| #define _NETPRIO_CGROUP_H
 | |
| 
 | |
| #include <linux/cgroup.h>
 | |
| #include <linux/hardirq.h>
 | |
| #include <linux/rcupdate.h>
 | |
| 
 | |
| #if IS_ENABLED(CONFIG_CGROUP_NET_PRIO)
 | |
| struct netprio_map {
 | |
| 	struct rcu_head rcu;
 | |
| 	u32 priomap_len;
 | |
| 	u32 priomap[];
 | |
| };
 | |
| 
 | |
| void sock_update_netprioidx(struct sock *sk);
 | |
| 
 | |
| static inline u32 task_netprioidx(struct task_struct *p)
 | |
| {
 | |
| 	struct cgroup_subsys_state *css;
 | |
| 	u32 idx;
 | |
| 
 | |
| 	rcu_read_lock();
 | |
| 	css = task_css(p, net_prio_cgrp_id);
 | |
| 	idx = css->cgroup->id;
 | |
| 	rcu_read_unlock();
 | |
| 	return idx;
 | |
| }
 | |
| #else /* !CONFIG_CGROUP_NET_PRIO */
 | |
| static inline u32 task_netprioidx(struct task_struct *p)
 | |
| {
 | |
| 	return 0;
 | |
| }
 | |
| 
 | |
| #define sock_update_netprioidx(sk)
 | |
| 
 | |
| #endif /* CONFIG_CGROUP_NET_PRIO */
 | |
| #endif  /* _NET_CLS_CGROUP_H */
 |