On Sun, 2007-06-10 at 10:34 +0000, Oleksandr Natalenko wrote:
> > http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.21.4.tar.bz2
> > http://people.redhat.com/mingo/realtime-preempt/patch-2.6.21.4-rt11
> kernel/built-in.o: In function `__schedule':
> (.sched.text+0xe0): undefined reference to `pick_next_task'
> make[1]: *** [.tmp_vmlinux1] Ошибка 1
> make[1]: Leaving directory `/usr/src/linux-2.6.21.4-rt11-cfs17-arsenic'
> make: *** [debian/stamp-build-kernel] Ошибка 2
>
> It seems that patch is broken.
Yup, for CONFIG_SMP=n and for CONFIG_PREEMPT_RT=n.
Fix below
tglx
Index: linux-2.6.21/kernel/sched.c
===================================================================
--- linux-2.6.21.orig/kernel/sched.c 2007-06-10 16:00:58.000000000 +0200
+++ linux-2.6.21/kernel/sched.c 2007-06-10 16:46:23.000000000 +0200
@@ -827,6 +827,25 @@ unsigned long weighted_cpuload(const int
return cpu_rq(cpu)->raw_weighted_load;
}
+static inline struct task_struct *
+pick_next_task(struct rq *rq, struct task_struct *prev)
+{
+ struct sched_class *class = sched_class_highest;
+ u64 now = __rq_clock(rq);
+ struct task_struct *p;
+
+ prev->sched_class->put_prev_task(rq, prev, now);
+
+ do {
+ p = class->pick_next_task(rq, now);
+ if (p)
+ return p;
+ class = class->next;
+ } while (class);
+
+ return NULL;
+}
+
#ifdef CONFIG_SMP
static inline void __set_task_cpu(struct task_struct *p, unsigned int cpu)
@@ -1093,25 +1112,6 @@ next_in_queue:
static int double_lock_balance(struct rq *this_rq, struct rq *busiest);
-static inline struct task_struct *
-pick_next_task(struct rq *rq, struct task_struct *prev)
-{
- struct sched_class *class = sched_class_highest;
- u64 now = __rq_clock(rq);
- struct task_struct *p;
-
- prev->sched_class->put_prev_task(rq, prev, now);
-
- do {
- p = class->pick_next_task(rq, now);
- if (p)
- return p;
- class = class->next;
- } while (class);
-
- return NULL;
-}
-
/*
* Pull RT tasks from other CPUs in the RT-overload
* case. Interrupts are disabled, local rq is locked.
Index: linux-2.6.21/kernel/time/clockevents.c
===================================================================
--- linux-2.6.21.orig/kernel/time/clockevents.c 2007-06-10 16:00:57.000000000
+0200
+++ linux-2.6.21/kernel/time/clockevents.c 2007-06-10 16:45:40.000000000
+0200
@@ -18,6 +18,7 @@
#include <linux/notifier.h>
#include <linux/smp.h>
#include <linux/sysdev.h>
+#include <linux/sched.h>
/* The registered clock event devices */
static LIST_HEAD(clockevent_devices);
-
To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html