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

Commit 881232b7 authored by Peter Zijlstra's avatar Peter Zijlstra Committed by Ingo Molnar
Browse files

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: default avatarPeter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Mike Galbraith <efault@gmx.de>
LKML-Reference: <20091216170518.039524041@chello.nl>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent 5da9a0fb
Loading
Loading
Loading
Loading
+23 −0
Original line number Original line Diff line number Diff line
@@ -149,6 +149,29 @@ struct task_struct *kthread_create(int (*threadfn)(void *data),
}
}
EXPORT_SYMBOL(kthread_create);
EXPORT_SYMBOL(kthread_create);


/**
 * kthread_bind - bind a just-created kthread to a cpu.
 * @p: thread created by kthread_create().
 * @cpu: cpu (might not be online, must be possible) for @k to run on.
 *
 * Description: This function is equivalent to set_cpus_allowed(),
 * except that @cpu doesn't need to be online, and the thread must be
 * stopped (i.e., just returned from kthread_create()).
 */
void kthread_bind(struct task_struct *p, unsigned int cpu)
{
	/* Must have done schedule() in kthread() before we set_task_cpu */
	if (!wait_task_inactive(p, TASK_UNINTERRUPTIBLE)) {
		WARN_ON(1);
		return;
	}

	p->cpus_allowed = cpumask_of_cpu(cpu);
	p->rt.nr_cpus_allowed = 1;
	p->flags |= PF_THREAD_BOUND;
}
EXPORT_SYMBOL(kthread_bind);

/**
/**
 * kthread_stop - stop a thread created by kthread_create().
 * kthread_stop - stop a thread created by kthread_create().
 * @k: thread created by kthread_create().
 * @k: thread created by kthread_create().
+0 −26
Original line number Original line Diff line number Diff line
@@ -2004,32 +2004,6 @@ static inline void check_class_changed(struct rq *rq, struct task_struct *p,
		p->sched_class->prio_changed(rq, p, oldprio, running);
		p->sched_class->prio_changed(rq, p, oldprio, running);
}
}


/**
 * kthread_bind - bind a just-created kthread to a cpu.
 * @p: thread created by kthread_create().
 * @cpu: cpu (might not be online, must be possible) for @k to run on.
 *
 * Description: This function is equivalent to set_cpus_allowed(),
 * except that @cpu doesn't need to be online, and the thread must be
 * stopped (i.e., just returned from kthread_create()).
 *
 * Function lives here instead of kthread.c because it messes with
 * scheduler internals which require locking.
 */
void kthread_bind(struct task_struct *p, unsigned int cpu)
{
	/* Must have done schedule() in kthread() before we set_task_cpu */
	if (!wait_task_inactive(p, TASK_UNINTERRUPTIBLE)) {
		WARN_ON(1);
		return;
	}

	p->cpus_allowed = cpumask_of_cpu(cpu);
	p->rt.nr_cpus_allowed = 1;
	p->flags |= PF_THREAD_BOUND;
}
EXPORT_SYMBOL(kthread_bind);

#ifdef CONFIG_SMP
#ifdef CONFIG_SMP
/*
/*
 * Is this task likely cache-hot:
 * Is this task likely cache-hot: