Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 761b3ef5 authored by Li Zefan's avatar Li Zefan Committed by Tejun Heo
Browse files

cgroup: remove cgroup_subsys argument from callbacks



The argument is not used at all, and it's not necessary, because
a specific callback handler of course knows which subsys it
belongs to.

Now only ->pupulate() takes this argument, because the handlers of
this callback always call cgroup_add_file()/cgroup_add_files().

So we reduce a few lines of code, though the shrinking of object size
is minimal.

 16 files changed, 113 insertions(+), 162 deletions(-)

   text    data     bss     dec     hex filename
5486240  656987 7039960 13183187         c928d3 vmlinux.o.orig
5486170  656987 7039960 13183117         c9288d vmlinux.o

Signed-off-by: default avatarLi Zefan <lizf@cn.fujitsu.com>
Signed-off-by: default avatarTejun Heo <tj@kernel.org>
parent 61d1d219
Loading
Loading
Loading
Loading
+11 −15
Original line number Original line Diff line number Diff line
@@ -558,8 +558,7 @@ Each subsystem may export the following methods. The only mandatory
methods are create/destroy. Any others that are null are presumed to
methods are create/destroy. Any others that are null are presumed to
be successful no-ops.
be successful no-ops.


struct cgroup_subsys_state *create(struct cgroup_subsys *ss,
struct cgroup_subsys_state *create(struct cgroup *cgrp)
				   struct cgroup *cgrp)
(cgroup_mutex held by caller)
(cgroup_mutex held by caller)


Called to create a subsystem state object for a cgroup. The
Called to create a subsystem state object for a cgroup. The
@@ -574,7 +573,7 @@ identified by the passed cgroup object having a NULL parent (since
it's the root of the hierarchy) and may be an appropriate place for
it's the root of the hierarchy) and may be an appropriate place for
initialization code.
initialization code.


void destroy(struct cgroup_subsys *ss, struct cgroup *cgrp)
void destroy(struct cgroup *cgrp)
(cgroup_mutex held by caller)
(cgroup_mutex held by caller)


The cgroup system is about to destroy the passed cgroup; the subsystem
The cgroup system is about to destroy the passed cgroup; the subsystem
@@ -585,7 +584,7 @@ cgroup->parent is still valid. (Note - can also be called for a
newly-created cgroup if an error occurs after this subsystem's
newly-created cgroup if an error occurs after this subsystem's
create() method has been called for the new cgroup).
create() method has been called for the new cgroup).


int pre_destroy(struct cgroup_subsys *ss, struct cgroup *cgrp);
int pre_destroy(struct cgroup *cgrp);


Called before checking the reference count on each subsystem. This may
Called before checking the reference count on each subsystem. This may
be useful for subsystems which have some extra references even if
be useful for subsystems which have some extra references even if
@@ -593,8 +592,7 @@ there are not tasks in the cgroup. If pre_destroy() returns error code,
rmdir() will fail with it. From this behavior, pre_destroy() can be
rmdir() will fail with it. From this behavior, pre_destroy() can be
called multiple times against a cgroup.
called multiple times against a cgroup.


int can_attach(struct cgroup_subsys *ss, struct cgroup *cgrp,
int can_attach(struct cgroup *cgrp, struct cgroup_taskset *tset)
	       struct cgroup_taskset *tset)
(cgroup_mutex held by caller)
(cgroup_mutex held by caller)


Called prior to moving one or more tasks into a cgroup; if the
Called prior to moving one or more tasks into a cgroup; if the
@@ -615,8 +613,7 @@ fork. If this method returns 0 (success) then this should remain valid
while the caller holds cgroup_mutex and it is ensured that either
while the caller holds cgroup_mutex and it is ensured that either
attach() or cancel_attach() will be called in future.
attach() or cancel_attach() will be called in future.


void cancel_attach(struct cgroup_subsys *ss, struct cgroup *cgrp,
void cancel_attach(struct cgroup *cgrp, struct cgroup_taskset *tset)
		   struct cgroup_taskset *tset)
(cgroup_mutex held by caller)
(cgroup_mutex held by caller)


Called when a task attach operation has failed after can_attach() has succeeded.
Called when a task attach operation has failed after can_attach() has succeeded.
@@ -625,23 +622,22 @@ function, so that the subsystem can implement a rollback. If not, not necessary.
This will be called only about subsystems whose can_attach() operation have
This will be called only about subsystems whose can_attach() operation have
succeeded. The parameters are identical to can_attach().
succeeded. The parameters are identical to can_attach().


void attach(struct cgroup_subsys *ss, struct cgroup *cgrp,
void attach(struct cgroup *cgrp, struct cgroup_taskset *tset)
	    struct cgroup_taskset *tset)
(cgroup_mutex held by caller)
(cgroup_mutex held by caller)


Called after the task has been attached to the cgroup, to allow any
Called after the task has been attached to the cgroup, to allow any
post-attachment activity that requires memory allocations or blocking.
post-attachment activity that requires memory allocations or blocking.
The parameters are identical to can_attach().
The parameters are identical to can_attach().


void fork(struct cgroup_subsy *ss, struct task_struct *task)
void fork(struct task_struct *task)


Called when a task is forked into a cgroup.
Called when a task is forked into a cgroup.


void exit(struct cgroup_subsys *ss, struct task_struct *task)
void exit(struct task_struct *task)


Called during task exit.
Called during task exit.


int populate(struct cgroup_subsys *ss, struct cgroup *cgrp)
int populate(struct cgroup *cgrp)
(cgroup_mutex held by caller)
(cgroup_mutex held by caller)


Called after creation of a cgroup to allow a subsystem to populate
Called after creation of a cgroup to allow a subsystem to populate
@@ -651,7 +647,7 @@ include/linux/cgroup.h for details). Note that although this
method can return an error code, the error code is currently not
method can return an error code, the error code is currently not
always handled well.
always handled well.


void post_clone(struct cgroup_subsys *ss, struct cgroup *cgrp)
void post_clone(struct cgroup *cgrp)
(cgroup_mutex held by caller)
(cgroup_mutex held by caller)


Called during cgroup_create() to do any parameter
Called during cgroup_create() to do any parameter
@@ -659,7 +655,7 @@ initialization which might be required before a task could attach. For
example in cpusets, no task may attach before 'cpus' and 'mems' are set
example in cpusets, no task may attach before 'cpus' and 'mems' are set
up.
up.


void bind(struct cgroup_subsys *ss, struct cgroup *root)
void bind(struct cgroup *root)
(cgroup_mutex and ss->hierarchy_mutex held by caller)
(cgroup_mutex and ss->hierarchy_mutex held by caller)


Called when a cgroup subsystem is rebound to a different hierarchy
Called when a cgroup subsystem is rebound to a different hierarchy
+8 −14
Original line number Original line Diff line number Diff line
@@ -28,13 +28,10 @@ static LIST_HEAD(blkio_list);
struct blkio_cgroup blkio_root_cgroup = { .weight = 2*BLKIO_WEIGHT_DEFAULT };
struct blkio_cgroup blkio_root_cgroup = { .weight = 2*BLKIO_WEIGHT_DEFAULT };
EXPORT_SYMBOL_GPL(blkio_root_cgroup);
EXPORT_SYMBOL_GPL(blkio_root_cgroup);


static struct cgroup_subsys_state *blkiocg_create(struct cgroup_subsys *,
static struct cgroup_subsys_state *blkiocg_create(struct cgroup *);
						  struct cgroup *);
static int blkiocg_can_attach(struct cgroup *, struct cgroup_taskset *);
static int blkiocg_can_attach(struct cgroup_subsys *, struct cgroup *,
static void blkiocg_attach(struct cgroup *, struct cgroup_taskset *);
			      struct cgroup_taskset *);
static void blkiocg_destroy(struct cgroup *);
static void blkiocg_attach(struct cgroup_subsys *, struct cgroup *,
			   struct cgroup_taskset *);
static void blkiocg_destroy(struct cgroup_subsys *, struct cgroup *);
static int blkiocg_populate(struct cgroup_subsys *, struct cgroup *);
static int blkiocg_populate(struct cgroup_subsys *, struct cgroup *);


/* for encoding cft->private value on file */
/* for encoding cft->private value on file */
@@ -1548,7 +1545,7 @@ static int blkiocg_populate(struct cgroup_subsys *subsys, struct cgroup *cgroup)
				ARRAY_SIZE(blkio_files));
				ARRAY_SIZE(blkio_files));
}
}


static void blkiocg_destroy(struct cgroup_subsys *subsys, struct cgroup *cgroup)
static void blkiocg_destroy(struct cgroup *cgroup)
{
{
	struct blkio_cgroup *blkcg = cgroup_to_blkio_cgroup(cgroup);
	struct blkio_cgroup *blkcg = cgroup_to_blkio_cgroup(cgroup);
	unsigned long flags;
	unsigned long flags;
@@ -1598,8 +1595,7 @@ static void blkiocg_destroy(struct cgroup_subsys *subsys, struct cgroup *cgroup)
		kfree(blkcg);
		kfree(blkcg);
}
}


static struct cgroup_subsys_state *
static struct cgroup_subsys_state *blkiocg_create(struct cgroup *cgroup)
blkiocg_create(struct cgroup_subsys *subsys, struct cgroup *cgroup)
{
{
	struct blkio_cgroup *blkcg;
	struct blkio_cgroup *blkcg;
	struct cgroup *parent = cgroup->parent;
	struct cgroup *parent = cgroup->parent;
@@ -1628,8 +1624,7 @@ done:
 * of the main cic data structures.  For now we allow a task to change
 * of the main cic data structures.  For now we allow a task to change
 * its cgroup only if it's the only owner of its ioc.
 * its cgroup only if it's the only owner of its ioc.
 */
 */
static int blkiocg_can_attach(struct cgroup_subsys *ss, struct cgroup *cgrp,
static int blkiocg_can_attach(struct cgroup *cgrp, struct cgroup_taskset *tset)
			      struct cgroup_taskset *tset)
{
{
	struct task_struct *task;
	struct task_struct *task;
	struct io_context *ioc;
	struct io_context *ioc;
@@ -1648,8 +1643,7 @@ static int blkiocg_can_attach(struct cgroup_subsys *ss, struct cgroup *cgrp,
	return ret;
	return ret;
}
}


static void blkiocg_attach(struct cgroup_subsys *ss, struct cgroup *cgrp,
static void blkiocg_attach(struct cgroup *cgrp, struct cgroup_taskset *tset)
			   struct cgroup_taskset *tset)
{
{
	struct task_struct *task;
	struct task_struct *task;
	struct io_context *ioc;
	struct io_context *ioc;
+12 −17
Original line number Original line Diff line number Diff line
@@ -452,23 +452,18 @@ int cgroup_taskset_size(struct cgroup_taskset *tset);
 */
 */


struct cgroup_subsys {
struct cgroup_subsys {
	struct cgroup_subsys_state *(*create)(struct cgroup_subsys *ss,
	struct cgroup_subsys_state *(*create)(struct cgroup *cgrp);
						  struct cgroup *cgrp);
	int (*pre_destroy)(struct cgroup *cgrp);
	int (*pre_destroy)(struct cgroup_subsys *ss, struct cgroup *cgrp);
	void (*destroy)(struct cgroup *cgrp);
	void (*destroy)(struct cgroup_subsys *ss, struct cgroup *cgrp);
	int (*can_attach)(struct cgroup *cgrp, struct cgroup_taskset *tset);
	int (*can_attach)(struct cgroup_subsys *ss, struct cgroup *cgrp,
	void (*cancel_attach)(struct cgroup *cgrp, struct cgroup_taskset *tset);
			  struct cgroup_taskset *tset);
	void (*attach)(struct cgroup *cgrp, struct cgroup_taskset *tset);
	void (*cancel_attach)(struct cgroup_subsys *ss, struct cgroup *cgrp,
	void (*fork)(struct task_struct *task);
			      struct cgroup_taskset *tset);
	void (*exit)(struct cgroup *cgrp, struct cgroup *old_cgrp,
	void (*attach)(struct cgroup_subsys *ss, struct cgroup *cgrp,
		     struct task_struct *task);
		       struct cgroup_taskset *tset);
	int (*populate)(struct cgroup_subsys *ss, struct cgroup *cgrp);
	void (*fork)(struct cgroup_subsys *ss, struct task_struct *task);
	void (*post_clone)(struct cgroup *cgrp);
	void (*exit)(struct cgroup_subsys *ss, struct cgroup *cgrp,
	void (*bind)(struct cgroup *root);
			struct cgroup *old_cgrp, struct task_struct *task);
	int (*populate)(struct cgroup_subsys *ss,
			struct cgroup *cgrp);
	void (*post_clone)(struct cgroup_subsys *ss, struct cgroup *cgrp);
	void (*bind)(struct cgroup_subsys *ss, struct cgroup *root);


	int subsys_id;
	int subsys_id;
	int active;
	int active;
+3 −4
Original line number Original line Diff line number Diff line
@@ -68,7 +68,7 @@ struct cgroup;
struct cgroup_subsys;
struct cgroup_subsys;
#ifdef CONFIG_NET
#ifdef CONFIG_NET
int mem_cgroup_sockets_init(struct cgroup *cgrp, struct cgroup_subsys *ss);
int mem_cgroup_sockets_init(struct cgroup *cgrp, struct cgroup_subsys *ss);
void mem_cgroup_sockets_destroy(struct cgroup *cgrp, struct cgroup_subsys *ss);
void mem_cgroup_sockets_destroy(struct cgroup *cgrp);
#else
#else
static inline
static inline
int mem_cgroup_sockets_init(struct cgroup *cgrp, struct cgroup_subsys *ss)
int mem_cgroup_sockets_init(struct cgroup *cgrp, struct cgroup_subsys *ss)
@@ -76,7 +76,7 @@ int mem_cgroup_sockets_init(struct cgroup *cgrp, struct cgroup_subsys *ss)
	return 0;
	return 0;
}
}
static inline
static inline
void mem_cgroup_sockets_destroy(struct cgroup *cgrp, struct cgroup_subsys *ss)
void mem_cgroup_sockets_destroy(struct cgroup *cgrp)
{
{
}
}
#endif
#endif
@@ -869,8 +869,7 @@ struct proto {
	 */
	 */
	int			(*init_cgroup)(struct cgroup *cgrp,
	int			(*init_cgroup)(struct cgroup *cgrp,
					       struct cgroup_subsys *ss);
					       struct cgroup_subsys *ss);
	void			(*destroy_cgroup)(struct cgroup *cgrp,
	void			(*destroy_cgroup)(struct cgroup *cgrp);
						  struct cgroup_subsys *ss);
	struct cg_proto		*(*proto_cgroup)(struct mem_cgroup *memcg);
	struct cg_proto		*(*proto_cgroup)(struct mem_cgroup *memcg);
#endif
#endif
};
};
+1 −1
Original line number Original line Diff line number Diff line
@@ -13,7 +13,7 @@ struct tcp_memcontrol {


struct cg_proto *tcp_proto_cgroup(struct mem_cgroup *memcg);
struct cg_proto *tcp_proto_cgroup(struct mem_cgroup *memcg);
int tcp_init_cgroup(struct cgroup *cgrp, struct cgroup_subsys *ss);
int tcp_init_cgroup(struct cgroup *cgrp, struct cgroup_subsys *ss);
void tcp_destroy_cgroup(struct cgroup *cgrp, struct cgroup_subsys *ss);
void tcp_destroy_cgroup(struct cgroup *cgrp);
unsigned long long tcp_max_memory(const struct mem_cgroup *memcg);
unsigned long long tcp_max_memory(const struct mem_cgroup *memcg);
void tcp_prot_mem(struct mem_cgroup *memcg, long val, int idx);
void tcp_prot_mem(struct mem_cgroup *memcg, long val, int idx);
#endif /* _TCP_MEMCG_H */
#endif /* _TCP_MEMCG_H */
Loading