mirror of
https://github.com/followmsi/android_kernel_google_msm.git
synced 2024-09-21 12:10:52 +00:00
sched, autogroup: Stop claiming ownership of the root task group
Disown it, and only display autogroup association if one exists. Signed-off-by: Mike Galbraith <efault@gmx.de> Reviewed-by: Yong Zhang <yong.zhang0@gmail.com> Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> LKML-Reference: <1298383320.8036.5.camel@marge.simson.net> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
parent
800d4d30c8
commit
511f67a599
|
@ -12,7 +12,6 @@ static atomic_t autogroup_seq_nr;
|
||||||
static void __init autogroup_init(struct task_struct *init_task)
|
static void __init autogroup_init(struct task_struct *init_task)
|
||||||
{
|
{
|
||||||
autogroup_default.tg = &root_task_group;
|
autogroup_default.tg = &root_task_group;
|
||||||
root_task_group.autogroup = &autogroup_default;
|
|
||||||
kref_init(&autogroup_default.kref);
|
kref_init(&autogroup_default.kref);
|
||||||
init_rwsem(&autogroup_default.lock);
|
init_rwsem(&autogroup_default.lock);
|
||||||
init_task->signal->autogroup = &autogroup_default;
|
init_task->signal->autogroup = &autogroup_default;
|
||||||
|
@ -130,7 +129,7 @@ task_wants_autogroup(struct task_struct *p, struct task_group *tg)
|
||||||
|
|
||||||
static inline bool task_group_is_autogroup(struct task_group *tg)
|
static inline bool task_group_is_autogroup(struct task_group *tg)
|
||||||
{
|
{
|
||||||
return tg != &root_task_group && tg->autogroup;
|
return !!tg->autogroup;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline struct task_group *
|
static inline struct task_group *
|
||||||
|
@ -251,10 +250,14 @@ void proc_sched_autogroup_show_task(struct task_struct *p, struct seq_file *m)
|
||||||
{
|
{
|
||||||
struct autogroup *ag = autogroup_task_get(p);
|
struct autogroup *ag = autogroup_task_get(p);
|
||||||
|
|
||||||
|
if (!task_group_is_autogroup(ag->tg))
|
||||||
|
goto out;
|
||||||
|
|
||||||
down_read(&ag->lock);
|
down_read(&ag->lock);
|
||||||
seq_printf(m, "/autogroup-%ld nice %d\n", ag->id, ag->nice);
|
seq_printf(m, "/autogroup-%ld nice %d\n", ag->id, ag->nice);
|
||||||
up_read(&ag->lock);
|
up_read(&ag->lock);
|
||||||
|
|
||||||
|
out:
|
||||||
autogroup_kref_put(ag);
|
autogroup_kref_put(ag);
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_PROC_FS */
|
#endif /* CONFIG_PROC_FS */
|
||||||
|
@ -262,9 +265,7 @@ void proc_sched_autogroup_show_task(struct task_struct *p, struct seq_file *m)
|
||||||
#ifdef CONFIG_SCHED_DEBUG
|
#ifdef CONFIG_SCHED_DEBUG
|
||||||
static inline int autogroup_path(struct task_group *tg, char *buf, int buflen)
|
static inline int autogroup_path(struct task_group *tg, char *buf, int buflen)
|
||||||
{
|
{
|
||||||
int enabled = ACCESS_ONCE(sysctl_sched_autogroup_enabled);
|
if (!task_group_is_autogroup(tg))
|
||||||
|
|
||||||
if (!enabled || !tg->autogroup)
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
return snprintf(buf, buflen, "%s-%ld", "/autogroup", tg->autogroup->id);
|
return snprintf(buf, buflen, "%s-%ld", "/autogroup", tg->autogroup->id);
|
||||||
|
|
Loading…
Reference in a new issue