diff -urpN -X /home/fletch/.diff.exclude 420-sched_interactive/arch/i386/kernel/entry.S 430-kgdb_cleanup/arch/i386/kernel/entry.S --- 420-sched_interactive/arch/i386/kernel/entry.S Wed Aug 13 20:29:29 2003 +++ 430-kgdb_cleanup/arch/i386/kernel/entry.S Wed Aug 13 20:29:41 2003 @@ -49,6 +49,10 @@ #include #include "irq_vectors.h" +#ifndef CONFIG_KGDB_THREAD +#define user_schedule schedule +#endif + EBX = 0x00 ECX = 0x04 EDX = 0x08 diff -urpN -X /home/fletch/.diff.exclude 420-sched_interactive/arch/sparc64/kernel/rtrap.S 430-kgdb_cleanup/arch/sparc64/kernel/rtrap.S --- 420-sched_interactive/arch/sparc64/kernel/rtrap.S Wed Aug 13 20:29:29 2003 +++ 430-kgdb_cleanup/arch/sparc64/kernel/rtrap.S Wed Aug 13 20:29:41 2003 @@ -15,6 +15,10 @@ #include #include +#ifndef CONFIG_KGDB_THREAD +#define user_schedule schedule +#endif + #define RTRAP_PSTATE (PSTATE_RMO|PSTATE_PEF|PSTATE_PRIV|PSTATE_IE) #define RTRAP_PSTATE_IRQOFF (PSTATE_RMO|PSTATE_PEF|PSTATE_PRIV) #define RTRAP_PSTATE_AG_IRQOFF (PSTATE_RMO|PSTATE_PEF|PSTATE_PRIV|PSTATE_AG) diff -urpN -X /home/fletch/.diff.exclude 420-sched_interactive/arch/x86_64/kernel/entry.S 430-kgdb_cleanup/arch/x86_64/kernel/entry.S --- 420-sched_interactive/arch/x86_64/kernel/entry.S Wed Aug 13 20:29:29 2003 +++ 430-kgdb_cleanup/arch/x86_64/kernel/entry.S Wed Aug 13 20:29:41 2003 @@ -46,6 +46,10 @@ #define PDAREF(field) %gs:field +#ifndef CONFIG_KGDB_THREAD +#define user_schedule schedule +#endif + #ifdef CONFIG_PREEMPT #define preempt_stop cli #else diff -urpN -X /home/fletch/.diff.exclude 420-sched_interactive/include/linux/sched.h 430-kgdb_cleanup/include/linux/sched.h --- 420-sched_interactive/include/linux/sched.h Wed Aug 13 20:29:29 2003 +++ 430-kgdb_cleanup/include/linux/sched.h Wed Aug 13 20:29:41 2003 @@ -172,9 +172,13 @@ extern unsigned long cache_decay_ticks; #define MAX_SCHEDULE_TIMEOUT LONG_MAX extern signed long FASTCALL(schedule_timeout(signed long timeout)); -asmlinkage void do_schedule(void); -asmlinkage void kern_schedule(void); -asmlinkage void kern_do_schedule(struct pt_regs); +#ifdef CONFIG_KGDB_THREAD + asmlinkage void do_schedule(void); + asmlinkage void kern_schedule(void); + asmlinkage void kern_do_schedule(struct pt_regs); +#else + asmlinkage void schedule(void); +#endif struct namespace; @@ -721,7 +725,7 @@ extern void unhash_process(struct task_s #ifdef CONFIG_KGDB_THREAD #define schedule() kern_schedule() #else -#define schedule() do_schedule() +#define user_schedule() schedule() #endif /* Protects ->fs, ->files, ->mm, and synchronises with wait4(). diff -urpN -X /home/fletch/.diff.exclude 420-sched_interactive/kernel/ksyms.c 430-kgdb_cleanup/kernel/ksyms.c --- 420-sched_interactive/kernel/ksyms.c Wed Aug 13 20:29:36 2003 +++ 430-kgdb_cleanup/kernel/ksyms.c Wed Aug 13 20:29:41 2003 @@ -462,9 +462,11 @@ EXPORT_SYMBOL(sleep_on); EXPORT_SYMBOL(sleep_on_timeout); EXPORT_SYMBOL(interruptible_sleep_on); EXPORT_SYMBOL(interruptible_sleep_on_timeout); -EXPORT_SYMBOL(do_schedule); #ifdef CONFIG_KGDB_THREAD EXPORT_SYMBOL(kern_schedule); +EXPORT_SYMBOL(do_schedule); +#else +EXPORT_SYMBOL(schedule); #endif #ifdef CONFIG_PREEMPT EXPORT_SYMBOL(preempt_schedule); diff -urpN -X /home/fletch/.diff.exclude 420-sched_interactive/kernel/sched.c 430-kgdb_cleanup/kernel/sched.c --- 420-sched_interactive/kernel/sched.c Wed Aug 13 20:29:39 2003 +++ 430-kgdb_cleanup/kernel/sched.c Wed Aug 13 20:29:41 2003 @@ -1295,7 +1295,11 @@ void scheduling_functions_start_here(voi /* * schedule() is the main scheduler function. */ +#ifdef CONFIG_KGDB_THREAD asmlinkage void do_schedule(void) +#else +asmlinkage void schedule(void) +#endif { task_t *prev, *next; runqueue_t *rq; @@ -1523,15 +1527,13 @@ void complete_all(struct completion *x) spin_unlock_irqrestore(&x->wait.lock, flags); } +#ifdef CONFIG_KGDB_THREAD asmlinkage void user_schedule(void) { -#ifdef CONFIG_KGDB_THREAD current->thread.kgdbregs = NULL; -#endif do_schedule(); } -#ifdef CONFIG_KGDB_THREAD asmlinkage void kern_do_schedule(struct pt_regs regs) { current->thread.kgdbregs = ®s;