ANDROID: sched: support pick_migrate_task in common kernel
__pick_migrate_task() was present in 5.10 and removed in
5.15 in favor of the balance_push concept.
Restore this function so that the ability to pick a task to migrate
across all scheduling classes can be used by a vendor module.
Function Removed In commit 1cf12e08bc
sched/hotplug: Consolidate task migration on CPU unplug
Bug: 205164003
Change-Id: I56ecd96c32b49495132daefbfc106568ab84e528
Signed-off-by: Stephen Dickey <quic_dickey@quicinc.com>
This commit is contained in:
committed by
Todd Kjos
parent
48efccfcf7
commit
72a288144d
@@ -298,6 +298,7 @@ extern int __must_check io_schedule_prepare(void);
|
|||||||
extern void io_schedule_finish(int token);
|
extern void io_schedule_finish(int token);
|
||||||
extern long io_schedule_timeout(long timeout);
|
extern long io_schedule_timeout(long timeout);
|
||||||
extern void io_schedule(void);
|
extern void io_schedule(void);
|
||||||
|
extern struct task_struct *pick_migrate_task(struct rq *rq);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct prev_cputime - snapshot of system and user cputime
|
* struct prev_cputime - snapshot of system and user cputime
|
||||||
|
|||||||
@@ -8870,6 +8870,24 @@ void idle_task_exit(void)
|
|||||||
/* finish_cpu(), as ran on the BP, will clean up the active_mm state */
|
/* finish_cpu(), as ran on the BP, will clean up the active_mm state */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct task_struct *pick_migrate_task(struct rq *rq)
|
||||||
|
{
|
||||||
|
const struct sched_class *class;
|
||||||
|
struct task_struct *next;
|
||||||
|
|
||||||
|
for_each_class(class) {
|
||||||
|
next = class->pick_next_task(rq);
|
||||||
|
if (next) {
|
||||||
|
next->sched_class->put_prev_task(rq, next);
|
||||||
|
return next;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* The idle class should always have a runnable task */
|
||||||
|
BUG();
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(pick_migrate_task);
|
||||||
|
|
||||||
static int __balance_push_cpu_stop(void *arg)
|
static int __balance_push_cpu_stop(void *arg)
|
||||||
{
|
{
|
||||||
struct task_struct *p = arg;
|
struct task_struct *p = arg;
|
||||||
|
|||||||
Reference in New Issue
Block a user