summaryrefslogtreecommitdiffstats
path: root/kernel/cpu.c
diff options
context:
space:
mode:
authorTejun Heo2010-05-06 18:49:20 +0200
committerTejun Heo2010-05-06 18:49:20 +0200
commit1142d810298e694754498dbb4983fcb6cb7fd884 (patch)
tree8c5d23b76f129e23d9d967182aa434795e44af5c /kernel/cpu.c
parentsched: Fix select_idle_sibling() logic in select_task_rq_fair() (diff)
downloadkernel-qcow2-linux-1142d810298e694754498dbb4983fcb6cb7fd884.tar.gz
kernel-qcow2-linux-1142d810298e694754498dbb4983fcb6cb7fd884.tar.xz
kernel-qcow2-linux-1142d810298e694754498dbb4983fcb6cb7fd884.zip
cpu_stop: implement stop_cpu[s]()
Implement a simplistic per-cpu maximum priority cpu monopolization mechanism. A non-sleeping callback can be scheduled to run on one or multiple cpus with maximum priority monopolozing those cpus. This is primarily to replace and unify RT workqueue usage in stop_machine and scheduler migration_thread which currently is serving multiple purposes. Four functions are provided - stop_one_cpu(), stop_one_cpu_nowait(), stop_cpus() and try_stop_cpus(). This is to allow clean sharing of resources among stop_cpu and all the migration thread users. One stopper thread per cpu is created which is currently named "stopper/CPU". This will eventually replace the migration thread and take on its name. * This facility was originally named cpuhog and lived in separate files but Peter Zijlstra nacked the name and thus got renamed to cpu_stop and moved into stop_machine.c. * Better reporting of preemption leak as per Peter's suggestion. Signed-off-by: Tejun Heo <tj@kernel.org> Acked-by: Peter Zijlstra <peterz@infradead.org> Cc: Oleg Nesterov <oleg@redhat.com> Cc: Dimitri Sivanich <sivanich@sgi.com>
Diffstat (limited to 'kernel/cpu.c')
0 files changed, 0 insertions, 0 deletions