Add a scheduler name and the beginnings of bootparam checking to change scheduler at boot time. Signed-off-by: Con Kolivas Index: linux-2.6.10-rc1-mm2-plugsched1/include/linux/scheduler.h =================================================================== --- linux-2.6.10-rc1-mm2-plugsched1.orig/include/linux/scheduler.h 2004-10-29 21:47:52.739595073 +1000 +++ linux-2.6.10-rc1-mm2-plugsched1/include/linux/scheduler.h 2004-10-29 21:48:05.209648954 +1000 @@ -1,5 +1,8 @@ +#define SCHED_NAME_MAX (16) + struct sched_drv { + char cpusched_name[SCHED_NAME_MAX]; int (*rt_task)(task_t *); void (*wait_for_completion)(struct completion *); void (*io_schedule)(void); Index: linux-2.6.10-rc1-mm2-plugsched1/kernel/sched.c =================================================================== --- linux-2.6.10-rc1-mm2-plugsched1.orig/kernel/sched.c 2004-10-29 21:47:52.743594449 +1000 +++ linux-2.6.10-rc1-mm2-plugsched1/kernel/sched.c 2004-10-29 21:48:05.211648642 +1000 @@ -4151,6 +4151,7 @@ void destroy_sched_domain_sysctl() #endif struct sched_drv ingo_sched_drv = { + .cpusched_name = "ingosched", .rt_task = ingo_rt_task, .wait_for_completion = ingo_wait_for_completion, .io_schedule = ingo_io_schedule, Index: linux-2.6.10-rc1-mm2-plugsched1/kernel/scheduler.c =================================================================== --- linux-2.6.10-rc1-mm2-plugsched1.orig/kernel/scheduler.c 2004-10-29 21:47:49.051170701 +1000 +++ linux-2.6.10-rc1-mm2-plugsched1/kernel/scheduler.c 2004-10-29 21:48:05.212648486 +1000 @@ -878,7 +878,17 @@ void fastcall complete_all(struct comple EXPORT_SYMBOL(complete_all); extern struct sched_drv ingo_sched_drv; -static const struct sched_drv *scheduler = &ingo_sched_drv; + +static struct sched_drv *scheduler = &ingo_sched_drv; + +static int __init scheduler_setup(char *str) +{ + if (!strcmp(str, "ingosched")) + scheduler = &ingo_sched_drv; + return 1; +} + +__setup ("cpusched=", scheduler_setup); void fastcall __sched wait_for_completion(struct completion *x) {