Commit 881232b70b195768a71cd74ff4b4e8ab9502997b

Authored by Peter Zijlstra
Committed by Ingo Molnar
1 parent 5da9a0fb67

sched: Move kthread_bind() back to kthread.c

Since kthread_bind() lost its dependencies on sched.c, move it
back where it came from.

Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Mike Galbraith <efault@gmx.de>
LKML-Reference: <20091216170518.039524041@chello.nl>
Signed-off-by: Ingo Molnar <mingo@elte.hu>

Showing 2 changed files with 23 additions and 26 deletions Side-by-side Diff

... ... @@ -150,6 +150,29 @@
150 150 EXPORT_SYMBOL(kthread_create);
151 151  
152 152 /**
  153 + * kthread_bind - bind a just-created kthread to a cpu.
  154 + * @p: thread created by kthread_create().
  155 + * @cpu: cpu (might not be online, must be possible) for @k to run on.
  156 + *
  157 + * Description: This function is equivalent to set_cpus_allowed(),
  158 + * except that @cpu doesn't need to be online, and the thread must be
  159 + * stopped (i.e., just returned from kthread_create()).
  160 + */
  161 +void kthread_bind(struct task_struct *p, unsigned int cpu)
  162 +{
  163 + /* Must have done schedule() in kthread() before we set_task_cpu */
  164 + if (!wait_task_inactive(p, TASK_UNINTERRUPTIBLE)) {
  165 + WARN_ON(1);
  166 + return;
  167 + }
  168 +
  169 + p->cpus_allowed = cpumask_of_cpu(cpu);
  170 + p->rt.nr_cpus_allowed = 1;
  171 + p->flags |= PF_THREAD_BOUND;
  172 +}
  173 +EXPORT_SYMBOL(kthread_bind);
  174 +
  175 +/**
153 176 * kthread_stop - stop a thread created by kthread_create().
154 177 * @k: thread created by kthread_create().
155 178 *
... ... @@ -2004,32 +2004,6 @@
2004 2004 p->sched_class->prio_changed(rq, p, oldprio, running);
2005 2005 }
2006 2006  
2007   -/**
2008   - * kthread_bind - bind a just-created kthread to a cpu.
2009   - * @p: thread created by kthread_create().
2010   - * @cpu: cpu (might not be online, must be possible) for @k to run on.
2011   - *
2012   - * Description: This function is equivalent to set_cpus_allowed(),
2013   - * except that @cpu doesn't need to be online, and the thread must be
2014   - * stopped (i.e., just returned from kthread_create()).
2015   - *
2016   - * Function lives here instead of kthread.c because it messes with
2017   - * scheduler internals which require locking.
2018   - */
2019   -void kthread_bind(struct task_struct *p, unsigned int cpu)
2020   -{
2021   - /* Must have done schedule() in kthread() before we set_task_cpu */
2022   - if (!wait_task_inactive(p, TASK_UNINTERRUPTIBLE)) {
2023   - WARN_ON(1);
2024   - return;
2025   - }
2026   -
2027   - p->cpus_allowed = cpumask_of_cpu(cpu);
2028   - p->rt.nr_cpus_allowed = 1;
2029   - p->flags |= PF_THREAD_BOUND;
2030   -}
2031   -EXPORT_SYMBOL(kthread_bind);
2032   -
2033 2007 #ifdef CONFIG_SMP
2034 2008 /*
2035 2009 * Is this task likely cache-hot: